空間分析的格線系統
本文說明在 BigQuery 中使用地理空間格線系統 (例如 S2 和 H3) 的目的和方法,以便在標準化地理區域中整理空間資料。並說明如何為應用程式選擇合適的格線系統。這份文件適用於任何在 BigQuery 中使用空間資料和執行空間分析的使用者。
使用空間分析的概略說明和挑戰
空間分析可協助顯示實體空間中的實體 (商店或房屋) 與事件之間的關係。使用地球表面做為實體空間的空間分析稱為地理空間分析。BigQuery 提供地理空間地圖和函式,可讓您大規模執行地理空間分析。
許多地理空間用途都涉及匯總特定區域內的資料,並比較這些區域的統計匯總資料。這些區域會以多邊形形式顯示在空間資料庫資料表中。在某些情況下,這種方法稱為「統計地理區域」。為提供更完善的報表、分析和空間索引功能,您必須將地理區域範圍的判斷方式標準化。舉例來說,零售商可能會想分析自家商店所在地區,或考慮設立新店的地區,隨著時間推移的客層變化。或者,保險公司可能想分析特定地區的自然災害風險,以便進一步瞭解房產風險。
由於許多地區都設有嚴格的資料隱私權法規,因此含有位置資訊的資料集必須去識別化或部分去識別化,以保護資料中代表的個人隱私權。舉例來說,您可能需要針對含有未償抵押貸款資料的資料集,執行地理信用集中度風險分析。如要去識別資料集,讓資料集符合法規要求,您必須保留資源位置的相關資訊,但請避免使用特定地址或經緯度座標。
在上述範例中,這些分析的設計者會面臨下列挑戰:
- 如何繪製區域邊界,以便分析時間變化?
- 如何使用現有的行政區域邊界,例如人口普查區或多解析度格線系統?
本文件旨在解答這些問題,說明各項選項、說明最佳做法,並協助您避免常見的陷阱。
選擇統計區域時的常見陷阱
房地產銷售、行銷廣告活動、電子商務出貨和保險政策等業務資料集,都適合用於空間分析。這些資料集通常包含方便的空間彙整鍵,例如人口普查區、郵遞區號或城市名稱。公開資料集包含人口普查區、郵遞區號和城市的代表性資料,因此很適合用來做為統計匯總的行政區域邊界。
雖然這些行政區域和其他行政區域看似方便,但也有缺點。此外,這些邊界在數據分析專案的初期階段可能運作良好,但在後期階段就會出現缺點。
郵遞區號
郵遞區號用於在全球各國傳送郵件,由於這種用途普遍存在,因此經常用於空間和非空間資料集的參照位置和區域。以上述抵押貸款為例,資料集通常需要先經過去識別化處理,才能執行下游分析。由於每個房源地址都包含郵遞區號,因此可以存取郵遞區號參照表,這也是用於空間分析的彙整鍵方便的選項。
使用郵遞區號的缺點是,郵遞區號不會以多邊形表示,而且沒有單一可靠的郵遞區號區域來源。此外,郵遞區號無法準確反映真實的人類行為。美國最常用的郵遞區號資料來自 美國人口普查局 TIGER/Line 形狀檔,其中包含名為 ZCTA5 (郵遞區號統計區) 的資料集。這個資料集代表郵遞區號邊界,這些邊界是根據郵件投遞路線推算而來。不過,有些代表個別建築物的郵遞區號完全沒有邊界。其他國家/地區也出現這個問題,因此很難建立單一全球事實資料表,其中包含可在各系統和資料集中使用的郵遞區號邊界權威資料集。
此外,全世界並沒有統一的郵遞區號格式。有些是數字 (長度為三到十位數),有些則是英數字元。國家/地區之間也有重疊,因此必須將原產地和郵遞區號分別儲存在不同的欄位中。部分國家/地區不使用郵遞區號,因此分析作業會變得更加複雜。
人口普查區、城市和縣
有些行政區 (例如人口普查區、城市和縣) 不會受到缺乏權威邊界的問題影響。例如,城市的邊界在大多數情況下都已由政府機關明確劃定。美國人口普查局和大多數其他國家/地區的類似機構,都會明確定義人口普查區。
使用這些行政區域和其他行政區域的缺點是,這些區域會隨時間變動,且彼此在地理位置上並不一致。縣和城市會合併或分開,有時也會更名。美國的人口普查區每 10 年更新一次,其他國家/地區的更新時間則不盡相同。令人困惑的是,在某些情況下,地理邊界可能會變更,但其專屬 ID 仍維持不變,因此很難分析及瞭解時間變化。
部分行政區域的另一個常見缺點,是這些區域是獨立的區域,沒有地理階層。除了比較個別區域,常見的需求還包括比較各區域的匯總資料與其他匯總資料。舉例來說,實作 Huff 模型的零售商可能會想使用多個距離執行這項分析,但這些距離可能與商家其他地方使用的管理區域不符。
單一和多解析度的格線
單一解析度的格線由獨立的單位組成,這些單位與包含這些單位的較大區域並無地理關聯。舉例來說,郵遞區號與較大行政區的邊界之間的地理關係不一致,例如可能包含郵遞區號的城市或縣。在空間分析中,您必須瞭解不同區域之間的關聯,而無須深入瞭解定義區域多邊形的歷史和法規。
多解析度格線有時稱為階層式格線,因為每個縮放層級的格線會細分為較高縮放層級的較小格線。多解析度格線包含明確定義的單位階層,這些單位包含在較大的單位中。舉例來說,人口普查區包含區塊群組,而區塊群組又包含區塊。這種一致的階層關係對於統計匯總非常實用。舉例來說,您可以計算區域內所有區塊群組的平均收入,藉此顯示包含區塊群組的人口普查區的平均收入。但郵遞區號無法做到這一點,因為所有郵遞區都位於單一解析度。由於沒有標準方法可定義相鄰區域,或比較不同國家/地區的收入,因此很難比較某個區域與其周圍區域的收入。
S2 和 H3 格狀系統
本節將概略說明 S2 和 H3 格線系統。
S2
S2 幾何圖形是 Google 開發的開放原始碼分層格線系統,於 2011 年公開發布。您可以使用 S2 格線系統,為每個格子分配專屬的 64 位元整數,以便整理及編入空間資料索引。分辨率共有 31 個等級。每個單元格都以正方形表示,用於球形幾何運算 (有時稱為地理位置)。每個方塊都會再細分為四個較小的方塊。鄰區檢查是指識別相鄰的 S2 單元的能力,但定義較不清楚,因為正方形可有四個或八個相關鄰區,取決於分析類型。以下是多解析度的 S2 格線儲存格範例:
BigQuery 會使用 S2 單元格為空間資料建立索引,並提供多個函式。舉例來說,S2_CELLIDFROMPOINT
會傳回 S2 單元 ID,其中包含地球表面上特定層級的點。
標題 3
H3 是 Uber 開發的開放原始碼階層格線系統,Overture Maps 也使用這項系統。解析度共有 16 個等級。每個儲存格都會以六邊形表示,而且與 S2 一樣,每個儲存格都會指派一組專屬的 64 位元整數。在涵蓋墨西哥灣的 H3 單元格可視化圖中,較小的 H3 單元格並未完全包含在較大的單元格中。
每個儲存格都會細分為七個較小的六邊形。雖然這並非精確的劃分方式,但在許多用途上都相當實用。每個儲存格都與六個相鄰儲存格共用邊緣,簡化相鄰儲存格檢索作業。舉例來說,每個層級都有 12 個五邊形,但與相鄰的五個鄰居共用邊,而非六個。雖然 BigQuery 不支援 H3,但您可以使用 Carto Analytics Toolbox for BigQuery,為 BigQuery 新增 H3 支援。
雖然 S2 和 H3 程式庫都是開放原始碼,並可透過 Apache 2 授權取得,但 H3 程式庫的說明文件較為詳細。
HEALPix
另一個用於將球面劃分成格式的方案 (通常用於天文學領域) 稱為階層等面積等緯度像素化 (HEALPix)。HEALPix 與階層像素深度無關,但運算時間保持不變。
HEALPix 是球體的階層等面積像素化方案。用於呈現和分析天文 (或其他) 球體上的資料。除了固定的運算時間外,HEALPix 格線還具有下列特性:
- 格狀儲存格是階層式,可維持父項-子項關係。
- 在特定階層中,每個單元格都具有相同的面積。
- 這些單元格會依照等緯度分布,可提升光譜方法的效能。
BigQuery 不支援 HEALPix,但許多語言 (包括 JavaScript) 都實作了 HEALPix,因此您可以輕鬆在 BigQuery 使用者定義函式 (UDF) 中使用 HEALPix。
各個索引策略的使用案例
本節提供一些範例,協助您評估最適合您用途的格線系統。
許多分析和報表用途都會用到視覺化功能,不論是用於分析本身,還是用於向業務利益相關者製作報表。這些視覺化效果通常會以 Web Mercator 呈現,這是 Google 地圖和許多其他網路地圖應用程式使用的平面投影法。在視覺化效果至關重要的情況下,H3 單元格可提供主觀上更優質的視覺化體驗。S2 格線 (尤其是高緯度) 的扭曲程度通常比 H3 更嚴重,且在平面投影中顯示時,不會與低緯度的格線一致。
H3 單元可簡化鄰近比較在分析中的重要角色。舉例來說,您可以比較城市的各區,藉此決定哪個區域適合開設新的零售店或配送中心。這項分析需要針對特定儲存格與相鄰儲存格比較的屬性進行統計計算。
S2 格狀區域更適合用於全局性質的分析,例如涉及距離和角度測量的分析。Niantic 的《Pokémon Go》會使用 S2 格來決定遊戲資產的放置位置和分發方式。S2 單元格的確切細分屬性可確保遊戲素材資源可平均分散至全球各地。
後續步驟
- 如要瞭解空間分群的最佳做法,請參閱 BigQuery 的空間分群 - 最佳做法。
- 瞭解如何從不完整的資料建立空間階層。
- 如要瞭解 GitHub 上的 S2 幾何圖形,請參閱相關說明。
- 如要瞭解 GitHub 上的 H3 幾何圖形,請參閱相關說明。
- 請參閱使用 H3、BigQuery 和 Earth Engine 的範例。