一、OSMnx概述
OSMnx是一個開源的Python地理空間數據可視化和分析工具包,基於OpenStreetMap數據源,可以用來分析城市的街道網路、生成全景地圖等。使用OSMnx,你可以輕鬆獲取城市的複雜路網和建築結構。同時,OSMnx允許你使用不同的分析方法,如自行車網路的生成、確定分層路網等。這個工具包的優勢在於,不必了解複雜的GIS或地理空間分析技術,就能快速的處理和可視化地理空間數據。
二、安裝OSMnx
要安裝OSMnx,首先需要確保你已經安裝了Python和JupyterNotebook。打開Anaconda Prompt或命令行控制台,輸入以下命令:
conda config --prepend channels conda-forge
conda create -n ox --strict-channel-priority osmnx
由於OSMnx包含大量的依賴關係,因此安裝時可能需要一些時間。安裝完成後,可以通過打開jupyter notebook來檢驗是否安裝完成。新建一個notebook,輸入以下代碼,檢查是否出錯:
import osmnx as ox
ox.config(log_console=True, use_cache=True)
place_name = "Piedmont, California, USA" #構建地點
graph = ox.graph_from_place(place_name)
ox.plot_graph(graph)
如果沒有任何錯誤,查看你的Jupyter Notebook,你應該可以看到從OpenStreetMap下載的Piedmont, 加利福尼亞州的道路網路。
三、獲取地理空間數據
在OSMnx中,獲取地理空間數據的方法非常容易。最常用的方法之一是通過place名稱獲取道路網路。可以按以下方式執行代碼來實現
import osmnx as ox
ox.config(log_console=True, use_cache=True)
place_name = "Piedmont, California, USA" #構建地點
graph = ox.graph_from_place(place_name)
ox.plot_graph(graph)
OSMnx還允許我們根據坐標範圍來獲取道路網路。要獲取地理空間範圍,請按以下方式執行代碼:
import osmnx as ox
ox.config(log_console=True, use_cache=True)
north, south, east, west = 37.79, 37.78, -122.41, -122.43
graph = ox.graph_from_bbox(north, south, east, west)
ox.plot_graph(graph)
除了道路網路,OSMnx還允許您獲取建築物、商店、運動設備等各種信息。以下是一些選擇的示例代碼:
# 獲取建築物和道路
G = ox.graph_from_point((37.79, -122.41), distance=750, network_type='all')
area = ox.project_gdf(ox.gdf_from_place('Berkeley, California'))
buildings = ox.buildings_from_place(place_name)
streets = ox.core.graph_to_gdfs(graph, nodes=False, edges=True, node_geometry=False, fill_edge_geometry=True)
# 獲取購物點和其他點
poi2 = ox.pois_from_place(place_name, amenities=['restaurant'])
# 獲取街道名
streets_names = ox.core.get_route_edge_attributes(graph, attribute='name')
四、生成具有地理意義的可視化圖像
OSMnx提供了幾種直接可視化圖像的方法,其中最常用的 метод是plot_graph()。以下代碼演示如何生成帶有彩色道路和節點類型的圖像。
import osmnx as ox
ox.config(log_console=True, use_cache=True)
place_name = "Piedmont, California, USA"
graph = ox.graph_from_place(place_name, network_type='drive')
fig, ax = ox.plot_graph(graph, node_size=0, edge_color=『y』, edge_linewidth=0.5, show=False, close=False)
fig.canvas.draw()
ax.set_title(『{} (drive network)』.format(place_name), fontsize=20)
plt.show()
可以看到我們繪製了一個擁有各種顏色的道路和點的圖像。
五、分析網路結構
OSMnx對分析和可視化街道網路非常適用。以下是OSMnx提供的一些分析方法:
1. 分層路網
跨越多個交通模式的「圖層」路網。如下所示,通過network_type參數值為all,OSMnx可以生成一個圖層路網。
G_all = ox.graph_from_place(place_name, network_type='all')
fig, ax = ox.plot_graph(G_all, node_size=0)
2. 生成街區
使用graph_from_address()函數生成地址。此函數需要一個字元串地址作為參數,例如「1600 Amphitheatre Parkway, Mountain View, CA」。使用此功能,您可以生成指定地址周圍的街區,如下圖所示
import osmnx as ox
ox.config(log_console=True, use_cache=True)
address = '955 Westwood Blvd, Los Angeles, CA' #構建地點
G = ox.graph_from_address(address, dist=750, network_type='drive')
fig, ax = ox.plot_graph(G)
fig.savefig('images/los-angeles.png', dpi=300, bbox_inches='tight')
六、自行車路網分析
OSMnx包含了許多功能,可以生成不同類型的網路。在下面的代碼段中,我們使用network_type=『bike』將OSMnx配置為只找到自行車道路。然後,我們使用make_route_graph()函數來找到在兩個點之間的最短自行車路線。
import osmnx as ox
ox.config(use_cache=True, log_console=True)
G = ox.graph_from_address('1118 26th St, Santa Monica, California', network_type='bike')
route = ox.shortest_path(G, "1118 26th St, Santa Monica, California」, 「1832 11th St, Santa Monica, California」)
七、總結
OSMnx是一個用於地理空間數據的分析和可視化的強大工具箱。它為我們提供了許多特性,使我們能夠方便地獲取和分析地理空間數據。能夠生成具有地理意義的可視化圖像,生成街區和自行車路網分析。 如果您想開始自己的地理空間數據項目,OSMnx是您不可或缺的工具!
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/193998.html