OSM データから POI データを抽出する

OSM データの読みだしには Overpass API というのがあり、それを介してデータを取得することができる。

手取り早くこれを試すには GUI で Overpass API を試せるサイトがあるので、これを使ってみる↓

https://overpass-turbo.eu/


この左側に以下のクエリを書く。

この例では "public_transport"="station" として、駅データを抽出しているが、条件を変更することで、いろいろなデータを抽出できるはずだ。 OSM の参考リンク

[out:json];
area["name"~"日本"];
node(area)["public_transport"="station"];
out body;


で「実行」ボタンを押すと、以下のように駅一覧が地図上にマークされる。

f:id:daisuke-t-jp:20200217224329p:plain

さらにこの結果を JSON で欲しければ、

メニューを「エクスポート」→「クエリ」と進んでいき

「OverpassQL (コンパクト) へ変換」をクリックする。

すると API にクエリがくっついた形のリンクがあるので、これを使用する。 たとえば、今回の場合だと

https://overpass-api.de/api/interpreter?data=%5Bout%3Ajson%5D%3Barea%5B%22name%22%7E%22%E6%97%A5%E6%9C%AC%22%5D%3Bnode%5B%22public%5Ftransport%22%3D%22station%22%5D%28area%29%3Bout%3B%0A

になり、駅一覧の JSON データが得られる。


プログラムやバッチ的にやりたい時は

たとえば Python の Overpass API ラッパーが用意されていたりするので、これを使うと良さそうだ。

https://github.com/mvexel/overpass-api-python-wrapper