st_pointonsurface-Funktion

Gilt für:check marked yes Databricks Runtime 18 und höher

Gibt einen Punkt zurück, der garantiert auf oder innerhalb des Eingabewerts GEOMETRY liegt.

Syntax

st_pointonsurface ( geoExpr )

Arguments

  • geoExpr: Ein GEOMETRY Wert.

Rückkehr

Ein 2D-Punktwert GEOMETRY , der garantiert auf oder innerhalb des Eingabewerts GEOMETRY liegt. Im Einzelnen:

  • Wenn der Eingabewert GEOMETRY leer ist, wird der leere 2D-Punkt zurückgegeben.
  • Wenn der Eingabewert GEOMETRY ein nicht leerer Punkt ist, wird die 2D-Projektion des Punkts zurückgegeben.
  • Wenn der Eingabewert GEOMETRY eine nicht leere Linienzeichenfolge ist, wird der Medianvertex zurückgegeben.
  • Wenn der Eingabewert GEOMETRY ein nicht leeres Polygon ist, wird nach Möglichkeit ein Punkt im Inneren des Polygons zurückgegeben; andernfalls wird ein Punkt auf seiner Grenze zurückgegeben.
  • Wenn der Eingabewert GEOMETRY ein Multipoint ist, wird der nicht leere Punkt zurückgegeben, der dem umgebenden Feldmittelpunkt am nächsten kommt.
  • Wenn der Eingabewert GEOMETRY eine mehrzeilige Zeichenfolge ist, wird ein Punkt auf der Oberfläche der Linienzeichenfolge mit der größten Länge zurückgegeben.
  • Wenn der Eingabewert GEOMETRY ein Multipolygon ist, wird ein Punkt auf der Oberfläche des Polygons mit dem größten Bereich zurückgegeben.
  • Wenn der Eingabewert GEOMETRY eine Geometrieauflistung ist, wird ein Punkt auf der Oberfläche eines der maximaldimensionalen Elemente der Auflistung zurückgegeben.

Der SRID-Wert des Ausgabewerts GEOMETRY entspricht dem des Eingabewerts.

Beispiele

-- Example taking a 2D polygon.
> SELECT st_asewkt(st_pointonsurface(st_geomfromtext('POLYGON((0 0,10 0,10 10,0 10,0 0))')));
  POINT(5 5)

-- Example taking a 2D polygon with a hole: the result lies in the donut region.
> SELECT st_asewkt(st_pointonsurface(st_geomfromtext('POLYGON((0 0,30 0,30 30,0 30,0 0),(5 5,25 5,25 25,5 25,5 5))')));
  POINT(3.75 3.75)

-- Example taking a 3DZ linestring: the median vertex is returned and the Z coordinate is dropped.
> SELECT st_asewkt(st_pointonsurface(st_geomfromtext('LINESTRING Z (1 2 -1,3 4 -2,5 6 -3)')));
  POINT(3 4)

-- Example taking a multipolygon: a point on the polygon with the largest area is returned.
> SELECT st_asewkt(st_pointonsurface(st_geomfromtext('MULTIPOLYGON(((0 0,10 0,10 10,0 10,0 0)),((100 100,101 100,101 101,100 101,100 100)))')));
  POINT(5 5)

-- Example showing that the SRID is preserved.
> SELECT st_asewkt(st_pointonsurface(st_geomfromtext('POLYGON((0 0,10 0,10 10,0 10,0 0))', 3857)));
  SRID=3857;POINT(5 5)

-- Example taking a NULL input.
> SELECT st_pointonsurface(NULL);
  NULL