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