st_pointonsurface

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

Note

Databricks Runtime 18 je novější než Databricks Runtime 18.0, 18.1 a 18.2. Funkce, které by se dříve odeslaly jako novější číslovaná verze, se teď dodávají jako datové aktualizace data do Databricks Runtime 18. Podrobnosti najdete v článku o jednotných poznámkách k verzi.

Important

Tato funkce je ve verzi Public Preview.

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

Odpovídající funkci SQL Databricks vizte funkcest_pointonsurface.

Syntax

from pyspark.databricks.sql import functions as dbf

dbf.st_pointonsurface(col=<col>)

Parameters

Parametr Typ Description
col pyspark.sql.Column nebo str Hodnota Geometrie.

Returns

pyspark.sql.Column: Sloupec hodnot geometrie 2D bodů, z nichž každá zaručuje, že leží na odpovídající vstupní geometrii nebo uvnitř odpovídající vstupní geometrie. Přesněji řečeno:

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

SRID vrácené geometrie je stejný jako u vstupní geometrie.

Funkce vrátí None , pokud je Nonevstup .

Examples

# Returns a point inside a 2D polygon.
from pyspark.databricks.sql import functions as dbf
df = spark.createDataFrame([('POLYGON((0 0,10 0,10 10,0 10,0 0))',)], ['wkt'])
df.select(dbf.st_asewkt(dbf.st_pointonsurface(dbf.st_geomfromtext('wkt'))).alias('result')).collect()
[Row(result='POINT(5 5)')]
# For a polygon with a hole, the result lies in the donut region.
from pyspark.databricks.sql import functions as dbf
df = spark.createDataFrame([('POLYGON((0 0,30 0,30 30,0 30,0 0),(5 5,25 5,25 25,5 25,5 5))',)], ['wkt'])
df.select(dbf.st_asewkt(dbf.st_pointonsurface(dbf.st_geomfromtext('wkt'))).alias('result')).collect()
[Row(result='POINT(3.75 3.75)')]
# For a 3DZ linestring, the median vertex is returned and the Z coordinate is dropped.
from pyspark.databricks.sql import functions as dbf
df = spark.createDataFrame([('LINESTRING Z (1 2 -1,3 4 -2,5 6 -3)',)], ['wkt'])
df.select(dbf.st_asewkt(dbf.st_pointonsurface(dbf.st_geomfromtext('wkt'))).alias('result')).collect()
[Row(result='POINT(3 4)')]
# For a multipolygon, a point on the polygon with the largest area is returned.
from pyspark.databricks.sql import functions as dbf
df = spark.createDataFrame([('MULTIPOLYGON(((0 0,10 0,10 10,0 10,0 0)),((100 100,101 100,101 101,100 101,100 100)))',)], ['wkt'])
df.select(dbf.st_asewkt(dbf.st_pointonsurface(dbf.st_geomfromtext('wkt'))).alias('result')).collect()
[Row(result='POINT(5 5)')]
# The SRID of the input geometry is preserved.
from pyspark.databricks.sql import functions as dbf
df = spark.createDataFrame([('POLYGON((0 0,10 0,10 10,0 10,0 0))',)], ['wkt'])
df.select(dbf.st_asewkt(dbf.st_pointonsurface(dbf.st_geomfromtext('wkt', 3857))).alias('result')).collect()
[Row(result='SRID=3857;POINT(5 5)')]