トップページ -> データベース研究スタート -> インタラクティブ,ダイナミックな地図(OpenStreetMap を利用) -> Python の overpass を用いて OpenStreetMap のデータをダウンロード(書きかけ)
[サイトマップへ]  

Python の overpass を用いて OpenStreetMap のデータをダウンロード(書きかけ)

OpenStreetMap (http://www.openstreetmap.org)は, 世界規模の無料で使えるオンラインの地図データベースシステム.

Python の overpass パッケージは, OpenStreetMap の Overpass API を Python から使えるようにする機能を持ったソフトウエア.

先人に感謝

キーワード: OpenStreetMap, Overpass API, Python, overpass, geopandas, GeoJSON, 地図データダウンロード, ポイント, ライン, エリア, タグ


前もって準備しておくこと

前準備として,Anaconda のインストールが終わっていること. 手順を下に説明しています.

Anaconda のインストール

Python 3 の開発環境である Anacondaをおすすめ.Window でのインストール手順は次の通りです(Linuxでも同様の手順です).

  1. https://www.continuum.io/downloads#windowsを開く

  2. Download」をクリックする.

  3. ダウンロードが始まるので確認する.

  4. ダウンロードした .exe ファイルを実行して,Anacondaをインストール.

Python のパッケージ overpass のインストール

  1. Windows のときは,コマンドプロンプトを管理者として実行

    ※ Linux のときは,端末を開く(pyenvを使っているときは pip の実行に管理者権限を必要としない)

  2. 今のコマンドプロンプトで,次のコマンドを実行
    pip install overpass 
    

Python のパッケージ geopandas のインストール

あとで GeoJSON オブジェクトを扱いたいので,そのためのパッケージもインストールする. Anaconda プロンプトを管理者として開き,次のコマンドを実行.

  1. Windows のときは,コマンドプロンプトを管理者として実行

    ※ Linux のときは,端末を開く(pyenvを使っているときは pip の実行に管理者権限を必要としない)

  2. 今のコマンドプロンプトで,次のコマンドを実行

    ※ Anaconda や Miniconda を使っていないときは conda コマンドがないので pip コマンドを使ってください

    pip install  geopandas
    

Google Map を用いて緯度経度を調べてみる

あとでデータをダウンロードするときのために,Google Map を使って緯度・経度を調べてみる

  1. Google Map を開く

    https://www.google.co.jp/maps

  2. Google Map で好きな場所に移動する

  3. 右クリックして,「この場所について」を選ぶ

  4. 緯度,経度が表示されるので,メモしておく


Python を用いて OpenStreetMap のデータをダウンロード

Anacondaに入っている開発環境 spyder を実行し,右下の ipython コンソールを使うのが簡単.

  1. Python で,ダウンロードしたい地図の緯度と経度の設定

    次の Python プログラムを実行

    ※さきほど調べた緯度と経度

    (実行例)

    import overpass
    lat = 34.4461
    lon = 133.2315
    api = overpass.API() 
    map_query = overpass.MapQuery(lat - 0.001, lon - 0.001, lat + 0.001, lon + 0.001)
    response = api.Get(map_query)
    

  2. 結果である response オブジェクトの確認

    GeoJSON 形式のデータになっていることを確認

    print(response)
    

  3. 欲しいデータのタイプの設定

    OpenStreetMapの「ライン」のデータのうち,「highway」であるようなデータが欲しいとする. OpenStreetMap には,ポイントやラインやエリアには,「highway」のようなタグ付いている.

    次の Python プログラムを実行

    書きかけ
    

  4. ライン」のデータの確認

    次の Python プログラムを実行

    書きかけ
    

  5. ノード」のデータの確認

    次の Python プログラムを実行

    書きかけ
    

まとめ