st_pointonsurface-Funktion

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

Important

Dieses Feature befindet sich in der Public Preview.

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