12
9

More than 3 years have passed since last update.

OSMnxを用いて,オープンストリートマップから道路ネットワークデータを取得しよう.

Last updated at Posted at 2019-09-11

express_road.jpg

道路ネットワークデータについて

道路ネットワークデータは、node(点)部分とそのnodeとnodeを結んだedge(線)で構成されています。
いわゆる「グラフ理論」と呼ばれる分野です。

GPSの走行データについては、専門用語で「プローブデータ」と呼ばれています。なのでこのあたりの領域を調べる際には、
"道路ネットワーク" "プローブデータ" "GPS" などを組み合せて探してみましょう。

OSMnxについて

南カリフォルニア大学の都市計画学部の教授である Geoff Boeingさんが提供してくれているパッケージです.
geoff-boeing-headshot-1.jpg

OSMnx: Python for Street Networks

以下の記事でOSMnxを用いた道路ネットワークの可視化が取り上げられています.

Gigazin:世界各都市の道路が向いている方角が可視化されたグラフを比べてみると何がわかるのか?

API経由で道路ネットワークデータを取得しよう。

事前にパッケージをインストールしておきます。

brew install spatialindex
pip3 install osmnx 
pip3 install pandas
pip3 install csv
makeData.py
import pandas as pd
import osmnx as ox
import csv

def DriveWay(PREFECTURE):
        # 道路ネットワークデータを取得。
        G = ox.graph_from_place(f'{PREFECTURE}, Japan', network_type='drive')

        # グラフデータからDataFrame形式に変更。
        # nodeの情報
        node=pd.DataFrame(ox.save_load.graph_to_gdfs(G, nodes=True, edges=True, node_geometry=True, fill_edge_geometry=True)[0])
        # edgeの情報
        edge=pd.DataFrame(ox.save_load.graph_to_gdfs(G, nodes=True, edges=True, node_geometry=True, fill_edge_geometry=True)[1])
        # csv形式で出力。
        node.to_csv(f'out/DriveWay_Node_{PREFECTURE}.csv')
        edge.to_csv(f'out/DriveWay_Edge_{PREFECTURE}.csv')

        # 道路ネットワークを可視化
        ox.plot_graph(G)

def main():
        PRE_LIST=["TOKYO","CHIBA","KANAGAWA"]
        for PREFECTURE in PRE_LIST:
                print(f'{PREFECTURE} IN PROGRESS')
                DriveWay(PREFECTURE)

if __name__ == "__main__":
  main()

出力結果(横浜市)

yokohama.png

yamashita.png

いい感じに横浜港エリアの道路ネットワークが見えてきました。
これが無料ってすごいですね。

ぜひOSMnx使ってみてください。

今回の記事に興味を持ってくれたかたは↓↓↓もチェックしてみてください!
OSMnxで取得した道路ネットワークデータから極座標グラフを作ろう!

12
9
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
12
9