🛣️

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由来だったと思うけど、綺麗な状態で使えるのはうれしい。

MIERUNEのZennブログ

Discussion