Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Gilt für:
Databricks Runtime 18 und höher
Hinweis
Databricks Runtime 18 ist neuer als Databricks Runtime 18.0, 18.1 und 18.2. Features, die zuvor als spätere nummerierte Version ausgeliefert wurden, werden stattdessen als veraltete Updates für Databricks Runtime 18 ausgeliefert. Ausführliche Informationen finden Sie unter "Informationen zu einheitlichen Versionshinweisen".
Important
Dieses Feature befindet sich in der Public Preview.
Gibt einen Punkt zurück, der garantiert auf oder innerhalb des Eingabegeometriewerts liegt.
Die entsprechende Databricks SQL-Funktion finden Sie unter st_pointonsurface Funktion.
Syntax
from pyspark.databricks.sql import functions as dbf
dbf.st_pointonsurface(col=<col>)
Parameter
| Parameter | Typ | BESCHREIBUNG |
|---|---|---|
col |
pyspark.sql.Column oder str |
Ein Geometriewert. |
Rückkehr
pyspark.sql.Column: Eine Spalte mit 2D-Punkt-Geometriewerten , die garantiert auf oder innerhalb der entsprechenden Eingabegeometrie liegen. Im Einzelnen:
- Wenn die Eingabegeometrie leer ist, wird der leere 2D-Punkt zurückgegeben.
- Wenn es sich bei der Eingabegeometrie um einen nicht leeren Punkt handelt, wird die 2D-Projektion des Punkts zurückgegeben.
- Wenn es sich bei der Eingabegeometrie um eine nicht leere Linienzeichenfolge handelt, wird der Medianvertex zurückgegeben.
- Wenn es sich bei der Eingabegeometrie um ein nicht leeres Polygon handelt, wird nach Möglichkeit ein Punkt im Inneren des Polygons zurückgegeben; andernfalls ein Punkt an seiner Grenze.
- Wenn es sich bei der Eingabegeometrie um einen Multipoint handelt, wird der nicht leere Punkt zurückgegeben, der dem umgebenden Feldmittelpunkt am nächsten kommt.
- Wenn es sich bei der Eingabegeometrie um eine mehrzeilige Zeichenfolge handelt, wird ein Punkt auf der Oberfläche der Linienzeichenfolge mit der größten Länge zurückgegeben.
- Wenn die Eingabegeometrie ein Multipolygon ist, wird ein Punkt auf der Oberfläche des Polygons mit dem größten Bereich zurückgegeben.
- Wenn es sich bei der Eingabegeometrie um eine Geometrieauflistung handelt, wird ein Punkt auf der Oberfläche eines der maximaldimensionalen Elemente der Auflistung zurückgegeben.
Die SRID der zurückgegebenen Geometrie entspricht der der Eingabegeometrie.
Die Funktion gibt zurück None , wenn die Eingabe lautet 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)')]