#はじめに
オープンソースの「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