st_pointonsurface

Dotyczy:sprawdzanie oznaczone jako tak Databricks Runtime 18 LTS i nowszych

Note

Środowisko Databricks Runtime 18 jest nowsze niż środowisko Databricks Runtime 18.0, 18.1 i 18.2. Funkcje, które wcześniej były dostarczane jako nowsza numerowana wersja, są teraz dostarczane jako daty aktualizacji środowiska Databricks Runtime 18 zamiast. Aby uzyskać szczegółowe informacje, zobacz Informacje o ujednoliconej wersji.

Important

Ta funkcja jest dostępna w publicznej wersji testowej.

Zwraca punkt, który gwarantuje, że znajduje się na lub wewnątrz wejściowej wartości Geometry .

Aby uzyskać odpowiednią funkcję SQL usługi Databricks, zobacz st_pointonsurface funkcja.

Syntax

from pyspark.databricks.sql import functions as dbf

dbf.st_pointonsurface(col=<col>)

Parameters

Parameter Typ Description
col pyspark.sql.Column lub str Wartość Geometry.

Zwroty

pyspark.sql.Column: Kolumna wartości geometrycznych punktów 2D, z których każda gwarantuje, że znajduje się na lub wewnątrz odpowiedniej geometrii danych wejściowych. Dokładniej:

  • Jeśli geometria danych wejściowych jest pusta, zwracany jest pusty punkt 2D.
  • Jeśli geometria wejściowa jest punktem niepustym, zwracana jest projekcja 2D punktu.
  • Jeśli geometria danych wejściowych jest niepustym ciągiem liniowym, zwracany jest wierzchołek mediany.
  • Jeśli geometria wejściowa jest niepustą wielokątną, punkt w środku wielokąta jest zwracany, gdy jest to możliwe; w przeciwnym razie punkt na granicy.
  • Jeśli geometria wejściowa jest wielopunktem, zwracany jest niepusty punkt najbliżej środka pola ograniczenia.
  • Jeśli geometria wejściowa jest wielowierszową, zwracany jest punkt na powierzchni linii o największej długości.
  • Jeśli geometria wejściowa jest wielopolygonem, zwracany jest punkt na powierzchni wielokąta z największym obszarem.
  • Jeśli geometria danych wejściowych jest kolekcją geometryczną, zwracany jest punkt na powierzchni jednego z maksymalnie wymiarowych elementów kolekcji.

Identyfikator SRID zwróconej geometrii jest taki sam jak w przypadku geometrii wejściowej.

Funkcja zwraca None, jeśli dane wejściowe to None.

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)')]