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 !.
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oublié ?

Annonce

Si vous lisez ce message, cela signifie que vous êtes sur le nouveau serveur de GeoRezo.

Toutefois, suite à la migration, des anomalies voire des régressions existent et seront corrigées progressivement.

Merci de votre patience.

#1 Tue 14 May 2019 22:20

Julien Gondellon
Membre
Date d'inscription: 17 Apr 2014
Messages: 58

Question sur ST_LineInterpolatePoint

Bonsoir,
Je voudrais savoir si avec cet outil nous pouvons creer des points à une distance donnée depuis l'extrémité d'une polyligne.
Merci

Hors ligne

 

#2 Wed 15 May 2019 07:29

SIGEAL
Membre
Lieu: Saint Laurent des Combes
Date d'inscription: 5 Sep 2005
Messages: 158
Site web

Re: Question sur ST_LineInterpolatePoint

Bonjour,

Si l'extrémité est le dernier sommet de la polyligne (par opposition au premier, l'origine),  et d la distance, la syntaxe serait :

Code:

ST_LineInterpolatePoint(geom, 1 - (d / st_Length(geom))

Plus de détails :
http://postgis.net/docs/ST_LineInterpolatePoint.html


Christophe Damour (SIGéal)

Hors ligne

 

#3 Fri 17 May 2019 00:03

Julien Gondellon
Membre
Date d'inscription: 17 Apr 2014
Messages: 58

Re: Question sur ST_LineInterpolatePoint

Merci pour le retour.
Je connaissais le lien que tu m'as transmis.
Trois dernières questions :
1. Qu'elle serait la formule si je fais la même chose en partant de l'origine ? Est-ce que c'est ça  : T_LineInterpolatePoint(geom, (d / st_Length(geom))
2. Comment faire si je veux créer plusieurs points sur cette même ligne à partir de cette fonction ?
3. Comment faire avec cette fonction, dans le cas où j'ai plusieurs tronçons, et que mes points ne sont associés qu'à certains tronçons. Je présume que ma base de données qui correspondra à mes points doit contenir le numéro du tronçon et la distance. Et comment lui signifier dans la fonction

(Je pense que je ne suis pas du tout clair sur le troisième point.

Merci du retour.

Hors ligne

 

#4 Fri 17 May 2019 10:07

tumasgiu
Membre
Lieu: Ajaccio
Date d'inscription: 5 Jul 2010
Messages: 817

Re: Question sur ST_LineInterpolatePoint

1. Qu'elle serait la formule si je fais la même chose en partant de l'origine ? Est-ce que c'est ça  : T_LineInterpolatePoint(geom, (d / st_Length(geom))


Oui.


2. Comment faire si je veux créer plusieurs points sur cette même ligne à partir de cette fonction ?


Si vous voulez interpoler plusieurs points avec la même distance entre eux :
https://postgis.net/docs/ST_LineInterpolatePoints.html

Si vous voulez avoir plusieurs champs représentant plusieurs points, vous pouvez juste répéter l'appel à la fonction.

Si vous voulez créer un multipoint, vous utilisez une fonction telle que st_collect ou st_union,
qui possèdent toutes deux une définition ayant comme un argument un tableau de geometries :

Code:

St_Collect(ARRAY[ST_LineInterpolatePoint(geom, 1 - (d / st_Length(geom)), ST_LineInterpolatePoint(geom, 1 - (e / st_Length(geom)), ...])

3. Comment faire avec cette fonction, dans le cas où j'ai plusieurs tronçons, et que mes points ne sont associés qu'à certains tronçons. Je présume que ma base de données qui correspondra à mes points doit contenir le numéro du tronçon et la distance. Et comment lui signifier dans la fonction


Il faut joindre vos deux tables pour créer l'ensemble des points dans une sous requête
puis utiliser la version agrégat de st_collect pour collecter tout les points par tronçon.

Avec un schema comme suit :

Code:

CREATE TABLE tronçon(numero_tronçon int, geom geometry);
CREATE TABLE point(distance d double, numero_tronçon int);

La requête

SELECT
    numero_tronçon,
    st_collect(the_point) AS multi_points
FROM(
    SELECT
         t.numero_tronçon,
         ST_LineInterpolatePoint(geom, 1 - (d / st_Length(geom)) AS the_point
    FROM
        tronçon AS t
    JOIN
        point AS p
    ON
        t.numero_tronçon = p.numero_tronçon
    ) AS sous_requete
GROUP BY
    numero_tronçon
;

Hors ligne

 

Pied de page des forums

Powered by FluxBB

Partagez  |