日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python 包介绍:osmnx

發布時間:2025/4/5 python 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python 包介绍:osmnx 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1 osmnx介紹

一個Python 包,可檢索、建模、分析和可視化來自 OpenstreetMap 的街道網絡。

2 graph模塊

graph類型就是networkx 包中的graph類型。所以python庫整理:networkx 包_UQI-LIUWJ的博客-CSDN博客中G的操作這里的G都可以

2.1 graph_from_point

osmnx.graph.graph_from_point(center_point, dist=1000, dist_type='bbox', network_type='all_private', simplify=True, retain_all=False, truncate_by_edge=False, clean_periphery=True, custom_filter=None)
center_point?(tuple)?圍繞其構建圖形的經緯度坐標
dist?(int)?僅保留圖中心這么多米內的那些節點,距離根據 dist_type 參數確定
dist_type?(string {"network",?"bbox"})

如果為“bbox”,則僅保留距離參數的邊界框內的那些節點。

如果是“network”,則僅保留距最中心節點一定網絡距離內的那些節點。

network_type?(string,?{"all_private",?"all",?"bike",?"drive",?"drive_service",?"walk"})獲得什么類型的街道網絡
simplify?(bool)?如果為真,使用simple_graph 函數簡化圖拓撲
retain_all?(bool)?

如果為 True,即使未連接也返回整個圖。

否則,只保留最大的弱連通分量。

truncate_by_edge?(bool)?如果為真,如果至少一個節點的鄰居在邊界框內,則保留這個邊界框外的節點

?2.2 graph_from_place

osmnx.graph.graph_from_place(query, network_type='all_private', simplify=True, retain_all=False, truncate_by_edge=False, which_result=None, buffer_dist=None, clean_periphery=True, custom_filter=None)
query?(string?or?dict?or?list)?對地理編碼的查詢或查詢以獲取地點邊界多邊形
network_type?(string {"all_private",?"all",?"bike",?"drive",?"drive_service",?"walk"})獲得什么類型的街道網絡
simplify?(bool)?如果為真,使用simple_graph 函數簡化圖拓撲
retain_all?(bool)?

如果為 True,即使未連接也返回整個圖。

否則,只保留最大的弱連通分量。

truncate_by_edge?(bool)?如果為真,如果至少一個節點的鄰居在邊界框內,則保留這個邊界框外的節點

?

3 plot模塊

3.1 plot_graph

osmnx.plot.plot_graph(G, ax=None, figsize=(8, 8), bgcolor='#111111', node_color='w', node_size=15, node_alpha=None, node_edgecolor='none', node_zorder=1, edge_color='#999999', edge_linewidth=1, edge_alpha=None, show=True, close=False, save=False, filepath=None, dpi=300, bbox=None)
G?(networkx.MultiDiGraph)需要繪制的圖
ax?(matplotlib axis)?如果不是無,則在此預先存在的軸上繪圖
figsize?(tuple)和matplotlib的一致
bgcolor?(string)?背景顏色
node_color?(string?or?list)點的顏色
node_size?(int)點的大小,如果是0的話,不畫點
node_alpha?(float)點的透明度
node_edgecolor?(string)?點邊框的顏色
edge_color?(string?or?list)

邊的顏色

edge_linewidth?(float)?邊的寬度
edge_alpha?(float)邊的透明度
show?(bool)?如果為 True,則調用 pyplot.show() 來顯示圖形
close?(bool)如果為 True,則調用 pyplot.close() 來關閉圖形
save?(bool)?如果為 True,則將圖形保存到filepath去
filepath?(string)保存的路徑

eg

location_point = (31.20799,121.547812) G1 = ox.graph_from_point(location_point, dist=2000) fig, ax = ox.plot_graph(G1, node_color='r')

3.2 plot_graph_route?

osmnx 筆記: plot_graph_route & plot_graph_routes_UQI-LIUWJ的博客-CSDN博客

3.3?plot_graph_routes

osmnx 筆記: plot_graph_route & plot_graph_routes_UQI-LIUWJ的博客-CSDN博客

3.4?get_colors

從matplotlib顏色映射中獲取n個均勻間距的顏色。

3.4.1 基本使用方法

osmnx.plot.get_colors(n, cmap='viridis', start=0.0, stop=1.0, alpha=1.0, return_hex=False)

3.4.2 參數說明

n?(int)?劃分的顏色數
cmap?(string)

start?(float)?顏色空間的起始位置
stop?(float)?顏色空間的結束位置
alpha?(float)?透明度
return_hex?(bool)

如果為True,將RGBa顏色轉換為類似html的十六進制RGB字符串。

如果為False,返回(R, G, B, alpha)元組的顏色。

?3.4.3 使用舉例

ox.plot.get_colors(10,cmap='Greens') ''' [(0.9686274509803922, 0.9882352941176471, 0.9607843137254902, 1.0),(0.9066205305651672, 0.9641214917339485, 0.8884429065743944, 1.0),(0.8089965397923875, 0.9251672433679354, 0.7834525182622069, 1.0),(0.681045751633987, 0.8718954248366013, 0.6562091503267974, 1.0),(0.5351787773933102, 0.8060899653979239, 0.5287504805843906, 1.0),(0.36392156862745095, 0.7240292195309497, 0.4181468665897732, 1.0),(0.21568627450980393, 0.6287581699346405, 0.3333333333333333, 1.0),(0.10388312187620147, 0.5164936562860438, 0.2467512495194156, 1.0),(0.0, 0.4079046520569012, 0.16444444444444445, 1.0),(0.0, 0.26666666666666666, 0.10588235294117647, 1.0)] '''ox.plot.get_colors(10,cmap='Greens',return_hex=True) ''' ['#f7fcf5','#e7f6e3','#ceecc8','#aedea7','#88ce87','#5db96b','#37a055','#1a843f','#00682a','#00441b'] '''

?3.5??get_edge_colors_by_attr &get_node_colors_by_attr

osmnx 補充筆記:get_edge_colors_by_attr &get_node_colors_by_attr_UQI-LIUWJ的博客-CSDN博客

?4 simplification模塊

4.1 _is_endpoint

節點是邊的真正端點嗎?

如果節點是網絡中邊的“真實”端點,則返回 True,否則返回 False。

OSM 數據包括許多僅作為點存在的節點,以幫助街道繞曲線彎曲。

osmnx.simplification._is_endpoint(G, node, strict=True)

G-圖,node-需要判斷的點

G1=ox.graph_from_place('Pudong,Shanghai,China',network_type='drive') nc = ['white' if ox.simplification._is_endpoint(G1, node) else 'black' for node in G1.nodes()] ox.plot_graph(G1,figsize=(20,20),node_color=nc)

4.2 simplify_graph

osmnx.simplification.simplify_graph(G, strict=True, remove_rings=True)

通過移除間隙節點來簡化圖的拓撲。?

通過刪除所有非交點或終端的節點來簡化圖拓撲。

在封裝它們的端點之間直接創建一條邊,但保留原始邊的幾何形狀,并保存為新邊上的新幾何屬性。

注意,只有簡化的邊才能接收幾何屬性。一些合并后的邊可能包含多種OSM方式,如果是這樣,它們的多個屬性值將存儲為一個列表。

注:如果之前在比如ox.graph_from_point的地方,沒有設置 'simplify=False',那么這里會報錯:

Exception: This graph has already been simplified, cannot simplify it again.

eg,這是沒有簡化的圖:

location_point = (31.20799,121.547812) G1 = ox.graph_from_point(location_point, dist=2000,simplify=False) fig, ax = ox.plot_graph(G1, node_color='r')

這是簡化了之后的圖:

G2=ox.simplification.simplify_graph(G1) ox.plot_graph(G2)

?5 io模塊

5.1?load_graphml

osmnx.io.load_graphml(filepath, node_dtypes=None, edge_dtypes=None, graph_dtypes=None)

5.1.1 參數說明

filepath?(string?or?pathlib.Path)GraphML文件的路徑
node_dtypes?(dict)?點級別屬性名字的字典
edge_dtypes?(dict)邊級別屬性名字的字典
graph_dtypes?(dict)?圖級別屬性名字的字典

5.1.2 用法說明?

從磁盤加載osmnx保存的GraphML文件。

這將節點、邊和圖形級屬性(序列化為字符串)轉換為相應的數據類型。

可以根據需要通過傳入提供類型或自定義轉換器函數的dtypes參數來定制這些參數。

例如,如果想將某些屬性的值轉換為bool類型,可以考慮使用內置的ox.io._convert_bool_string函數:

ox.load_graphml(fp, node_dtypes={my_attr: ox.io._convert_bool_string})

如果你手工設置了’all_oneway=True‘,那么你需要將邊的oneway屬性設置為str

5.1.3 使用舉例

G = ox.io.load_graphml("./graph.graphml") fig, ax = ox.plot_graph(G, node_size=0, edge_color='w', edge_linewidth=0.25)

5.2??save_graphml

osmnx.io.save_graphml(G, filepath=None, gephi=False, encoding='utf-8')

將G保存成graphml格式的文件?

6 utils_graph模塊?

6.1?graph_to_gdfs

osmnx.utils_graph.graph_to_gdfs(G, nodes=True, edges=True, node_geometry=True, fill_edge_geometry=True)

?Convert a MultiDiGraph to node and/or edge GeoDataFrames.

返回:geopandas.GeoDataFrame

參數:

G?(networkx.MultiDiGraph)?輸入的圖
nodes?(bool)?如果是True,那么將圖的節點轉化成GeoDataFrame
edges?(bool)?如果是True,那么將圖的邊轉化成GeoDataFrame
node_geometry?(bool)?如果為True,從節點x和y屬性創建一個幾何列
fill_edge_geometry?(bool)如果為True,使用節點u和v填充缺失的邊幾何字段

????????Gdf_nodes或gdf_edges或元組(Gdf_nodes, gdf_edges).gdf_nodes由osmid索引.

????????gdf_edges由u, v, key按照正常的multidiggraph結構進行多重索引。

總結

以上是生活随笔為你收集整理的python 包介绍:osmnx的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。