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

GEODATA DAYS 2024

#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

ThomasG
Membre
Lieu: Nantes
Date d'inscription: 9 Sep 2005
Messages: 946
Site web

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

 

Pied de page des forums

Powered by FluxBB