🛣️
pgRoutingとOpenStreetMap / OvertureMapsで経路検索
© OpenStreetMap contributors, Overture Maps Foundation
OpenStreetMap
レシピ
- 北海道のosm.pbfをダウンロード
- QuackOSMでpbf->Parquet
- DuckDBで道路データをフィルタリング、GPKG化(44万地物)
- PostGISに投入(QGISを使うと楽ちん)
- 良い感じにcostなどの必要カラムを作成して、
pgr_createTopology
を実行して、ネットワークを作成。
経路検索する
問題なく経路検索出来るけど、結果に問題がある。
最適経路のラインが途切れ途切れ
わかりにくいけど、OSMデータはエッジが綺麗になってない(=交差点で必ずしもラインが切れていない。例えば赤色のライン)
たぶん端点から端点への接続をもってネットワークを構築している気がするので、OSMデータの道路データはそのまま使うべきではなく、前もって交差点でラインを区切るようにしないとならなさそう。osm2pgrouting
とか使うと良い感じになるっぽい。ただし使い始めるのと、使い方がやや大変そうだった(xmlにしないとならないし、規模が大きくなると時間がかかる気がする)。
OvertureMaps
OvertureMapsのネットワークデータは結構良い感じだったはずなのでこちらでも試してみる。
データのダウンロード
北海道の範囲のsegment
をダウンロードする。Pythonのoverturemaps
モジュールを利用すると簡単。
overturemaps download --bbox=139.7224,41.3446,145.9411,45.5966 -f geoparquet --type=segment -o segment.parquet
経路検索してみる
なんやかんやしてPostgreSQLに投入しておく。テーブル名はsegment
で、60万地物。トポロジーの作成には5分程度かかった。
良い感じのルートが得られた
OvertureMapsの道路はOSM由来だったと思うけど、綺麗な状態で使えるのはうれしい。
Discussion