【Python】空間情報分析に便利なオープンソース「H3」のドキュメント日本語メモ


画像はUberのエンジニアリングブログより


はじめに


オープンソースの「H3」を触っています。
関数についてのドキュメントは豊富ですが、実行例が無いこと、オールイングリッシュであることが相まって、少しわかりづらい側面があります。
公式ドキュメントを捕捉する形で関数の一部をメモします。
注:網羅性は一切ありません。また、pythonで触っています。

H3とは

https://h3geo.org/
こちらの日本語記事にもあるため、詳細はそちらをご参照いただければと思いますが、

「H3」は、Uberによってオープンソースで開発されている、六角形をグリットとした、新しい座標系です。

画像は公式ドキュメントより

UberことUber Technologiesは、いわゆる白タクサービス、フードデリバリーサービスなどで有名ですが、
配車ごとの目的地や顧客現在地、車両現在地など、膨大な空間情報を扱い、

1)即時で最適なマッチングを実現
2)蓄積されたデータを機械学習を用いて分析・可視化

するためには、市区町村のような区分や正方形で区切られたグリッドはやや扱いづらいです。
(捕捉:正方形でもいいのですが、より円に近い六角形の方が最適な距離を求めるためには扱いやすいということです。詳しくは公式ドキュメント参照のこと)

そこで、彼らは新しい座標系を生み出し、2018年にオープンソース化しています
( ちなみに同社はdeck.gl他、空間の分析や可視化に役立つツールを多くオープンソース化しているようです)

関数とユースケースのメモ

以下、hexは'882f5a305dfffff'のような見た目の、H3Index型です。(ちなみにhexagon、六角形という意味の単語の略。)

Indexing

Inspection

Traversal

Traverse とは、「横切る」という意味の単語です。
ここでは、六角形のグリッドを横断し、近接グリッドのインデックスや、グリッド同士の距離・経路を求める関数が紹介されます。

kRing

maxKringSize

kRingDistances

hexRange

hexRangeDistances

原点のhexからk個分の距離に入っているグリッドのH3Indexを、距離ごとにまとめて返します

h3.hex_range_distances(h, k)

例↓

h3.hex_range_distances(h, 2)

出力↓

[{h自身},{隣接しているグリッド6つ分のH3Index},{2グリッド離れている12個のH3Index}]

hexRanges

hexRing

h3Line

h3LineSize

h3Distance

experimentalH3ToLocalIj

experimentalLocalIjToH3

Hierarchy

Regions

Unidirectional edges

Miscellaneous

参考

上でリンク張って紹介したサイトたち
https://eng.uber.com/visualizing-city-cores-with-h3/
https://qiita.com/gshirato/items/d8cc928c4131f3292b14