H3地理空間功能
適用於:磚的SQL磚運行時
H3是一個全局網格索引係統。網格係統使用一個形狀,如矩形或三角形,來鑲嵌一個表麵,在這種情況下是地球表麵。H3係統被設計為使用六邊形(和一些五邊形),並在其層次結構中提供16級分辨率。在更高的分辨率下,鑲嵌的形狀更小。
參見:
地理空間分析H3
H3支持處理和分析空間數據的通用模式。首先從標準格式(緯度和經度,知名文本(WKT),知名二進製(WKB),或GeoJSON到H3細胞id。使用單個數據集,您可以按單元格ID聚合以回答位置驅動的問題。對於多個索引數據集,您可以使用單元格id組合它們,從而揭示不同的數據集如何相互關聯。數據集的這種連接在語義上是空間連接,但不需要空間謂詞。
在Databricks中使用H3的好處是什麼?
利用Delta Lake功能高效存儲和布局H3索引數據。三角洲湖的優化操作使用z順序(在H3單元格id上)允許您在空間上共同定位數據。此外,Delta Lake的數據跳過算法使用共局部性來智能地減少需要讀取的數據量。
您可以靈活地處理數據。您可以選擇使用存儲為大整數或字符串的H3單元格id。為了使用H3單元格id獲得最佳性能,請使用大整數表示。有關H3表達式的詳細使用,請參見SQL參考指南.
請注意
不需要安裝H3庫。它作為一個可見的依賴項包含在Databricks Runtime中,從Databricks Runtime 11.2,使用版本3.7.0的H3 Java庫。
導入Databricks函數得到H3 (Databricks運行時)
不需要導入Databricks SQL和Spark SQL。
在筆記本中導入Python或Scala的H3函數,使用如下命令:
從pyspark.databricks.sql.functions進口*
進口com.磚.sql.功能._
H3地理空間函數列表(Databricks SQL)
進口
函數 |
描述 |
---|---|
以指定的分辨率返回與所提供的經度和緯度相對應的H3單元格ID(作為BIGINT)。 |
|
h3_longlatash3string(longitudeExpr, latitudeExpr, resoltionexpr) |
以指定的分辨率返回與所提供的經度和緯度相對應的H3單元格ID(作為十六進製字符串)。 |
以指定的分辨率返回與所提供的點對應的H3單元格ID(作為BIGINT)。 |
|
以指定的分辨率返回與所提供的點對應的H3單元格ID(作為STRING)。 |
|
返回H3單元格id的數組(表示為bigint),對應於指定分辨率的六邊形或五邊形,這些六邊形或五邊形包含在輸入的區域地理中。 |
|
返回H3單元格id的數組(表示為string),對應於輸入區域地理包含的指定分辨率的六邊形或五邊形。 |
|
返回H3單元格id的數組(表示為bigint),對應於指定分辨率的六邊形或五邊形,這些六邊形或五邊形包含在輸入的區域地理中。 |
|
返回H3單元格id的數組(表示為string),對應於輸入區域地理包含的指定分辨率的六邊形或五邊形。 |
出口
函數 |
描述 |
---|---|
中的輸入H3單元格的多邊形邊界GeoJSON格式。 |
|
中的輸入H3單元格的多邊形邊界WKB格式。 |
|
中的輸入H3單元格的多邊形邊界WKT格式。 |
|
返回輸入H3單元格的中心作為中的點GeoJSON格式。 |
|
返回輸入H3單元格的中心作為中的點WKB格式。 |
|
返回輸入H3單元格的中心作為中的點WKT格式。 |
有效性
函數 |
描述 |
---|---|
如果輸入的BIGINT或STRING是有效的H3單元格ID,則返回true。 |
|
如果輸入值對應於有效的H3單元格ID,則返回BIGINT或STRING類型的輸入值,否則返回NULL。 |
|
如果輸入值對應於有效的H3單元格ID,則返回BIGINT或STRING類型的輸入值,否則發出錯誤。 |
遍曆
函數 |
描述 |
---|---|
以指定的分辨率返回輸入H3單元格的最大值的子單元格。 |
|
以指定的分辨率返回輸入H3單元格最小值的子單元格。 |
|
返回輸入H3單元格ID的分辨率。 |
|
以指定的分辨率返回輸入H3單元格ID的子H3單元格ID的數組。 |
|
以指定分辨率返回輸入H3單元格ID的父H3單元格ID。 |