#1 Tue 17 September 2019 17:07
- zack
- Participant occasionnel
- Date d'inscription: 16 Jul 2014
- Messages: 33
Regroupement de polygones par voisinage
Salut,
Je poste ça ici parce que je pense qu'en postgis ça sera plus simple, mais peut-être que la solution existe directement sur QGIS ou autre...
J'ai des polygones, qui sont des parcelles, auxquels je veut agréger de plus petits polygones voisins (qui sont en réalités des "trous" entre les parcelles). J'ai construit ces petits polygones avec la fonction ST_StraightSkeleton.
J'ai essayé de récupérer les identifiants des polygones qui bordent le premier polygone et de calculer la longueur du segment commun, avec la fonction suivante, mais ça ne m'a pas sélectionné l'ensemble des polygones adjacents.
Code:
SELECT a.id AS gid_a, b.gid AS gid_b, ST_Length(ST_CollectionExtract(ST_Intersection(a.geom, b.geom), 2)) FROM polygones1 a, polygones2 b WHERE a.id < b.gid AND ST_Touches(a.geom, b.geom) order by gid_a;
En essayant simplement avec une sélection par localisation dans QGIS, pareil, je n'obtient pas l'ensemble des polygones (cf capture). Par contre, avec ArcGIS Pro, et l'option "share a line segment with" je dois admettre que ça donne un résultat parfait, sans les polygones en pointe (croix rouges)... mais je ne peux pas l'utiliser dans mon modèle qui est en pyqgis avec quelques fonctions en postgis.
Est-ce que quelqu'un a une solution? Qu'est-ce qui explique ces différences d'appréciation entre logiciels, alors qu'à l'origine c'est un même polygone découpé, et que la fonction "touche" de QGIS devrait marcher...
Hors ligne