Nous utilisons des cookies pour vous garantir la meilleure expérience sur notre site. Si vous continuez à utiliser ce dernier, nous considèrerons que vous acceptez l'utilisation des cookies. J'ai compris ! ou En savoir plus !.
banniere

Le portail francophone de la géomatique


Toujours pas inscrit ? Mot de passe oublié ?
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oublié ?

Annonce

Printemps des cartes 2024

#1 Sat 10 February 2018 14:15

Jean-Marc68
Participant occasionnel
Lieu: Rimouski
Date d'inscription: 24 Jan 2015
Messages: 18

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: 1535

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: 18

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

 

Pied de page des forums

Powered by FluxBB