共用方式為


H3 地理空間功能

適用於:勾選為「是」Databricks SQL 勾選為「是」Databricks Runtime

H3 是全域方格索引系統。 網格線系統會使用矩形或三角形等圖形來鑲嵌表面,在此案例中為地球表面。 H3 系統的設計目的是使用六邊形(和幾個五邊形),並在其階層中提供 16 個解析度等級。 在較高的解析度下,鑲嵌圖形會更小。

只有在已啟用 Photon 的叢集和 Databricks SQL 倉儲中,Databricks SQL Pro 和無伺服器層才支援 H3 表達式。

深入瞭解 H3 解析度,以及 H3 的來源。

另請參閱:

適用於地理空間分析的 H3

H3 支援處理和分析空間數據的常見模式。 首先,將地理空間數據編製索引,從標準格式(緯度和經度、 已知文字 (WKT)已知二進位 (WKB)GeoJSON 到 H3 單元格標識符。 使用單一數據集,您可以依儲存格 ID 匯總以回答與位置相關的問題。 透過多個索引數據集,您可以使用數據格標識碼加以結合,並顯示不同數據集彼此的關聯性。 數據集的聯結在語意上是空間聯結,但不需要空間述詞。

在 Databricks 中使用 H3 有哪些優點?

利用 Delta Lake 功能,以有效率地儲存和配置 H3 索引數據。 Delta Lake 的 OPTIMIZE操作(在 H3 單元格識別碼上進行 Z 排序)允許您空間上共同排列數據。 此外,Delta Lake 的資料跳過算法會使用共定位,以智慧方式減少需要讀取的資料量。

您可以靈活地處理數據的方式。 您可以選擇使用儲存為大整數或字串的 H3 單元格識別碼。 若要獲得最佳使用 H3 單元格標識碼的效能,請使用大整數表示法。 如需 H3 表達式的詳細用法, 請參閱 SQL 參考指南

備註

您不需要安裝 H3 函式庫。 它包含在 Databricks Runtime 中,自 Databricks Runtime 11.2版本開始,使用 H3 Java 庫 3.7.0 版的可見相依組件。

匯入 Databricks 函式以取得 H3 (Databricks Runtime)

Databricks SQL 和 Spark SQL 不需要匯入。

若要在筆記本中匯入 Python 或 Scala 的 H3 函式,請使用下列命令:

Python

from pyspark.databricks.sql import functions as dbf

程式語言 Scala

import com.databricks.sql.functions._

H3 地理空間函式清單 (Databricks SQL)

匯入

功能 描述
h3_coverash3(geographyExpr,resolutionExpr) 傳回一組 H3 單元格的標識碼 ARRAY(以 BIGINT 表示),對應於指定解析度下最小的六邊形或五邊形集合,能夠完全涵蓋輸入的線性或面積地理區域。
h3_coverash3string(geographyExpr, resolutionExpr) 返回對應於指定解析度的最小六邊形或五邊形集合的 H3 單元格標識碼陣列(以字符串表示),這些集合可完全覆蓋輸入的線形或面積地理区域。
h3_longlatash3(longitudeExpr, latitudeExpr, resolutionExpr) 依據指定的解析度,傳回與提供經度和緯度相對應的 H3 單元格 ID(以 BIGINT 表示)。
h3_longlatash3string(longitudeExpr, latitudeExpr, resolutionExpr) 傳回 H3 儲存格 ID(以十六進位字串形式)對應於指定解析度的經度和緯度。
h3_pointash3(geographyExpr,resolutionExpr) 傳回與指定解析度上所提供點對應的 H3 單元格標識碼(以 BIGINT 表示)。
h3_pointash3string(geographyExpr,resolutionExpr) 傳回與指定解析度上所提供點對應的 H3 單元格標識碼(以 STRING 表示)。
h3_polyfillash3(geographyExpr, resolutionExpr) 傳回與指定解析度的六邊形或五邊形相對應的 H3 單元格 ID 陣列(以 BIGINT 表示),這些單元格是由輸入的地理區域所包含。
h3_polyfillash3string(geographyExpr, resolutionExpr) 傳回對應於指定解析度之六邊形或五邊形的 H3 單元格標識碼的 ARRAY(以 STRING 表示),這些形狀位於輸入的地理區域內。
h3_tessellateaswkb(geographyExpr, resolutionExpr) 使用指定解析度的 H3 單元格,返回輸入地理區域的網格化結果。
h3_try_coverash3(geographyExpr, resolutionExpr) 傳回 H3 單元格標識符的 ARRAY(以 BIGINT 表示),對應至指定解析度下完全覆蓋輸入線性或面積地理位置的最小六邊形或五邊形集合;如果第一個參數無效,則傳回 NULL。
h3_try_coverash3string(geographyExpr, resolutionExpr) 返回一個包含 H3 cell ID(表示為字串)的陣列,這些 ID 對應於指定解析度下,完全覆蓋輸入線性或區域地理的最小六邊形或五邊形集合;若第一個參數無效,則返回 NULL。
h3_try_polyfillash3(geographyExpr,resolutionExpr) 傳回與指定解析度的六邊形或五邊形相對應的 H3 單元格 ID 陣列(以 BIGINT 表示),這些單元格是由輸入的地理區域所包含。
h3_try_polyfillash3string(geographyExpr,resolutionExpr) 傳回對應於指定解析度之六邊形或五邊形的 H3 單元格標識碼的 ARRAY(以 STRING 表示),這些形狀位於輸入的地理區域內。
h3_try_tessellateaswkb(geographyExpr, resolutionExpr) 返回使用指定解析度的 H3 單元格對輸入地理資訊進行的鑲嵌構造,如果第一個參數無效或函數無法計算鑲嵌,則返回空值。

匯出

功能 描述
h3_boundaryasgeojson(h3CellIdExpr) 傳回 H3 單元格的多邊形界限,格式為 GeoJSON。
h3_boundaryaswkb(h3CellIdExpr) 傳回輸入 H3 單元格的多邊形界限,以 WKB 格式呈現。
h3_boundaryaswkt(h3CellIdExpr) 返回輸入 H3 單元格的多邊形界限,格式為 WKT。
h3_centerasgeojson(h3CellIdExpr) 返回輸入的 H3 儲存格中心,並以 GeoJSON 格式表示為一個點。
h3_centeraswkb(h3CellIdExpr) 以 WKB 格式傳回輸入 H3 儲存格的中心作為點
h3_centeraswkt(h3CellIdExpr) 以 WKT 格式傳回輸入 H3 儲存格的中心點。

轉換次數

功能 描述
h3_h3tostring(h3CellIdExpr) 將輸入 H3 儲存格識別碼轉換為其相等的十六進位字串表示。
h3_stringtoh3(h3CellIdStringExpr) 將預期為代表 H3 單元格識別碼的十六進位字串的輸入,轉換為對應的 H3 單元格識別碼的 BIGINT 表示。

謂詞

功能 描述
h3_ischildof(h3CellId1Expr, h3CellId2Expr) 如果第一個 H3 單元格標識碼等於第二個 H3 單元格標識碼,或為其子系,則傳回 true。
h3_ispentagon(h3CellIdExpr) 如果輸入的 BIGINT 或十六進位 STRING 對應到一個五邊形的 H3 單元格,則返回 true。

有效期

功能 描述
h3_isvalid(expr) 如果輸入 BIGINT 或 STRING 是有效的 H3 單元格標識碼,則傳回 true。
h3_try_validate(h3CellIdExpr) 如果輸入值對應至有效的 H3 單元格標識符,則傳回 BIGINT 或 STRING 類型的輸入值,否則傳回 NULL。
h3_validate(h3CellIdExpr) 如果輸入值對應至有效的 H3 單元格標識符,則傳回屬於 BIGINT 或 STRING 類型的輸入值,否則會發出錯誤。
功能 描述
h3_distance(h3CellId1Expr, h3CellId2Expr) 傳回兩個輸入 H3 單元格標識碼的網格線距離。
h3_hexring(h3CellIdExpr, kExpr) 將傳回一個 H3 單元格的 ID 陣列,該陣列形成一個以原點 H3 單元格為中心且距離原點 H3 單元格的網格距離為 k 的中空六邊形環。
h3_kring(h3CellIdExpr, kExpr) 傳回距離原始單元格標識碼 k 以内的 H3 單元格標識碼。
h3_kringdistances(h3CellIdExpr, kExpr) 傳回所有 H3 單元格標識碼(以長整數或字串表示)與原點 H3 單元格標識碼的網格線距離 k ,以及其與原點 H3 單元格標識碼的距離。
h3_try_distance(h3CellId1Expr,h3CellId2Expr) 傳回相同解析度之兩個輸入 H3 單元格標識碼的網格線距離,如果未定義距離,則傳回 NULL。

遍歷

功能 描述
h3_maxchild(h3CellIdExpr, resolutionExpr) 傳回在指定解析度上輸入 H3 單元格中最大值的子單元格。
h3_minchild(h3CellIdExpr, resolutionExpr) 傳回指定解析度上輸入 H3 單元格最小值的子系。
h3_resolution(h3CellIdExpr) 傳回輸入 H3 單元格標識碼的解析度。
h3_tochildren(h3CellIdExpr, resolutionExpr) 傳回指定解析度上輸入 H3 單元格識別碼之子系 H3 單元格標識碼的陣列。
h3_toparent(h3CellIdExpr,resolutionExpr) 傳回指定解析度上輸入 H3 單元格標識碼的父 H3 單元格標識碼。

壓縮

功能 描述
h3_compact(h3CellIdsExpr) 盡可能將 H3 單元編號的輸入集合壓縮到最小。
h3_uncompact(h3CellIdsExpr, resolutionExpr) 將 H3 網格單元識別碼的輸入集合解壓縮為指定的解析度。