トップページ -> データベース関連技術 -> インタラクティブ,ダイナミックな地図(OpenStreetMap を利用) -> Python の overpy を用いて OpenStreetMap のデータをダウンロード
[サイトマップへ], [サイト内検索へ]

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

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

先人に感謝

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


前準備

Python のインストール,pip と setuptools の更新,Python 開発環境のインストール

Windows の場合

  1. Python のインストール

    Python の URL: http://www.python.org/

    インストール手順の詳細は: 別ページで説明している.

  2. pip と setuptools の更新Python 開発環境(JupyterLab, spyder)のインストール

    コマンドプロンプトを管理者として実行し,次のコマンドを実行.

    python -m pip install -U pip setuptools
    python -m pip install -U jupyterlab jupyter jupyter-console jupytext spyder
    

Ubuntu の場合

システム Python を使用(インストール操作は不要)

  1. pip と setuptools の更新Python 開発環境(JupyterLab, spyder)のインストール

    次のコマンドを実行.

    sudo apt -yV install python3-dev python3-pip python3-setuptools
    sudo apt -yV install jupyter-qtconsole jupyter-notebook python3-jupyter-client python3-jupyter-console python3-spyder spyder3
    

(Windowsの場合のみ)Visual C++ ビルドツール (Build Tools) のインストール

Windows での Visual C++ ビルドツール (Build Tools) のインストール手順: 別ページで説明している.

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

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

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

    [image]
  2. 今のコマンドプロンプトで,次のコマンドを実行
    pip install --ignore-installed --upgrade overpy
    

    [image]
  3. インストールできたことの確認

    バージョン番号が表示されれば OK

    pip show overpy
    

    [image]

※ GitHub からソースコードをダウンロードしてインストールしたい場合

  1. Visual Studio の x64 Native Tools コマンドプロンプト管理者として起動する

    ※ 起動は,Windows のメニューで「Visual Studio 20..」の下の「x64 Native Tools コマンドプロンプト (Command Prompt)」(あるいは類似名のもの)を選ぶ

    ※ 「x64 Native Tools コマンドプロンプト (Command Prompt)」がないときは, Visual C++ ビルドツールのインストールを行う. Visual C++ ビルドツールのインストール手順は,別ページで説明している.
    .
  2. x64 Native Tools コマンドプロンプトで,次のコマンドを実行
    python -m pip instal --upgrade pip
    pip install git+https://github.com/DinoTools/python-overpy
    

    [image]
  3. 終了の確認

    エラーメッセージが出ていないことを確認

    [image]
  4. インストールできたことの確認

    バージョン番号が表示されれば OK

    pip show overpy
    

    [image]

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

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

  1. Google Map を開く

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

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

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

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

    [image]

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

  1. Jupyter Qt Console を起動

    jupyter qtconsole
    

    [image]

    Python プログラムを動かして,結果を見たい.

    Jupyter Qt ConsolespyderPyCharmPyScripter が便利である. Windows では,スタートメニューの「IDLE (Python ...)」も便利である.

    ※ 「jupyter qtconsole」を入れたのに,jupyter qtconsole起動しない という場合には,次の操作で,インストールを行ってから,もう一度試してみる.

    python -m pip install -U jupyterlab jupyter jupyter-console jupytext spyder
    
  2. Python で,ダウンロードしたい地図の緯度と経度の設定

    次の Python プログラムを実行

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

    (実行例)

    lat = 34.4461
    lon = 133.2315
    

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

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

    引き続き、次の Python プログラムを実行

    type = 'highway'
    

    [image]
  4. lat, lon, type の設定が終わったところで,spyder のコンソールで,次のプログラムを実行し,データのダウンロードと表示を行う.

    ※ OpenStreetMapもタイル地図だが,次のプログラムでは,最下位のレイヤ(もっとも詳細なレイヤ)からダウンロードが始まる

    次の Python プログラムを実行

    import overpy
    api = overpy.Overpass()
    result = api.query("""
        way(%f, %f, %f, %f) [%s];
        (._;>;); 
       out body;
        """ % (lat - 0.01, lon - 0.01, lat + 0.01, lon + 0.01, type) )
    
    for way in result.ways:
        print("Name: %s" % way.tags.get("name", "n/a"))
        print("  Highway: %s" % way.tags.get("highway", "n/a"))
        print("  Nodes:")
        for node in way.nodes:
            print("    Lat: %f, Lon: %f" % (node.lat, node.lon))
    

    [image]

    表示を確認.(道路がないようなところを緯度経度で指定していると表示は空になる). 道路のデータである.緯度経度が並んでいる.

    [image]
  5. ライン」のデータの確認

    次の Python プログラムを実行

    result.ways
    

    [image]
  6. ノード」のデータの確認

    次の Python プログラムを実行

    result.nodes
    

    [image]

まとめ


本サイトは金子邦彦研究室のWebページです.サイトマップは,サイトマップのページをご覧下さい. 本サイト内の検索は,サイト内検索のページをご利用下さい.

問い合わせ先: 金子邦彦(かねこ くにひこ) [image]