OSMnxで取得した道路ネットワークデータから極座標グラフを作ろう!


道路ネットワークの取得

道路ネットワークの取得方法は、前回の記事↓↓↓を参考にしてください。
OSMnxを用いて,オープンストリートマップから道路ネットワークデータを取得しよう。

前回取得した道路ネットワークデータの可視化結果(横浜市)

このデータを元に、方向ごとに集計して可視化していきます。

今回つくるもの:極座標グラフ

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

データの分布

bearingdata.py
import pandas as pd
import osmnx as ox
import matplotlib.pyplot as plt

G = ox.graph_from_place(f'Yokohama, Kanagawa, Japan', network_type='drive')

# calculate edge bearings and visualize their frequency
G = ox.add_edge_bearings(G)
bearings = pd.Series([data['bearing'] for u, v, k, data in G.edges(keys=True, data=True)])
ax = bearings.hist(bins=30, zorder=2, alpha=0.8)
xlim = ax.set_xlim(0, 360)
ax.set_title('street network bar chart')
plt.show()

横浜市の道路の方向データ

極座標の作成

bearingplot.py
# polar plot
import numpy as np
n = 30
count, division = np.histogram(bearings, bins=[ang*360/n for ang in range(0,n+1)])
division = division[0:-1]
width =  2 * np.pi/n
ax = plt.subplot(111, projection='polar')
ax.set_theta_zero_location('N')
ax.set_theta_direction('clockwise')
bars = ax.bar(division * np.pi/180 - width * 0.5 , count, width=width, bottom=0.0)
ax.set_title('street network polar coordinates', y=1.1)
plt.show()

横浜市の道路の方向の極座標グラフ

他の市でもやってみました。

千葉市

福岡市

那覇市

 

まとめ

いかがでしょうか。今回は横浜市を例に可視化してみました。
もっといろいろな都市を可視化して比べてみたいですね。