pri: 経路の空間・時間インデックスを静的に張る
... なんかすごい難しいことに思えるが、やろうとしていることは単純で、
- GPS(GNSS)で記録した経路データをGoogle Plus Code(数メートル四方のメッシュ)単位、または1000点単位に区切る
- 区切った経路に256bitsのIDをSHA256で振って、jsonに保存する
- 区切った経路をそれぞれ 空間インデックス および 時間インデックス に保存する
空間インデックス
空間インデックスは、Plus Code (open location code) の番号が振られた矩形内に所属するオブジェクトのリストとなる。オブジェクトは常に 追加日時でソートされる 。オブジェクトは更新されないことが前提となっている。
オブジェクトは100オブジェクト毎に ページ を構成し、1ページ毎にjsonファイルが用意される。
時間インデックス
時間インデックスは、絶対時刻(UTC)を1時間単位に区切り、その区間に所属するオブジェクトのリストとなる。経路情報の場合、1オブジェクトが数秒〜数分の長さを占めることになるため1オブジェクトが複数の時間インデックスに所属する可能性がある。
オブジェクトは100オブジェクト毎に ページ を構成し、1ページ毎にjsonファイルが用意される。
インデックスのインデックス
... う〜ん。。良いアイデアが無い。。パスを適当に区切るので、その区切り毎に "下位に1つでもオブジェクトが存在する区切りのリスト" を保持するくらいか。。?
作成するファイルのまとめ
-
8R72J2XJ+85
に対応する1ページは<root>/loc/8R/72/J2/XJ85/0.json
-
2023-03-21T09:42:52Z
に対応する1ページは<root>/tim/2023/03/21/09/0.json
- 空間インデックスのインデックス
<root>/loc/index.json
、<root>/loc/8R/index.json
等 - 時間インデックスのインデックス
<root>/tim/index.json
、<root>/tim/2023/index.json
等
GPXファイルの分割
試しに千葉県に行ったとき https://twitter.com/priokuoku/status/1638160123121242115 の経路ログを分割してみる。収録はAndroidのGPSLogger https://github.com/BasicAirData/GPSLogger で行っていて、 lat
lon
ele
の座標と time
のISO時刻の他に、 sat
としてGPS衛星の数も記録しているのでそちらも残すことにする。
適当にスクリプト書いて:
こんな感じ。
思ったより細切れになるな。。自動車とかの経路は扱わないから別にこれでも良いけど、これ全ての点で隣接するセグメントを含むように間を補完しないとダメかもな。。