#1 Thu 03 February 2011 14:33
- jonathan
- Participant assidu
- Date d'inscription: 16 May 2006
- Messages: 263
POSTGIS, découper linge
Bonjour,
Je cherche à découper une ligne en segment de longueur défini. J'utilise la fonction st_segmentize mais sans résultat même si celle-ci ne retourne pas d'erreur.
Code:
select st_segmentize(the_geom,longueur) from matable
Les lignes retournées sont identiques aux lignes de la table en entrée.
Merci pour votre aide
Dernière modification par jonathan (Thu 03 February 2011 14:45)
Hors ligne
#2 Thu 03 February 2011 22:08
- jonathan
- Participant assidu
- Date d'inscription: 16 May 2006
- Messages: 263
Re: POSTGIS, découper linge
A défaut,
Peut-on créer automatiquement des points à intervalle régulier le long d'une ligne ?
Merci.
Dernière modification par jonathan (Thu 03 February 2011 22:08)
Hors ligne
#3 Fri 04 February 2011 00:55
Re: POSTGIS, découper linge
Bonsoir,
St_segmentize(the_geom, 10) se contente de rajouter des points dans les objets si l'espacement entre les points constituant la ligne est inférieure à 10 m mais si l'espace entre les points est inférieur, il ne fait rien. Relire la documentation en anglais http://postgis.refractions.net/docs/ST_Segmentize.html
La fusion du topic http://georezo.net/forum/viewtopic.php?id=66996 adapté aux polylignes
avec un provenant de la mailing list http://postgis.refractions.net/pipermai … 23451.html
permet de faire un petit essai assez concluant à l'exception de l'arrondi.
Code:
SELECT st_astext(ST_MakeLine(a.setpoint, b.setpoint)), st_length(ST_MakeLine(a.setpoint, b.setpoint)) FROM (select row_number() over() as id, setpoint FROM (select st_line_interpolate_point( ln, ((generate_series(0, (st_length(ln)/100)::integer)) * 100) / st_length(ln) ) as setpoint from (select geometryfromtext('LINESTRING(2550 0, 250 2601, 0 2500, 0 0)', -1) as ln ) as foo) as bar) a, (select row_number() over() as id, setpoint FROM (select st_line_interpolate_point( ln, ((generate_series(0, (st_length(ln)/100)::integer)) * 100) / st_length(ln) ) as setpoint from (select geometryfromtext('LINESTRING(2550 0, 250 2601, 0 2500, 0 0)', -1) as ln ) as foo) as bar) b WHERE a.id+1 = b.id;
Maintenant à vous de l'adapter à votre cas
Cordialement
ThomasG
Hors ligne
#4 Fri 04 February 2011 09:51
- jonathan
- Participant assidu
- Date d'inscription: 16 May 2006
- Messages: 263
Re: POSTGIS, découper linge
Merci,
Créer des points à intervalle régulier sur la ligne serait peut être plus simple ??? (si c'est possible)
Hors ligne
#5 Fri 04 February 2011 11:11
- jonathan
- Participant assidu
- Date d'inscription: 16 May 2006
- Messages: 263
Re: POSTGIS, découper linge
Y a t'il un logiciel libre capable de faire ceci ?
modif :
GRASS GIS !!!!!!!!!! (sans mettre les mains dans le cambouis -> Génial)
Dernière modification par jonathan (Fri 04 February 2011 13:58)
Hors ligne