色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

基于OSMnx的TransCAD路網模型快速構建

TransCAD和TransModeler交通軟件 ? 來源:TransCAD和TransModeler交通軟件 ? 2025-01-03 10:33 ? 次閱讀

開源數據對交通模型貢獻與日俱增。就道路網絡建模而言,隨著數據質量的提升,開源OpenStreetMap矢量數據已經具備較強的可用性。首先,OpenStreetMap矢量數據更新速度較快,且具備較為準確的幾何線形信息,自帶路名、路名和等級等信息,使其具備了較好的基本條件;其次,采用通用的WGS84坐標系,可以更方便的與其它開源數據源協同利用。不過,OpenStreetMap矢量數據文件是xml格式,直接用于建模也存在不同程度的障礙,尤其是網絡拓撲存在普遍的問題。本文探討基于Python + OSMnx軟件包的OpenStreetMap矢量數據在TransCAD交通規劃模型軟件中的路網建模方法,發掘開源數據利用新路徑。

1 OSMnx簡介及路網數據提取方法

1.1 OSMnx簡介及安裝

OSMnx 是南加州大學的Geoff Boeing助理教授開發的一個 Python 軟件包,可以用于從OpenStreetMap下載、拓撲處理、分析和可視化街道網絡和其他地理要素。只需一行代碼,就能下載步行、駕車或騎車網絡并建立模型,然后對其進行分析和可視化。OSMnx還可以輕松處理城市設施/興趣點、建筑占地面積、公交站點、高程數據、街道方向、速度/旅行時間和路線。本文著重介紹怎樣基于OSMnx構造交通模型的道路網絡,關于其它功能詳見OSMnx官網。

OSMnx的安裝方法之一是可以在Anaconda環境下運行以下命令:

conda create -n ox -c conda-forge --strict-channel-priority osmnx

Anaconda是一個功能強大的數據科學平臺,可安裝、管理Python相關包的軟件,自帶Python、Jupyter Notebook、Spyder等工具。其自帶Python解釋器,用戶可以方便地進行Python編程。當然,也可以使用pip安裝,不過Anaconda軟件安裝說明文檔提示這不屬于官方支持做法。

1.2 OSMnx在線路網下載和拓撲處理

OSMnx 提供5種方式下載在線路網,本文主要介紹多邊形面域和矩形框兩種,其他具體詳見使用手冊的函數參數說明。

序號 方式 函數
1 地址 graph_from_address()
2 矩形框 graph_from_bbox()
3 位置 graph_from_place()
4 坐標點 graph_from_point()
5 多邊形 graph_from_polygon()

(1)多邊形面域graph_from_polygon()

OSMnx可以獲取OpenStreetMap自帶的行政邊界,用作選擇范圍的面域。當然,也可以通過外部讀入面域圖形的shp文件作為邊界。以下以北京海淀區范圍為例演示通過多邊形面域構建圖網絡。

6aabce50-c84d-11ef-9310-92fbcf53809c.png

6af273e6-c84d-11ef-9310-92fbcf53809c.png

6b2a12f6-c84d-11ef-9310-92fbcf53809c.png

6b535c2e-c84d-11ef-9310-92fbcf53809c.png

注意運行以上操作需要有對國外網站的訪問權限,生成的gpkg文件是GeoPackage的文件格式,可以用QGIS打開看到包含edges和nodes兩個圖層,分別對應線層和點層。將這兩個圖層分別導出為shp文件,即可作為TransCAD建模的路網輸入文件。

6b6bceee-c84d-11ef-9310-92fbcf53809c.png

需要說明的是面域文件可以使用外部讀入權威的shp文件替代,考慮到OpenStreetMap自帶行政邊界缺少權威性,建議使用自定義邊界以避免產生不必要的爭議。

6b8f135e-c84d-11ef-9310-92fbcf53809c.png

(2)矩形框graph_from_bbox()

矩形框操作和多邊形面域類似,使用graph_from_bbox()函數,通過元組數據指定邊界范圍即可,使用海淀區的坐標范圍所得小汽車網絡見下圖。

6bad1bf6-c84d-11ef-9310-92fbcf53809c.png

1.3 離線osm文件的獲取、切割和OSMnx拓撲處理

OSMnx還提供基于osm文件的離線建模方式,不受網絡下載的限制。但一般而言可直接獲取的數據是一個包含全中國的范圍的osm文件,數據量很大。因此在使用前需要對osm文件根據需要的范圍進行切割。

(1)OSM文件下載

通過https://download.geofabrik.de/網站,可以下載全國的osm文件,點擊Asia然后選擇子區域中的China。原始文件大小約2G,解壓縮后約22.6G。

6c0b4cf8-c84d-11ef-9310-92fbcf53809c.png

6c2f6fb6-c84d-11ef-9310-92fbcf53809c.png

(2)使用osmosis工具切割OSM文件

切割OSM文件需要用到osmosis工具。osmosis是一個基于Java的開源osm文件切割工具,當前最新版為0.49.2,下載鏈接:

https://github.com/openstreetmap/osmosis/releases/download/0.49.2/osmosis-0.49.2.zip

osmosis切割osm同樣提供矩形框和面域兩種形式。對于矩形框而言操作較為簡單,以前文的北京市海淀區為例,其命令為:

osmosis--read-xml file=f:china-latest_20240518.osm --bounding-boxtop="40.173" left="116.059" bottom="39.871"right="116.398" clipIncompleteEntities=true--wx file=f:haidian.osm

通過上下左右的坐標來指定矩形范圍,特別需要注意的是clipIncompleteEntities需要設置為true,否則OSMnx在讀入文件構建圖網絡時會提示節點信息不完整出錯。

osmosis同樣提供面域切割的模式,面域文件后綴為“.poly”。根據shp文件生成“.poly”建議使用QGIS的插件osmploy_export。安裝完成后,選擇面域,點擊菜單圖標6c565ae0-c84d-11ef-9310-92fbcf53809c.png,指定字段作為面域名稱即可生成“.poly”文件。注意面域需要包含字符型字段才可以作為面域“.poly”文件的面域標簽。

6c6e2ab2-c84d-11ef-9310-92fbcf53809c.png

基于面域“.poly”文件的osm文件切割命令如下:

osmosis--read-xml file=f:china-latest_20240518.osm --bounding-polygonfile="f:Haidian.poly" clipIncompleteEntities=true --wxfile=f:Haidian_poly.osm

(3)離線osm文件拓撲處理

使用OSMnx對離線osm文件拓撲處理過程如下:

6c891f3e-c84d-11ef-9310-92fbcf53809c.png

從上圖不難發現離線osm文件的要素遠比直接在線地圖建模的內容要豐富,主要是因為前文在線地圖中只包含小汽車通行的網絡,而在離線osm建模結果包含了鐵路、地鐵、小汽車、步行等所有網絡信息。相對在線下載的osm文件,遺憾的是未能在離線osm文件找到通行權選擇集參數。因此如采用離線osm文件得到的結果作為后續交通模型輸入需要通過選擇集做進一步篩選和清洗。

上圖為多邊形切割后的建模結果,網絡冗余明顯減少。因此,考慮后續處理的工作量,建議采用多邊形切割代替矩形框。

2 基于OSMnx數據的TransCAD路網建模

2.1 gpkg數據導出

OSMnx生成的圖網絡保存gpkg,對應生成edges和nodes兩個圖層。gpkg文件可以直接用QGIS打開,分別將這兩個文件導出保存為shp備用。為了防止shp文件中文字段的亂碼,需要針對不同的TransCAD版本選擇不同編碼方式,下面的例子是選擇UTF-8編碼方式。順便說一下,使用QGIS保存shp文件為不同編碼方式,可以解決TransCAD早期版本對一些特定編碼的shp文件顯示為亂碼的問題。

6cd8aa68-c84d-11ef-9310-92fbcf53809c.png

6cf602f2-c84d-11ef-9310-92fbcf53809c.png

2.2 shp文件導入TransCAD

TransCAD支持帶有拓撲關系的點和線兩個圖層同時導入,也支持雙向的道路雙線要素格式轉換為單線要素格式,并用AB/BA字段表示雙向的不同屬性,較為靈活。參見:TransCAD導入常用交通規劃軟件網絡數據。

在TransCAD通過File菜單,Open找到edges.shp文件,并按下圖設置(包括nodes.shp文件),待完成后即可生成TransCAD模型路網。

6d136360-c84d-11ef-9310-92fbcf53809c.png

6d2d93fc-c84d-11ef-9310-92fbcf53809c.png

6d3d8bf4-c84d-11ef-9310-92fbcf53809c.png

不難發現,導入后的網絡link屬性中路名、道路等級等屬性比較完整,但車道數、自由流車速等指標存在缺失。這是由于OpenStreetMap地圖數據本身的缺陷。要用于交通模型,還需要通過標準化屬性賦值來彌補這一缺陷的方法。下面介紹標準化屬性賦值方法。

2.3 道路屬性配置

考慮OpenStreetMap數據車道和自由流車速缺失的問題。經對osm地圖數據的梳理,發現車行道的linktype約有89種。結合道路等級和連接屬性,進一步分成22類,分別對于每一類道路的車道數和自由流車速進行初始化。相關參數見下表。

NO linktype type lanes speed
1 motorway 1 3 120
2 trunk 2 4 70
3 primary 3 3 50
4 secondary 4 2 40
5 tertiary 5 1 30
6 residential 6 1 20
7 living_street 7 1 15
8 road 8 1 20
9 unclassified 8 1 20
10 busway 9 1 40
11 escape 10 1 10
12 motorway_link 11 2 60
13 trunk_link 12 2 40
14 primary_link 13 1 30
15 secondary_link 14 1 25
16 tertiary_link 15 1 20
17 ['motorway', 'motorway_link'] 21 1 30
18 ['motorway_link', 'motorway'] 21 1 30
19 ['primary', 'motorway'] 21 1 30
20 ['secondary', 'motorway'] 21 1 30
21 ['trunk', 'motorway'] 21 1 25
22 ['trunk_link', 'motorway'] 21 1 25
23 ['motorway_link', 'primary_link'] 22 1 25
24 ['motorway_link', 'tertiary'] 22 1 25
25 ['motorway_link', 'unclassified'] 22 1 25
26 ['primary', 'motorway_link'] 22 1 25
27 ['residential', 'motorway_link'] 22 1 25
28 ['secondary', 'motorway_link'] 22 1 25
29 ['secondary_link', 'motorway_link'] 22 1 25
30 ['tertiary_link', 'motorway_link', 'tertiary'] 22 1 25
31 ['tertiary_link', 'motorway_link'] 22 1 25
32 ['trunk', 'motorway_link'] 22 1 25
33 ['trunk_link', 'motorway_link'] 22 1 25
34 ['unclassified', 'motorway_link'] 22 1 25
35 ['primary', 'trunk', 'primary_link'] 23 1 20
36 ['primary', 'trunk'] 23 1 20
37 ['secondary', 'secondary_link', 'trunk'] 23 1 20
38 ['secondary', 'trunk', 'trunk_link', 'unclassified'] 23 1 20
39 ['secondary', 'trunk'] 23 1 20
40 ['secondary_link', 'trunk', 'secondary'] 23 1 20
41 ['secondary_link', 'trunk'] 23 1 20
42 ['trunk', 'primary_link'] 23 1 20
43 ['trunk', 'tertiary'] 23 1 20
44 ['trunk', 'trunk_link'] 23 1 20
45 ['primary', 'trunk_link'] 24 1 20
46 ['residential', 'trunk_link'] 24 1 20
47 ['secondary', 'trunk_link'] 24 1 20
48 ['secondary_link', 'trunk_link'] 24 1 20
49 ['trunk_link', 'primary_link'] 24 1 20
50 ['trunk_link', 'tertiary'] 24 1 20
51 ['trunk_link', 'unclassified'] 24 1 20
52 ['primary', 'primary_link'] 25 1 20
53 ['primary', 'tertiary'] 25 1 20
54 ['primary', 'tertiary_link'] 25 1 20
55 ['primary_link', 'tertiary'] 25 1 20
56 ['residential', 'primary'] 25 1 20
57 ['residential', 'primary_link'] 25 1 20
58 ['secondary', 'primary', 'tertiary'] 25 1 20
59 ['secondary', 'primary'] 25 1 20
60 ['secondary', 'primary_link'] 25 1 20
61 ['tertiary', 'primary_link'] 25 1 20
62 ['unclassified', 'primary_link'] 25 1 20
63 ['residential', 'secondary'] 26 1 15
64 ['secondary', 'living_street'] 26 1 15
65 ['secondary', 'secondary_link'] 26 1 15
66 ['secondary', 'tertiary'] 26 1 15
67 ['secondary', 'tertiary_link', 'tertiary'] 26 1 15
68 ['secondary', 'tertiary_link'] 26 1 15
69 ['secondary', 'unclassified'] 26 1 15
70 ['secondary_link', 'secondary', 'tertiary'] 26 1 15
71 ['secondary_link', 'secondary'] 26 1 15
72 ['secondary_link', 'tertiary'] 26 1 15
73 ['secondary_link', 'tertiary_link', 'tertiary'] 26 1 15
74 ['secondary_link', 'tertiary_link'] 26 1 15
75 ['secondary_link', 'unclassified'] 26 1 15
76 ['living_street', 'tertiary'] 27 1 15
77 ['living_street', 'unclassified'] 27 1 15
78 ['residential', 'living_street', 'unclassified'] 27 1 15
79 ['residential', 'living_street'] 27 1 15
80 ['residential', 'road'] 27 1 15
81 ['residential', 'tertiary'] 27 1 15
82 ['residential', 'tertiary_link'] 27 1 15
83 ['residential', 'unclassified', 'tertiary'] 27 1 15
84 ['residential', 'unclassified'] 27 1 15
85 ['road', 'residential'] 27 1 15
86 ['road', 'unclassified'] 27 1 15
87 ['tertiary_link', 'tertiary'] 27 1 15
88 ['tertiary_link', 'unclassified'] 27 1 15
89 ['unclassified', 'tertiary'] 27 1 15

建議在shp文件導入TransCAD之前完成數值初始化,這樣雙向的屬性更容易一次性操作。

3結語

總體來說通過OpenStreetMap來構建交通模型網絡雖然還存在一定缺陷,特別是道路等級、車道數和自由流車速的問題。但無疑這是一種高效的交通網絡建模方法,再配合公交模型數據庫自動創建工具,能夠快速完成基礎交通網絡模型的開發,是一種值得推廣的工作模式。當然,網絡數據的可靠性對模型的精度也會有直接的影響,在條件允許的情形下,其他高質量的輸入數據仍然是交通建模的首選(例如導航地圖矢量數據)。

OSMnx不僅可以作為道路網絡的建模工具,還有其他一些重要的功能,包括k最短路分析、距離計算等。這些功能具有廣泛的應用場景。騎行、步行網絡也能夠直接支持開展城市騎行和步行網絡的研究工作。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 交通網絡
    +關注

    關注

    0

    文章

    9

    瀏覽量

    7040
  • 路網
    +關注

    關注

    0

    文章

    8

    瀏覽量

    6598

原文標題:基于OSMnx的TransCAD路網模型快速構建

文章出處:【微信號:TransCADTransModeler,微信公眾號:TransCAD和TransModeler交通軟件】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    如何使用Python構建LSTM神經網絡模型

    構建一個LSTM(長短期記憶)神經網絡模型是一個涉及多個步驟的過程。以下是使用Python和Keras庫構建LSTM模型的指南。 1. 安裝必要的庫 首先,確保你已經安裝了Python
    的頭像 發表于 11-13 10:10 ?415次閱讀

    為THS3001構建一個簡單的SPICE模型

    電子發燒友網站提供《為THS3001構建一個簡單的SPICE模型.pdf》資料免費下載
    發表于 10-29 10:11 ?0次下載
    為THS3001<b class='flag-5'>構建</b>一個簡單的SPICE<b class='flag-5'>模型</b>

    快速部署Tensorflow和TFLITE模型在Jacinto7 Soc

    電子發燒友網站提供《快速部署Tensorflow和TFLITE模型在Jacinto7 Soc.pdf》資料免費下載
    發表于 09-27 11:41 ?0次下載
    <b class='flag-5'>快速</b>部署Tensorflow和TFLITE<b class='flag-5'>模型</b>在Jacinto7 Soc

    【飛凌嵌入式OK3576-C開發板體驗】rkllm模型量化構建

    (model = modelpath) if ret != 0: print(\'Load model failed!\') exit(ret) 模型量化構建 # Build model ret
    發表于 08-27 22:50

    什么是大模型快速了解大模型基本概念

    “在人工智能的世界里,大模型就像超級大腦一樣,能夠處理和理解大量的信息。你可能聽說過ChatGPT,它就是大模型的一個典型代表。那么,什么是大模型呢?讓我們一起來探索這個神奇的領域。什么是大
    的頭像 發表于 08-07 08:28 ?1536次閱讀
    什么是大<b class='flag-5'>模型</b>?<b class='flag-5'>快速</b>了解大<b class='flag-5'>模型</b>基本概念

    如何構建多層神經網絡

    構建多層神經網絡(MLP, Multi-Layer Perceptron)模型是一個在機器學習和深度學習領域廣泛使用的技術,尤其在處理分類和回歸問題時。在本文中,我們將深入探討如何從頭開始構建一個多層神經網絡
    的頭像 發表于 07-19 17:19 ?900次閱讀

    PyTorch神經網絡模型構建過程

    PyTorch,作為一個廣泛使用的開源深度學習庫,提供了豐富的工具和模塊,幫助開發者構建、訓練和部署神經網絡模型。在神經網絡模型中,輸出層是尤為關鍵的部分,它負責將模型的預測結果以合適
    的頭像 發表于 07-10 14:57 ?512次閱讀

    神經網絡預測模型構建方法

    神經網絡模型作為一種強大的預測工具,廣泛應用于各種領域,如金融、醫療、交通等。本文將詳細介紹神經網絡預測模型構建方法,包括模型設計、數據集準備、
    的頭像 發表于 07-05 17:41 ?681次閱讀

    keras模型轉tensorflow session

    在這篇文章中,我們將討論如何將Keras模型轉換為TensorFlow session。 Keras和TensorFlow簡介 Keras是一個高級神經網絡API,它提供了一種簡單、快速的方式來構建
    的頭像 發表于 07-05 09:36 ?555次閱讀

    如何在TensorFlow中構建并訓練CNN模型

    在TensorFlow中構建并訓練一個卷積神經網絡(CNN)模型是一個涉及多個步驟的過程,包括數據預處理、模型設計、編譯、訓練以及評估。下面,我將詳細闡述這些步驟,并附上一個完整的代碼示例。
    的頭像 發表于 07-04 11:47 ?972次閱讀

    基于神經網絡算法的模型構建方法

    神經網絡是一種強大的機器學習算法,廣泛應用于各種領域,如圖像識別、自然語言處理、語音識別等。本文詳細介紹了基于神經網絡算法的模型構建方法,包括數據預處理、網絡結構設計、訓練過程優化、模型評估
    的頭像 發表于 07-02 11:21 ?564次閱讀

    請問NanoEdge AI數據集該如何構建

    我想用NanoEdge來識別異常的聲音,但我目前沒有辦法生成模型,我感覺可能是數據集的問題,請問我該怎么構建數據集?或者生成模型失敗還會有哪些原因?
    發表于 05-28 07:27

    【大語言模型:原理與工程實踐】大語言模型的預訓練

    增長。DeepMind在相關論文中指出,模型大小和訓練Token數應以相似速率增長,以確保最佳性能。因此,構建模型規模相匹配的預訓練數據至關重要。 在構建預訓練數據時,不僅要考慮數
    發表于 05-07 17:10

    中國鐵路網的Dijkstra算法實現案例

    該項目分別在DE1-SOC開發板的FPGA和HPS上實現了Dijkstra算法,能在中國鐵路網中找到兩站之間的最短距離和路線。
    的頭像 發表于 04-09 11:10 ?617次閱讀
    中國鐵<b class='flag-5'>路網</b>的Dijkstra算法實現案例

    名單公布!【書籍評測活動NO.30】大規模語言模型:從理論到實踐

    。 為了使更多的自然語言處理研究人員和對大語言模型感興趣的讀者能夠快速了解大模型的理論基礎,并開展大模型實踐,復旦大學張奇教授團隊結合他們在自然語言處理領域的研究經驗,以及分布式系統和
    發表于 03-11 15:16
    主站蜘蛛池模板: 2017日日干| 在线观看国产精选免费| 香蕉99久久久久成人麻豆| 最近日本免费观看MV免费| 禁室培欲在线视频免费观看| 三级网站视频| 被室友C哭调教双性| 男人插女人逼逼| 69人体阴展网| 美女扒开屁股让男人桶| 在线观看日本免费| 久久草这在线观看免费| 亚洲一区二区女搞男| 国内精品久久影视免费| 亚洲大片免费观看| 国产色婷婷精品人妻蜜桃成熟 | 国产成人精品男人的天堂网站| 欧美 亚洲综合在线一区| 91免费网站在线看入口黄| 麻豆文化传媒一区二区| 91麻豆精品一二三区在线| 男人到天堂a在538线| 99视频在线免费| 日本高清无卡码一区二区久久| 大胸美女被c| 午夜噜噜噜私人影院在线播放| 国产亚洲999精品AA片在线爽| 亚洲视频在线看| 奶水四溅54p| 俄罗斯一级毛片aaaa| 掀开奶罩边躁狠狠躁软学生| 狠狠射首页| 9420高清免费观看在线大全| 人妻系列合集| 国产欧美日韩精品a在线观看高清| 亚洲精品中文字幕制| 久久香蕉国产线看观看精品| 999人在线精品播放视频| 肉欲横流(NP高H)| 国产一区亚洲| 2021久久最新国产精品|