Annonce
#1 Thu 16 January 2025 11:32
- felixdm
- Juste Inscrit !
- Date d'inscription: 14 Jan 2025
- Messages: 4
[postGIS] Segmenter une lineString
Bonjour,
Pour continuer dans ma démarche topologique, je souhaiterais maintenant segmenter une lineString en ajoutant un noeud en fonction de la position d'un point.
ST_Segmentize permet de segmenter une ligne, mais pour des segments qui mesure plus d'une certaine longueur. Hors j'ai besoin que le noeud se créé à un endroit bien défini par la position du point.
Je pense qu'il faudrait passer par :
ST_LineLocatePoint
et
ST_LineInterpolatePoint.
Si vous avez des idées je suis preneur.
Bonne journée à tous
Hors ligne
#2 Thu 16 January 2025 11:58
- tumasgiu
- Membre
- Lieu: Ajaccio
- Date d'inscription: 5 Jul 2010
- Messages: 1168
Re: [postGIS] Segmenter une lineString
Salut,
[EDIT je n'avais pas vu le cas de la derniere ligne qui aurait sans doute fait planté la requête]
très vite fait pour donner une idée
Code:
SELECT ST_LineSubstring( geom, loc, coalesce(lead(loc) over (order by loc), 1) --on utilise la window function lead pour prendre la valeur suivante de loc --et on la remplace par 1 quand il s'agit de la derniere ligne (lead renverra null) ) FROM ( SELECT lstring.geom, st_linelocatepoint(lstring.geom, point.geom) loc FROM lstring CROSS JOIN point -- on rajoute les couples geom, 0 et geom, 1 pour récupérer les extremités de la linestring UNION SELECT lstring.geom, 0 FROM lstring ) sub
Dernière modification par tumasgiu (Thu 16 January 2025 13:45)
Hors ligne
#3 Thu 16 January 2025 12:08
- felixdm
- Juste Inscrit !
- Date d'inscription: 14 Jan 2025
- Messages: 4
Re: [postGIS] Segmenter une lineString
Belle requête, qu'il faut que je teste.
Je viens d'essayer avec ST_AddPoint, mais il me faut trouver la position de mon point sur la ligne.
Hors ligne