Aller au contenu principal

st_pointonsurface

S'applique à : coché oui Databricks Runtime 18 et versions ultérieures

remarque

Databricks Runtime 18 est plus récent que Databricks Runtime 18,0, 18,1 et 18,2. Les fonctionnalités qui auraient auparavant été livrées sous forme de version numérotée ultérieure sont désormais livrées sous forme de mises à jour datées pour Databricks Runtime 18 à la place. Pour plus de détails, consultez À propos des notes de version unifiées.

info

Aperçu

Cette fonctionnalité est en aperçu public.

Retourne un point qui est garanti de se trouver sur ou à l'intérieur de la valeur Géométrie d'entrée.

Pour la fonction Databricks SQL correspondante, consultez la fonctionst_pointonsurface.

Syntaxe

Python
from pyspark.databricks.sql import functions as dbf

dbf.st_pointonsurface(col=<col>)

parameter

parameter

Type

Description

col

pyspark.sql.Column OU str

Une valeur de géométrie.

parameter

Type

Description

col

pyspark.sql.Column OU str

Une valeur de géométrie.

Renvoie

pyspark.sql.Column: Une colonne de valeurs de Géométrie de point 2D, chacune garantie de se trouver sur ou à l'intérieur de la géométrie d'entrée correspondante. Plus précisément :

  • Si la géométrie d'entrée est vide, le point vide 2D est renvoyé.
  • Si la géométrie d'entrée est un point non vide, la projection 2D du point est renvoyée.
  • Si la géométrie d'entrée est une chaîne de lignes non vide, le sommet médian est renvoyé.
  • Si la géométrie d'entrée est un polygone non vide, un point à l'intérieur du polygone est renvoyé lorsque cela est possible ; sinon, un point sur sa frontière.
  • Si la géométrie d'entrée est un multipoint, le point non vide le plus proche du centre de la boîte englobante est renvoyé.
  • Si la géométrie d'entrée est une multiligne, un point sur la surface de la ligne avec la plus grande longueur est renvoyé.
  • Si la géométrie d'entrée est un multipolygone, un point sur la surface du polygone avec la plus grande surface est retourné.
  • Si la géométrie d'entrée est une collection de géométries, un point sur la surface de l'un des éléments de dimension maximale de la collection est renvoyé.

Le SRID de la géométrie renvoyée est le même que celui de la géométrie d'entrée.

La fonction renvoie None si l'entrée est None.

Exemples

Python
# 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()
Output
[Row(result='POINT(5 5)')]
Python
# 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()
Output
[Row(result='POINT(3.75 3.75)')]
Python
# 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()
Output
[Row(result='POINT(3 4)')]
Python
# 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()
Output
[Row(result='POINT(5 5)')]
Python
# 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()
Output
[Row(result='SRID=3857;POINT(5 5)')]