st_pointonsurface Funkce

Platí pro:check označeno ano Databricks Runtime 18 a vyšší

Vrátí bod, který je zaručen, že leží na vstupní hodnotě nebo uvnitř.GEOMETRY

Syntax

st_pointonsurface ( geoExpr )

Argumenty

  • geoExpr: Hodnota GEOMETRY.

Returns

2D bodová GEOMETRY hodnota, která je zaručená, že leží na vstupní hodnotě nebo uvnitř vstupní GEOMETRY hodnoty. Přesněji řečeno:

  • Pokud je vstupní GEOMETRY hodnota prázdná, vrátí se 2D prázdný bod.
  • Pokud je vstupní GEOMETRY hodnota neprázdný bod, vrátí se 2D projekce bodu.
  • Pokud je vstupní GEOMETRY hodnota neprázdnou přímkou, vrátí se medián vrcholu.
  • Pokud je vstupní GEOMETRY hodnota neprázdný mnohoúhelník, vrátí se bod v interiéru mnohoúhelníku, pokud je to možné; jinak bod na hranici.
  • Pokud je vstupní GEOMETRY hodnota více bodů, vrátí se neprázdný bod nejblíže ohraničujícímu středu rámečku.
  • Pokud je vstupní GEOMETRY hodnota víceřádkový řetězec, vrátí se bod na povrchu přímky s největší délkou.
  • Pokud je vstupní GEOMETRY hodnota multipolygon, vrátí se bod na povrchu mnohoúhelníku s největší oblastí.
  • Pokud je vstupní GEOMETRY hodnotou kolekce geometrie, vrátí se bod na povrchu jednoho z maximálních dimenzionálních prvků kolekce.

Hodnota SRID výstupní GEOMETRY hodnoty je stejná jako hodnota vstupu.

Příklady

-- 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