Message posté par : Nicolas Ribot
----------------------------------------
Bonjour,
Il y a plusieurs façons d'intersecter des polygones d'une couche:
On peut par exemple faire comme vous faites, en intersectant les polygones
(st_intersects). Mais pour avoir un résultat complet, il faut ajouter d'autres
opérations spatiales comme st_union et st_difference, pour découper les polygones initiaux
regrouper les polygones qui intersectent un polygone donné.
On peut aussi décomposer les polygones en leurs rings (linestring) et lancer st_polygonize
ou st_buildArea, suivant le résultat souhaité, sur ces linestrings.
Ces fonctions reconstruisent toutes les surfaces délimitées par les lignes qui se
croisent.
En faisant cela, on perd les attributs des géométries initiales. Pour les récupérer, il
faut faire une association spatiale entre le résultat obtenu et les polygones initiaux,
par ex avec st_pointOnSurface, pour identifier de quels polygones initiaux sont issus les
polygones de résultat.
Ca marche plutot bien, mais ca peut etre très, très long sur des grosses tables (millions
de pg).
Il y a pas mal d'exemples de ces opérations sur le forum.
Nicolas
----------------------------------------
Le message est situé
https://georezo.net/forum/viewtopic.php?pid=335625#p335625
Pour y répondre : geobd(a)ml.georezo.net ou reply de votre messagerie
Pour vous désabonner connectez-vous sur le forum puis Profil / Abonnement
--
Association GeoRezo - le portail géomatique
https://georezo.net