st_pointonsurface

S’applique à :check marqué oui Databricks Runtime 18 LTS 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 précédemment été livrées sous la forme d’une version numérotée ultérieure sont désormais fournies sous forme de mises à jour databricks Runtime 18 à la place. Pour plus d’informations, consultez À propos des notes de publication unifiées.

Important

Cette fonctionnalité est disponible en préversion publique.

Retourne un point garanti sur ou à l’intérieur de la valeur Geometry d’entrée.

Pour obtenir plus de détails sur la fonction SQL de Databricks correspondante, consultez st_pointonsurface.

Syntax

from pyspark.databricks.sql import functions as dbf

dbf.st_pointonsurface(col=<col>)

Parameters

Paramètre Type Description
col pyspark.sql.Column ou str Une valeur Geometry.

Returns

pyspark.sql.Column: colonne de valeurs geometry 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 retourné.
  • Si la géométrie d’entrée est un point non vide, la projection 2D du point est retournée.
  • Si la géométrie d’entrée est une chaîne de ligne non vide, le sommet médian est retourné.
  • Si la géométrie d’entrée est un polygone non vide, un point dans l’intérieur du polygone est retourné lorsque cela est possible ; sinon, point sur sa limite.
  • Si la géométrie d’entrée est un multipoint, le point non vide le plus proche du centre de zone englobante est retourné.
  • Si la géométrie d’entrée est une chaîne multiligne, un point sur la surface de la chaîne de traits avec la plus grande longueur est retournée.
  • Si la géométrie d’entrée est un multipolygon, un point sur la surface du polygone avec la plus grande zone est retourné.
  • Si la géométrie d’entrée est une collection géométrique, un point sur la surface de l’un des éléments de dimension maximale de la collection est retourné.

Le SRID de la géométrie retournée est identique à celui de la géométrie d’entrée.

La fonction retourne None si l’entrée est 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)')]