st_pointonsurface
適用対象: Databricks Runtime 18 LTS 以降
備考
プレビュー
この機能は パブリック プレビュー段階です。
入力 ジオメトリ 値の内側または上にあることが保証される点を返します。
対応するDatabricks SQL 関数については、st_pointonsurface function を参照してください。
構文
Python
from pyspark.databricks.sql import functions as dbf
dbf.st_pointonsurface(col=<col>)
パラメーター
パラメーター | Type | 説明 |
|---|---|---|
|
| ジオメトリの値です。 |
戻り値
pyspark.sql.Column2Dポイントのジオメトリ値の列です。各値は、対応する入力ジオメトリの内側または上に存在することが保証されています。より正確には:
- 入力ジオメトリが空の場合、2D空ポイントが返されます。
- 入力ジオメトリが空でない点である場合、その点の2D投影が返されます。
- 入力ジオメトリが空ではないラインストリングの場合、中央頂点が返されます。
- 入力ジオメトリが空ではないポリゴンの場合、可能な場合はポリゴンの内部の点が返されます。それ以外の場合は、その境界上の点が返されます。
- 入力ジオメトリがマルチポイントの場合、バウンディングボックスの中心に最も近い空でない点が返されます。
- 入力ジオメトリがマルチラインストリングの場合、最長のラインストリングのサーフェス上の点が返されます。
- 入力ジオメトリがマルチポリゴンの場合、面積が最大のポリゴンの表面上の点が返されます。
- 入力ジオメトリがジオメトリコレクションである場合、コレクションの最大次元要素のいずれかの表面上の点が返されます。
返されるジオメトリのSRIDは、入力ジオメトリのSRIDと同じです。
関数は入力がNoneの場合にNoneを返します。
例
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)')]