Namn

ST_PointN — Returnerar den N:te punkten i den första LineString eller cirkulära LineString i en geometri.

Synopsis

geometry ST_PointN(geometry a_linestring, integer n);

Beskrivning

Returnerar den N:te punkten i en enkel linestrings eller cirkulär linestrings i geometrin. Negativa värden räknas baklänges från slutet av LineString, så att -1 är den sista punkten. Returnerar NULL om det inte finns någon linestrings i geometrin.

[Notera]

Index börjar på 1, som i OGC-specifikationerna sedan version 0.8.0. Baklängesindexering (negativt index) ingår inte i OGC. Tidigare versioner implementerade detta med index som börjar på 0.

[Notera]

Om du vill få fram den N:te punkten i varje LineString i en MultiLineString, använd tillsammans med ST_Dump

Denna metod implementerar OGC:s implementeringsspecifikation för enkla funktioner för SQL 1.1.

Denna metod implementerar SQL/MM-specifikationen. SQL-MM 3: 7.2.5, 7.3.5

Denna funktion stöder 3d och kommer inte att tappa z-index.

Denna metod stöder cirkulära strängar och kurvor.

Ändrad: 2.0.0 fungerar inte längre med multilinestrings med en geometri. I äldre versioner av PostGIS -- skulle en multilinestring med en enda linje fungera bra med den här funktionen och returnera startpunkten. I 2.0.0 returnerar den bara NULL som vilken annan multilinjesträng som helst.

Ändrad i 2.3.0: negativ indexering tillgänglig (-1 är sista punkten)

Exempel

Det här exemplet extraherar alla POINT-geometrier från en LineString.

Kod
SELECT ST_PointN(
      column1,
      generate_series(1, ST_NPoints(column1))
   )
FROM ( VALUES ('LINESTRING(0 0,1 1,2 2)'::geometry) ) AS foo;
Utdata
POINT(0 0)
 POINT(1 1)
 POINT(2 2)
(3 rows)
Figur
Geometry figure for visual-st-pointn-01

Det här exemplet använder en CircularString.

Kod
SELECT ST_PointN('CIRCULARSTRING(1 2,3 2,1 2)', 2);
Utdata
POINT(3 2)
Figur
Geometry figure for visual-st-pointn-02

Index börjar på 1. Ett negativt index räknar bakåt från slutet av LineString.

Kod
SELECT f
FROM ST_GeomFromText('LINESTRING(0 0 0,1 1 1,2 2 2)') AS g
  CROSS JOIN ST_PointN(g, -2) AS f;
Utdata
POINT Z (1 1 1)
Figur
Geometry figure for visual-st-pointn-03

Se även

ST_NPoints