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 Thu 12 March 2015 18:26

verdon
Juste Inscrit !
Date d'inscription: 12 Mar 2015
Messages: 6

[ PostgreSQL 9.2 / PostGis ] Créer des points sur une ligne

Bonjour,
Je voudrais créer des points tous les 50m sur une ligne et je me perds dans l'écriture de la requête SQL. J'ai utilisé ST_InterpolatePoint pour créer un point sur la ligne mais je n'arrive pas à trouver la syntaxe pour créer automatiquement tous les points.

Hors ligne

 

#2 Thu 12 March 2015 19:06

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

Re: [ PostgreSQL 9.2 / PostGis ] Créer des points sur une ligne

Bonsoir,

generate_series peut etre utilisé pour cela, un exemple:

Code:

select r.gid, g as pt_idx ,
  st_lineInterpolatePoint(r.geom, least(g * (50/st_length(r.geom)), 1) ) as geom
from route r cross join generate_series(1, round(st_length(r.geom) / 50::float)::int ) as g;

On joint la table des lignes a la fonction generate_series qui calcule le nombre de fractions que représentent 50m par rapport à la longueur de la ligne.
Ce nombre est utilisé pour générer des points successifs sur la ligne.

Nicolas

Hors ligne

 

#3 Fri 13 March 2015 16:51

verdon
Juste Inscrit !
Date d'inscription: 12 Mar 2015
Messages: 6

Re: [ PostgreSQL 9.2 / PostGis ] Créer des points sur une ligne

super merci beaucoup. j'ai réussi à faire ce que je voulais avec ta méthode.

Hors ligne

 

Pied de page des forums

Powered by FluxBB