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 Fri 16 March 2012 09:49

Gr1ng
Participant occasionnel
Date d'inscription: 7 Nov 2007
Messages: 30

[PostGIS] Correction géométrique d'une ligne

Bonjour,

J'essaie de corriger des lignes de type multilinestring qui possèdent des "trous". Dans tous les cas, les segments qui doivent être créés (pour boucher les trous) relient les points les plus proches pour garder une cohérence du tracé. L'objet géométrique résultant doit être de type linestring.
-> voir le schéma en pièce jointe
Quelqu'un a-t-il déjà été amené à faire ce genre de traitement avec PostGIS ?  Je ne sais pas comment m'y prendre.
En vous remerciant de votre aide.

Dernière modification par Gr1ng (Fri 16 March 2012 09:49)


Fichier(s) joint(s) :
Pour accéder aux fichiers vous devez vous inscrire.

Hors ligne

 

#2 Fri 16 March 2012 10:19

Nicolas Ribot
Membre
Lieu: Toulouse
Date d'inscription: 9 Sep 2005
Messages: 1536

Re: [PostGIS] Correction géométrique d'une ligne

Gr1ng a écrit:

Bonjour,

J'essaie de corriger des lignes de type multilinestring qui possèdent des "trous". Dans tous les cas, les segments qui doivent être créés (pour boucher les trous) relient les points les plus proches pour garder une cohérence du tracé. L'objet géométrique résultant doit être de type linestring.
-> voir le schéma en pièce jointe
Quelqu'un a-t-il déjà été amené à faire ce genre de traitement avec PostGIS ?  Je ne sais pas comment m'y prendre.
En vous remerciant de votre aide.


Bonjour,

Oui, ca se fait. La difficulté supplémentaire peut venir si les elements de la MultiLine ne sont pas ordonnés: il faudra alors les ordonner avant de boucher les trous.

Le principe general:

Si ordonné, trop facile wink : exploser la multi en ses points, puis reconstuire une ligne avec ces points: les trous sont alors bouchés.

Code:

select st_makeline( (st_dumppoints(geom)).geom from matable;

Si pas ordonné, moins facile...

Nicolas

Dernière modification par Nicolas Ribot (Fri 16 March 2012 10:23)

Hors ligne

 

#3 Fri 16 March 2012 10:32

Nicolas Ribot
Membre
Lieu: Toulouse
Date d'inscription: 9 Sep 2005
Messages: 1536

Re: [PostGIS] Correction géométrique d'une ligne

Gr1ng a écrit:

Bonjour,

J'essaie de corriger des lignes de type multilinestring qui possèdent des "trous". Dans tous les cas, les segments qui doivent être créés (pour boucher les trous) relient les points les plus proches pour garder une cohérence du tracé. L'objet géométrique résultant doit être de type linestring.
-> voir le schéma en pièce jointe
Quelqu'un a-t-il déjà été amené à faire ce genre de traitement avec PostGIS ?  Je ne sais pas comment m'y prendre.
En vous remerciant de votre aide.


En vert, la Multi, en rouge, la ligne complétée avec st_dumppoints.

Se peut-il que les morceaux des multilinestrings ne soient pas dans l'ordre dans vos données ?

Nicolas

Dernière modification par Nicolas Ribot (Fri 16 March 2012 10:33)


Fichier(s) joint(s) :
Pour accéder aux fichiers vous devez vous inscrire.

Hors ligne

 

#4 Fri 16 March 2012 11:18

Gr1ng
Participant occasionnel
Date d'inscription: 7 Nov 2007
Messages: 30

Re: [PostGIS] Correction géométrique d'une ligne

edit : merci je viens de lire vos nouveaux messages...je regarde ça..

Dernière modification par Gr1ng (Fri 16 March 2012 11:23)

Hors ligne

 

#5 Mon 19 March 2012 10:02

Gr1ng
Participant occasionnel
Date d'inscription: 7 Nov 2007
Messages: 30

Re: [PostGIS] Correction géométrique d'une ligne

Nicolas Ribot a écrit:

Code:

select st_makeline( (st_dumppoints(geom)).geom) from matable;


Bonjour,

Ce code me retourne une erreur : SQL Error: ERROR:  set-valued function called in context that cannot accept a set
En revanche, j'arrive bien à sortir les points des lignes..

Code:

select ((st_dumppoints(the_geom)).geom) from matable

Hors ligne

 

#6 Mon 19 March 2012 10:57

Nicolas Ribot
Membre
Lieu: Toulouse
Date d'inscription: 9 Sep 2005
Messages: 1536

Re: [PostGIS] Correction géométrique d'une ligne

Gr1ng a écrit:
Nicolas Ribot a écrit:

Code:

select st_makeline( (st_dumppoints(geom)).geom) from matable;


Bonjour,

Ce code me retourne une erreur : SQL Error: ERROR:  set-valued function called in context that cannot accept a set
En revanche, j'arrive bien à sortir les points des lignes..

Code:

select ((st_dumppoints(the_geom)).geom) from matable


Oui pardon:

Code:

select st_makeline( geom) from (select ((st_dumppoints(geom)).geom) as geom from matable);

il faut un sous-select pour sortir les geometries.

Nicolas

Hors ligne

 

Pied de page des forums

Powered by FluxBB