#1 Sat 10 February 2018 14:15
- Jean-Marc68
- Participant occasionnel
- Lieu: Rimouski
- Date d'inscription: 24 Jan 2015
- Messages: 23
Postgis : st_overlap sur st_curvetoline
Bonjour,
Soit une table contenant des curvepolygon.
Vu que QGIS ne veut pas afficher les curvepolygon, j'ai créé une colonne geomsimply et un trigger qui converti les curvepolygon en polygon lors de l'insert ou de l'update via
Code:
BEGIN IF NEW.geom IS NOT NULL THEN NEW.geomsimply = st_curvetoline(new.geom); END IF; RETURN NEW; END
La colonne geomsimply se crée bien et QGIS affiche effectivement les polygones. Mon problème est que les courbes de polygones voisins, si elles n'ont pas la même longueur parce que la courbe d'un polygone s'arrête avant celle de son voisin par exemple, ne sont pas simplifiés de la même manière et s'intersectent plusieurs fois.
Au départ le problème ne me dérangeait pas trop parce qu'il était seulement visuel (QGIS ne me servant que pour l'affichage, les vérifications).
Là où ça se corse, c'est que grâce à ces vérifications, je me suis rendu compte que je dois trouver des polygones qui se chevauchent, or la fonction st_overlap me retourne une erreur de type de polygone. J'en ai déduis qu'elle "n'aime pas" les curvepolygon. Mais en faisant le même st_overlap sur la colonne geomsimply, je me rend compte que des polygones voisins sortent dans la requête a cause des chevauchements des arcs simplifiés par st_curvetoline (même en mettant le nombre de segments par quart de cercle à 50 ou à 100).
Existe-t-il un moyen pour que les "cassés" dans les courbes se fassent au mêmes endroits et ainsi éviter les chevauchement ?
Merci de vos z'avis z'avisés
Hors ligne
#2 Sat 10 February 2018 16:55
- Nicolas Ribot
- Membre
- Lieu: Toulouse
- Date d'inscription: 9 Sep 2005
- Messages: 1554
Re: Postgis : st_overlap sur st_curvetoline
Bonjour,
Oui: il faudrait extraire les linestrings des curvepolygons, en faire l'union puis st_polygonize pour reconstruire les polygones. Leurs contours devraient alors etre jointifs (cf: https://trac.osgeo.org/postgis/wiki/Use … eTopology)
Nicolas
Hors ligne
#3 Sun 11 February 2018 14:26
- Jean-Marc68
- Participant occasionnel
- Lieu: Rimouski
- Date d'inscription: 24 Jan 2015
- Messages: 23
Re: Postgis : st_overlap sur st_curvetoline
Merci de ta réponse Nicolas.
Je comprend ce que tu "veux faire". Mais j'ai régulièrement des mises à jour viennent par la même voie.
Admettons que dans une de ces mises à jours deux polygones soient remplacés par 3.
Si je monte un nouveau st_polygonize à partir des linestrings des 3 nouveaux polygones, le pourtour créé par un "nouveau" st_polygonize qui ne comprend que les "nouveaux" polygones ne risque-t-il pas de chevaucher les polygone voisins créés par le premier st_poygonize ?
Dernière modification par Jean-Marc68 (Mon 12 February 2018 14:22)
Hors ligne