道路ネットワークデータについて
道路ネットワークデータは、node(点)部分とそのnodeとnodeを結んだedge(線)で構成されています。
いわゆる「グラフ理論」と呼ばれる分野です。
GPSの走行データについては、専門用語で「プローブデータ」と呼ばれています。なのでこのあたりの領域を調べる際には、
"道路ネットワーク" "プローブデータ" "GPS" などを組み合せて探してみましょう。
OSMnxについて
南カリフォルニア大学の都市計画学部の教授である Geoff Boeingさんが提供してくれているパッケージです.
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()
出力結果(横浜市)
いい感じに横浜港エリアの道路ネットワークが見えてきました。
これが無料ってすごいですね。
ぜひOSMnx使ってみてください。
今回の記事に興味を持ってくれたかたは↓↓↓もチェックしてみてください!
OSMnxで取得した道路ネットワークデータから極座標グラフを作ろう!