回傳一個結構陣列,代表覆蓋指定解析度下地理區域的晶片。 更精確地說,回傳陣列中的元素是具名結構體,其中包含三個欄位,分別為「cellid」、「core」和「chip」:
- 「cellid」欄位包含覆蓋輸入地理區域的 H3 格網單元之一。
- 「核心」欄位決定「cellid」欄位中的 H3 cell 邊界多邊形是否包含在輸入地理範圍內。 這種情況只能發生在區域輸入地理上。 若該格子包含在輸入地理中,則值設為
True,false否則。 - 「晶片」欄位是 H3 單元多邊形(對應於「cellid」欄位中的 H3 單元 ID)與輸入地理(以 WKB 格式表示)的(笛卡兒)交點。 陣列中結構中的 "cellid" 元素回傳的 H3 單元 id 集合是輸入地理的最小覆蓋集。
關於對應的 Databricks SQL 函式,請參見 h3_tessellateaswkb 函數。
語法
from pyspark.databricks.sql import functions as dbf
dbf.h3_tessellateaswkb(col1=<col1>, col2=<col2>)
參數
| 參數 | 類型 | Description |
|---|---|---|
col1 |
pyspark.sql.Column 或 str |
一個字串代表 WGS84 座標參考系統中地理的字串(WKT 或 GeoJSON 格式),或一個二進位代表 WGS84 座標參考系統中線性或區域地理的 WKB 格式。 |
col2 |
pyspark.sql.Column、str 或 int |
涵蓋地理範圍的 H3 cell ID 解析度。 |
範例
from pyspark.databricks.sql import functions as dbf
from pyspark.sql import functions as f
df = spark.createDataFrame([('MULTIPOINT(20 0,20 10,40 30)', 0),], ['wkt', 'res'])
chips = df.select(
... f.inline(dbf.h3_tessellateaswkb('wkt', 'res')).alias('cell', 'core', 'chip'))
chips.select(dbf.h3_h3tostring('cell').alias('cell'),
... dbf.st_astext(dbf.st_geomfromwkb('chip')).alias('wkt')).collect()
[Row(cell='802dfffffffffff', wkt='POINT(40 30)'), Row(cell='806bfffffffffff', wkt='MULTIPOINT((20 0),(20 10))')]