1. 程式人生 > >SUMO文件019:匯入網路檔案(上)——OpenStreetMap

SUMO文件019:匯入網路檔案(上)——OpenStreetMap

network_Import

可以通過netconvert程式將很多的第三方的路網檔案轉化為sumo可讀的檔案。以下列出了可以轉化應用的格式:

1.        OpenStreetMap(一種開源的地圖引擎);

2.        PTV VISUM

3.        PTV VISSIM

4.        OpenDRIVE

5.        MATsim

6.        ArcView

7.        Elmar Brockfelds unsplitted andsplitted NavTeq-data;

8.        RoboCup Rescue League folders

一般的轉化條件只需要兩個引數就可以完成。一個是輸入的檔案型別,另一個就是輸出的檔案。下面的命令就是將visum格式的路網轉化為sumo可讀的格式:

netconvert --visum=MyVisumNet.inp--output-file=MySUMONet.net.xml

當然還有其他的引數可以影響輸出的檔案。一般這些路網都是xml格式的變體。兩種不同的路網格式可以相互轉換,不會丟失資料。

OpenStreetMap

OpenStreetMap(簡稱OSM)是一個全世界開源的地圖,任何人都可以編輯它。有關osm資料的下載有很多不同的工具和下載方法,具體參考osm官網:http://www.openstreetmap.org/

1.快讀入門

在sumo中提供了自己的一個下載osm地圖的指令碼。可以在瀏覽器中選定區域並且制定車輛型別和數量等資訊,直接生成一個可以執行模擬的檔案(這個很實用)。檔名稱:OSMWebWizard.py。這個檔案在tools資料夾下面,直接執行就會開啟瀏覽器。關於這個檔案的詳細教程可以參考:http://sumo.dlr.de/wiki/Tutorials/OSMWebWizard

2.匯入路網檔案

主要是上面提到的兩條命令:輸入檔案格式和輸出檔案。

netconvert --osm-files berlin.osm.xml -o berlin.net.xml

上面的命令就是將osm檔案轉化為sumo路網檔案net.xml檔案。在osm中預設使用的經緯度座標為WGS84,自動轉化後坐標不符合要求的話,需要你新增其他的引數。詳細的引數列表可以檢視netconvert頁面。

3.常見的其他引數命令

--geometry.remove --roundabouts.guess --ramps.guess --junctions.join --tls.guess-signals --tls.discard-simple --tls.join

--geometry.remove:在不改變拓撲結構的情況下簡化網路(節省空間)

--roundabouts.guess:對環形交叉口進行優化。如果沒有加這個引數,有可能會發生交通擁堵;

--ramps.guess: 在osm資料中不包含加速減速的這種坡道資訊,可以通過這個引數來進行設定,新增這些可能的資訊;

--junction.join:有關節點的。下面有詳細描述。

--tls.guess-signals/--tls.discard-simple/--tls.join.:有關訊號燈的,下面有詳細描述

4.推薦的地圖型別

不同的交通方針場景對應的地圖型別也不相同,在data/typemap資料夾下面有不同種類的場景地圖檔案。

可以通過命令—type-files filename實現。

5.匯入額外的多邊形地圖(建築/水池等)

就是將一些非路網的部分,包含到路網中去。具體用法:

polyconvert --net-file berlin.net.xml --osm-files berlin.osm --type-file typemap.xml -o berlin.poly.xml


上面的命令是生成poly檔案。其中typemap.xml檔案時上面圖中的osmPolyconvert.type.xml。

在配置檔案中的使用方法:

<configuration>
     <input>
         <net-file value="berlin.net.xml"/>            
         <additional-files value="berlin.poly.xml"/>
     </input>
 </configuration>


只需要加一條additional的命令即可。

6.其他匯入指令碼

這裡不描述了,較少使用。

7.高程資料

也就是z軸的資訊資料(海拔資訊)。這個一直在實驗中,程式碼完善中。

其中主要包含兩個命令。一個是跟海拔有關的(osm中出現key=”ele”),另一個是跟層有關的(osm中出現key=”layer”);其中有關高程資料的其他資訊可以參看:http://sumo.dlr.de/wiki/Networks/Elevation

8有關其他的資訊

8.1junctiom節點

主要介紹了合併節點的引數使用;junction-join

8.2traffic light交通訊號燈

講述了訊號燈相位猜測和訊號燈合併的資訊。如果轉化後的檔案沒有紅綠燈資訊,那麼原始檔沒有這些資訊或者是轉化後丟失了資料。

後面還提到了如何刪去路網中不想要的道路種類:

--remove-edges.by-vclass hov,taxi,bus,delivery,transport,lightrail,cityrail, \ 
  rail_slow,rail_fast,motorcycle,bicycle,pedestrian


劃重點了:

有關osm和sumo的對應關係:

  •  節點是一對一的對應的;
  •   osm中道路不區分車道,因此5677可能被是被為5677#0/5677#1/-5677#0/-5677#1.