ST_LineInterpolatePoint — Returnerar en punkt som interpolerats längs en linje på en fraktionerad plats.
geometry ST_LineInterpolatePoint(
geometry a_linestring, float8 a_fraction)
;
geography ST_LineInterpolatePoint(
geography a_linestring, float8 a_fraction, boolean use_spheroid = true)
;
Returnerar en punkt som interpolerats längs en linje på en fraktionerad plats. Första argumentet måste vara en LINESTRING. Det andra argumentet är ett flyttal mellan 0 och 1 som representerar den fraktion av linjelängden där punkten ska placeras. Z- och M-värdena interpoleras om de finns.
Se ST_LineLocatePoint för att beräkna linjepositionen närmast en punkt.
![]() |
|
Den här funktionen beräknar punkter i 2D och interpolerar sedan värden för Z och M, medan ST_3DLineInterpolatePoint beräknar punkter i 3D och endast interpolerar M-värdet. |
![]() |
|
Sedan version 1.1.1 interpolerar denna funktion även M- och Z-värden (om sådana finns), medan tidigare versioner satte dem till 0,0. |
Tillgänglighet: 0.8.2, stöd för Z och M tillkom i 1.1.1
Ändrad: 2.1.0. Fram till 2.0.x hette detta ST_Line_Interpolate_Point.
Denna funktion stöder 3d och kommer inte att tappa z-index.
En LineString med den interpolerade punkten vid 20% position (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)
Mittpunkten för en 3D-linje:
SELECT ST_AsEWKT( ST_LineInterpolatePoint(' LINESTRING(1 2 3, 4 5 6, 6 7 8)', 0.5 )); -------------------- POINT(3.5 4.5 5.5)
Den punkt på en linje som ligger närmast en punkt:
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)