st_pointonsurface

Gäller för:check markerat ja Databricks Runtime 18 LTS och senare

Note

Databricks Runtime 18 är nyare än Databricks Runtime 18.0, 18.1 och 18.2. Funktioner som tidigare skulle ha levererats som en senare numrerad version levereras nu som daterade uppdateringar till Databricks Runtime 18 i stället. Mer information finns i Om enhetliga viktig information.

Important

Den här funktionen finns som allmänt tillgänglig förhandsversion.

Returnerar en punkt som garanterat ligger på eller inuti indatageometrivärdet .

För motsvarande Databricks SQL-funktion, se st_pointonsurface funktion.

Syntax

from pyspark.databricks.sql import functions as dbf

dbf.st_pointonsurface(col=<col>)

Parameters

Parameter Type Description
col pyspark.sql.Column eller str Ett geometrivärde.

Returns

pyspark.sql.Column: En kolumn med 2D-punktsgeometrivärden , var och en garanterad att ligga på eller inuti motsvarande indatageometri. Mer exakt:

  • Om indatageometrin är tom returneras den tomma 2D-punkten.
  • Om indatageometrin är en icke-tom punkt returneras 2D-projektionen av punkten.
  • Om indatageometrin är en icke-tom linjering returneras medianhörnet.
  • Om indatageometrin är en icke-tom polygon returneras en punkt i polygonens inre när det är möjligt. annars en punkt på gränsen.
  • Om indatageometrin är en multipunkt returneras den icke-tomma punkten närmast avgränsningsboxens mittpunkt.
  • Om indatageometrin är en multilinestring returneras en punkt på ytan av linjerna med den största längden.
  • Om indatageometrin är en multipolygon returneras en punkt på polygonens yta med det största området.
  • Om indatageometrin är en geometrisamling returneras en punkt på ytan av ett av samlingens maximalt dimensionella element.

SRID för den returnerade geometrin är samma som för indatageometrin.

Funktionen returnerar None om indata är 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)')]