st_pointonsurface

Van toepassing op:controleren gemarkeerd als Ja Databricks Runtime 18 LTS en hoger

Note

Databricks Runtime 18 is nieuwer dan Databricks Runtime 18.0, 18.1 en 18.2. Functies die eerder als een latere genummerde versie werden verzonden, worden nu verzonden als gedateerde updates voor Databricks Runtime 18. Zie Voor meer informatie over geïntegreerde releaseopmerkingen.

Important

Deze functie bevindt zich in openbare preview-versie.

Retourneert een punt dat gegarandeerd op of binnen de meetwaarde van de invoergeometrie ligt.

Voor de overeenkomstige Databricks SQL-functie, zie de st_pointonsurface functie.

Syntax

from pyspark.databricks.sql import functions as dbf

dbf.st_pointonsurface(col=<col>)

Parameters

Parameter Typ Description
col pyspark.sql.Column of str Een geometriewaarde.

Returns

pyspark.sql.Column: Een kolom met 2D-puntgeometriewaarden , die elk gegarandeerd op of binnen de bijbehorende meetkunde voor invoer liggen. Preciezer gezegd:

  • Als de invoergeometrie leeg is, wordt het lege 2D-punt geretourneerd.
  • Als de invoergeometrie een niet-leeg punt is, wordt de 2D-projectie van het punt geretourneerd.
  • Als de invoergeometrie een niet-lege lijnentring is, wordt het mediaanhoekpunt geretourneerd.
  • Als de invoergeometrie een niet-lege veelhoek is, wordt indien mogelijk een punt in het binnenste van de veelhoek geretourneerd; anders een punt op de grens.
  • Als de invoergeometrie een multipoint is, wordt het niet-lege punt dat het dichtst bij het begrenzingsvakcentrum ligt, geretourneerd.
  • Als de invoergeometrie een multilinestring is, wordt een punt op het oppervlak van de lijnentring met de grootste lengte geretourneerd.
  • Als de invoergeometrie een multipolygon is, wordt een punt op het oppervlak van de veelhoek met het grootste gebied geretourneerd.
  • Als de invoergeometrie een geometrieverzameling is, wordt een punt op het oppervlak van een van de maximumdimensionale elementen van de verzameling geretourneerd.

De SRID van de geretourneerde geometrie is hetzelfde als die van de invoergeometrie.

De functie retourneert None als de invoer is 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)')]