適用対象:はい Databricks Runtime 18 LTS 以上![]()
Note
Databricks Runtime 18 は、Databricks Runtime 18.0、18.1、および 18.2 より新しいです。 以前に後の番号付きバージョンとして出荷されていた機能は、代わりに Databricks Runtime 18 の日付の更新プログラムとして出荷されるようになりました。 詳細については、「 統合リリース ノートについて」を参照してください。
Important
この機能は パブリック プレビュー段階です。
入力 Geometry 値の上または内側にあることが保証される点を返します。
対応する Databricks SQL 関数については、 st_pointonsurface 関数を参照してください。
Syntax
from pyspark.databricks.sql import functions as dbf
dbf.st_pointonsurface(col=<col>)
Parameters
| パラメーター | タイプ | Description |
|---|---|---|
col |
pyspark.sql.Column または str |
Geometry の値。 |
返品
pyspark.sql.Column:2D ポイント ジオメトリ 値の列。それぞれ、対応する入力ジオメトリ上または内部に配置することが保証されます。 より正確には、次のようになります。
- 入力ジオメトリが空の場合は、2D 空のポイントが返されます。
- 入力ジオメトリが空でないポイントの場合は、ポイントの 2D 投影が返されます。
- 入力ジオメトリが空でないラインストリングの場合は、中央値の頂点が返されます。
- 入力ジオメトリが空でないポリゴンの場合は、可能な場合はポリゴンの内部のポイントが返されます。それ以外の場合は、その境界上のポイント。
- 入力ジオメトリがマルチポイントの場合は、境界ボックスの中心に最も近い空でないポイントが返されます。
- 入力ジオメトリが複数行文字列の場合は、長さが最も長いライン文字列のサーフェス上のポイントが返されます。
- 入力ジオメトリがマルチポリゴンの場合は、面積が最も大きいポリゴンのサーフェス上のポイントが返されます。
- 入力ジオメトリがジオメトリ コレクションの場合は、コレクションの最大次元要素の 1 つのサーフェス上のポイントが返されます。
返されるジオメトリの SRID は、入力ジオメトリの SRID と同じです。
入力がNone場合、この関数は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)')]