大型交通流仿真平台——Matsim中文使用手册05
Osm地圖與坐標系
通過本節,你將會:1.知道如何獲得免費的地圖數據//? ? 2.理解OSM文件如何描述路網//? ? 3.簡單了解坐標轉換的方法//
1. 開源地圖 Open Street Map
Open Street Map(OSM)是一個開源的地圖庫,網站為http://www.openstreetmap.org,如圖所示。這個地圖由世界各國人士繪制,并且所有數據全部提供下載,包括城市中的節點、路網、建筑等信息。而我們的交通流仿真正需要基于城市的道路數據。因此OSM網站對我們十分有用。無須自己編network.xml中的數據,我們可以通過轉換OSM地圖得到。
????????OSM地圖的數據格式為.osm,網站提供多種下載數據的方式。我們介紹兩種方式,把某個地區路網的OSM文件下載到本地,作為我們路網的原始數據。
- 方法一 當你所需要的地圖范圍較小時,如幾條街道,幾公里范圍內,在OSM網站上查找你所關注的地點,同時進行縮放、拖動,直至大小滿意,點擊網頁左上角“導出”,如下面第一幅圖所示,會在網頁左側出來一列信息欄,繼續點擊“導出”,最后保存即可。
- 方法二 當你所需要的范圍較大,如整個城市,同樣將OSM地圖拖動到你感興趣的地方,點擊右上角的“導出”,在網頁左側欄目中下部,點擊Overpass API,如下面第二幅圖所示,并在彈出的保存界面中,將保存名稱命名為xx.osm即可
導出方法1
導出方法2
2. OSM中的地圖數據
首先需要在電腦中安裝Notepad++,下載地址為https://notepad-plus-plus.org/download。這是一款非常輕便、快捷的文本編輯器。在學習Matsim的過程中,我們需要查看和編輯一些.xml文件,使用Notepad++會帶來很大的便捷。
右鍵點擊剛剛下載的.osm文件,選擇使用Notepad++打開(右鍵文件,Edit with Notepad++)。.osm文件比較類似于.xml文件的組織形式,都是以<\start tag><\description><\end tag>的形式作為數據和關系的記錄。我們來具體看一下.osm文件對于路網的描述。
節點- node 節點(node)是平面內元素最基本的屬性,要想描述一條線段、一個圖形,都需要最基本的節點信息。從下圖中可以看出.osm文件所描述的節點主要包括以下屬性:
- id 每個節點的編號,不能重復
- lat 該節點所在的緯度
- lon 該節點所在的經度
道路- way 如果需要描述一條線(或者環繞一個公園的邊界),我們需要給出這條線一些關鍵節點的位置——至少,我們應該給出兩個節點的位置,這條線才能被確定下來。因此,對于我們的路網文件,我們首先需要定義每個節點(node),再定義路網中的道路(way),每條道路需要引用一些節點,以確定這條道路的形狀,如下圖所示,每一條道路都擁有一些節點<nd ref = "123456789"/>,表示對上面所定義的節點的引用。另一方面,每條道路(way)還擁有一些標簽<tag k = "a" v = "b"/>,通常有以下常用項:
- k = "highway" 表示這條是一條路,v = "secondary"屬性說明這條路的等級,道路在城市中作用越重要,等級則越高
- k = "name" 這條道路在真實世界中的名稱
- k="amenity" 有些道路(way)的標簽為這個,而沒有k = "highway"標簽,說明這條way并不是作為一條路使用的,而是一個場所
關系- relation 在OSM路網中還有一些更復雜的圖形,如城市中某個行政區的邊界,需要使用關系(relation)來表示,如下圖所示。由于關系與我們的路網無關,這里僅僅簡單提一下。
3. 坐標轉換
本人并不學習測量專業,只是為了獲取想要的地圖文件,不得不接觸一些坐標轉換的知識。若有理解不當之處,還請大家去他處尋找更專業的描述。
本節不打算講很理論的知識,因此大概介紹一下坐標變換。從上一節內容對.osm文件的描述,發現.osm文件是以經緯度記錄節點位置的。經緯度可以看作基于地球表面的坐標系(更專業的,稱為WGS-84坐標)。由于它是一個球面的坐標系,很不方便計算距離,以及在平面顯示。因此我們需要一種平面的坐標系,來轉換我們的坐標。
我要介紹的是墨卡托投影,如下面第一張圖所示。墨卡托投影實際上將地球的球面投影至圓柱面,通過相關公式來計算在平面上的坐標。墨卡托投影的效果較好,但是越靠近地球兩極,距離尺度變形越大,可以從多數地圖軟件看出(如:百度地圖、谷歌地圖),變換后的格陵蘭島甚至和南美洲一樣大(如下面第二張圖所示)!當然,在我們研究的區域內,只要緯度不是太高,變換后兩點間的距離還是可以近似利用坐標直接計算的。順便一提的是,經過墨卡托投影后的地圖,里面的一個長度近似代表實際中的1m。
如果大家對變換后城市中距離的要求較高,我建議使用UTM坐標系,這是一種改良后的墨卡托坐標系。該變換將地球分為若干個分區,利用更復雜的數學公式,將球面坐標作等距變換,距離精確度更高。由于轉換較為麻煩,而且對于跨分區邊界的城市,轉換效果并不好,因此筆者認為這是一種非常精確,但是對于本人并不適用的坐標轉換方法。
總結
以上是生活随笔為你收集整理的大型交通流仿真平台——Matsim中文使用手册05的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 13--长度最小的子数组
- 下一篇: Diango博客--18.使用 Fabr