Name

ST_LineInterpolatePoint — Renvoie un point interpolé le long d'une ligne à un emplacement fractionnaire.

Synopsis

geometry ST_LineInterpolatePoint(geometry a_linestring, float8 a_fraction);

geography ST_LineInterpolatePoint(geography a_linestring, float8 a_fraction, boolean use_spheroid = true);

Description

Retourne un point interpolé sur une ligne. Le premier argument doit être une LINESTRING. Le second argument est un float8 entre 0 et 1 représentant la fraction de la longueur totale de la ligne où le point doit être situé.

Voir ST_LineLocatePoint pour calculer l'emplacement de la ligne la plus proche d'un point.

[Note]

Cette fonction calcule des points en 2D et interpole ensuite les valeurs de Z et M, tandis que ST_3DLineInterpolatePoint calcule des points en 3D et n'interpole que la valeur M.

[Note]

Depuis la version 1.1.1 cette fonction interpole aussi les valeurs M et Z (lorsqu'elles sont présentes), les versions précédentes renvoient des valeurs M et Z à 0.0.

Disponibilité : 0.8.2, support de Z et M ajouté en 1.1.1

Modifié : 2.1.0. Jusqu'à la version 2.0.x, cette fonction était appelée ST_Line_Interpolate_Point.

Cette fonction prend en charge la 3D et ne supprime pas l'indice z.

Exemples

Une ligne avec le point interpolé à la position 20% (0.20)

-- The point 20% along a line

SELECT ST_AsEWKT(  ST_LineInterpolatePoint(
        'LINESTRING(25 50, 100 125, 150 190)',
        0.2 ));
----------------
 POINT(51.5974135047432 76.5974135047432)

Le point central d'une ligne 3D :

SELECT ST_AsEWKT(  ST_LineInterpolatePoint('
        LINESTRING(1 2 3, 4 5 6, 6 7 8)',
        0.5 ));
--------------------
 POINT(3.5 4.5 5.5)

Le point le plus proche d'un point sur une ligne :

SELECT ST_AsText( ST_LineInterpolatePoint( line.geom,
                      ST_LineLocatePoint( line.geom, 'POINT(4 3)')))
FROM (SELECT ST_GeomFromText('LINESTRING(1 2, 4 5, 6 7)') As geom) AS line;
------------
 POINT(3 4)