このプロジェクトは、国内逆ジオコーディングのために、インメモリデータ構造を構築するためのスクリプトです。
このスクリプトは、指定されたGeoJSONファイルを基に、インメモリで使用するためのデータ構造を構築します。生成されるファイルはjsonとpickleです。
データ構造はtrieを縮約したものになっています。
行政区域文字列は、行政区域の住所を示す文字列で、都道府県と市区町村からなります。
例1: 東京都渋谷区, 例2: 北海道松前郡福島町
GeoJSONファイルは行政区域として(都道府県, 郡, 市町村, 区)を持っており、 trie上では (都道府県, 郡+市町村+区)が'/'で区切られた文字列で保存されています。
GeoJSONファイルは、2024年現在、国土数値情報 > 行政区域データの全国のところからダウンロードしたファイルを解凍し、N03_20240101.geojson として得られます。
- Python 3.12以上
- click モジュール
以下のコマンドを実行して必要なモジュールをインストールしてください。
pipenv install以下のコマンドを実行してフォルダ構造を構築します。
pipenv run python build_trie.py <geojsonpath> --outjsonpath <outjsonpath> --outpicklepath <outpicklepath> | tee <logpath>- : 行政区域を表すGeoJSONファイルのパス。
- : json形式で表現したtrieの保存先ファイルパス。
- : pickle形式で表現したtrieの保存先ファイルパス。
- : ログの保存先ファイルパス。
その他のオプションは以下のとおりです。
--unit u: 出力するgeocellをまとめる粒度の単位。同一市町村のgeocellをまとめるとき、1,2,4に対してそれぞれ2進数, 4進数, 16進数で同一市町村なら1桁削ることを行う。--resolution r: 16進の場合のgeocellの解像度。デフォルト値は9.--multiprocess: 並列処理を行うかどうか。
2フェーズあります。
(行政区域文字列) center (中心点がいずれかの市区町村に属するgeocellの個数) edges (行政区域の境界線が属しているgeocellの個数)
(行政区域文字列)
が2度