OpenStreetMap架構
OpenStreetMap框架介紹
1.OSM平台開發
OpenStreetMap(簡稱OSM)是一個網上地圖協作計劃,目標是創造一個內容自由且能讓所有人編輯的世界地圖。
OSM的地圖由用戶根據手提GPS裝置、航空攝影照片、其他自由內容甚至單靠地方智慧繪製。網站裏的地圖圖像及向量數據皆以共享創意姓名標示-相同方式分享2.0授權。
OSM網站的靈感來自維基百科等網站。這可從該網地圖頁的“編輯”按鈕及其完整修訂曆史獲知。經注冊的用戶可上載GPS路徑及使用內置的編輯程式編輯數據。目前包括蘋果和微軟在內都在使用OpenStreetMap.
OSM架構如下圖所示:
OSM的功能是由相互獨立的組件共同完成的。OSM的地圖數據是通過PosGIS存儲在PostgresSQL數據庫中,通過Mapnik渲染成地圖切片,通過Leaflet提供用戶交互的接口。
2.基於OSM進行開發:
2.1部署自己的地圖:
1. OpenLayers:OpenLayers 是一個專為WebGIS 客戶端開發提供的JavaScript類庫包,用於實現標準格式發布的地圖數據訪問。從OpenLayers2.2版本以後,OpenLayers已經將所用到的Prototype.js組件整合到了自身當中,並不斷在Prototype.js的基礎上完善麵向對象的開發,Rico用到地方不多,隻是在OpenLayers.Popup.AnchoredBubble類中圓角化DIV。地址:https://openlayers.org/
2. Leaflet:一個現代、開源的Javascript庫,用於提供友好交互的地圖。可以用於桌麵和移動平台,Leaflet設計堅持簡便、高性能和可用性好的思想,在所有主要桌麵和移動平台能高效運作,在現代瀏覽器上會利用HTML5和CSS3的優勢,同時也支持舊的瀏覽器訪問。支持插件擴展,有一個友好、易於使用的API文檔和一個簡單的、可讀的源代碼。
使用leaflet的軟件有:Flickr,foursquare,Pinterest,craigslist,Data.gov,IGN,Wikimedia,OSM,Meetup,WSJ,Mapbox,CartoDB,GISCloud等。地址:https://leafletjs.com/
3. Mapstraction:地址: https://wiki.openstreetmap.org/wiki/Deploying_your_own_Slippy_Map
4. YCanvas:地址:https://github.com/jozefchutka/YCanvas
5. Khtmlib地址:https://maplib.khtml.org/
6. Ka-Map
7. Openscales,用ActionScript3和Flex編寫的開源地圖框架,開發者基於OpenScales可以構建富互聯網應用,可用於網頁和移動端(Android,ios)。地址:https://openscales.org/
8. Modest Maps.輕量的、可擴展的開源庫。設計者和開發者可以用於設計交互的地圖。提供了Actionscript3、python、Javascript、PHP、Processing、Cinder等語言的實現。地址:https://modestmaps.com/
9. Modestmaps-js.ModestMaps庫的一種輕量級javascript實現。地址:https://github.com/stamen/modestmaps-js/wiki
10. BruTile.基於C#語言實現的可以提供地圖切片服務的庫。地址:https://brutile.codeplex.com/
11. Polymaps.利用SVG技術提供圖片和矢量切片地圖服務的javascript庫。地址:https://polymaps.org/
2.2渲染地圖:
2.2.1 地圖切片
創建地圖切片:
1.Mapnik + generate_tiles.py
2. Mapnik + mod_tile
3. Mapnik + Mysql/Ruby/Python
4. Mapnik + tilecache
表達地圖切片:
1.Openlayers
2. Maperitive
2.2.2 3D地圖
基於OSM數據的3D地圖項目有:
1.OSM-3D
2.Glosm
3.OSM2World
4.World2XPlane
5.osm2xp
6. OSM in 3D using XML3D
7.Kendzi3d
8.VTP VTBuilder
9. WikiMiniAtlas
10. OSM in 3D using XML3D
11.HaptoRender
12.F4 Map
2.3地圖服務:
2.3.1路徑導航服務
一、在線導航服務
1.OpenRoute-Service
2.YOURS
3.CycleStreets
4.Routino
5.BBBike World
6.MapQuest
7.OSRM
8.TripGo
9.BRouter
10.OpenTrip-Planner
11.HoofMarker
12.GraphHopper
不同軟件的功能矩陣:
表1
功能 |
OpenRoute-Service |
YOURS |
CycleStreets |
Routino |
BBBike World |
MapQuest |
數據範圍 |
歐洲 |
全球 |
英國 |
應該 |
選定的城市 |
全球 |
駕車(最快) |
√ |
√ |
|
|
√ |
|
駕車(路程最短) |
√ |
√ |
|
√ |
|
√ |
自行車(路程最短) |
√ |
√ |
√ |
√ |
√ |
|
自行車(最快) |
√ |
√ |
√ |
√ |
√ |
√ |
自行車(最安全) |
√ |
|
|
√ |
√ |
|
自行車(最安靜) |
√ |
√ |
√ |
√ |
|
|
步行 |
√ |
√ |
|
√ |
|
√ |
拐點限製 |
|
√ |
|
√ |
√ |
√ |
汽車限製(高度、載重等) |
|
|
|
√ |
|
|
中間路段禁止通行 |
√ |
√ |
√ |
√ |
√ |
√ |
為路段手動設置行駛速度 |
|
|
√ |
√ |
√ |
|
選定區域禁止通行 |
√ |
|
|
|
|
|
選定的橋梁或隧道禁止通行 |
|
|
|
√ |
|
√ |
選定的道路類型禁止通行(如高速) |
√ |
|
√ |
√ |
√ |
√ |
實時交通 |
√ |
|
|
|
|
|
對外開放API |
√ |
√ |
√ |
|
√ |
√ |
是否開源 |
僅導航引擎 |
√ |
部分 |
√ |
√ |
|
表2
功能 |
OSRM |
TripGo |
BRouter |
OpenTrip-Planner
|
HoofMarker |
GraphHopper |
數據範圍 |
全球 |
選定城市 |
全球 |
選定城市 |
德國 |
全球 |
駕車(最快) |
√ |
√ |
|
|
|
√ |
駕車(路程最短) |
|
√ |
|
|
|
|
自行車(路程最短) |
|
√ |
√ |
√ |
|
|
自行車(最快) |
|
√ |
√ |
√ |
|
√ |
自行車(最安全) |
|
|
√ |
√ |
|
|
自行車(最安靜) |
√ |
|
√ |
|
|
|
步行 |
|
√ |
路程最短 |
√ |
√ |
√ |
拐點限製 |
√ |
√ |
|
√ |
|
|
汽車限製(高度、載重等) |
|
|
|
|
|
|
中間路段禁止通行 |
√ |
√ |
√ |
√ |
√ |
|
為路段手動設置行駛速度 |
|
√ |
|
|
|
|
選定區域禁止通行 |
|
|
√ |
|
|
|
選定的橋梁或隧道禁止通行 |
|
|
√ |
|
√ |
|
選定的道路類型禁止通行(如高速) |
|
√ |
√ |
|
√ |
|
實時交通 |
|
|
|
|
|
|
對外開放API |
√ |
√ |
√ |
√ |
|
√ |
是否開源 |
√ |
|
√ |
√ |
√ |
√ |
二、離線導航服務
1.Geosmore
3.Navit
4.RoadMap
5.VGPS
6.We-Travel
7.GpsMid
8.True Maps
9.MoNav
10.CartoType
不同軟件功能矩陣:
表3
功能 |
Geosmore |
Traveling Salesman |
Navit |
RoadMap
|
VGPS |
We-Travel |
GpsMid |
True Map |
MoNav |
CartoType |
導航算法 |
|
Multiple |
Dijkstra |
|
A* |
Dijkstra/A* |
Dijkstra/A* |
Dijkstra/A* |
Contraction Hierarchies |
A*/ contraction hierarchy |
地址搜索 |
限製 |
√ |
√ |
√ |
√ |
√ |
√ |
√ |
√ |
|
拐點限製 |
√ |
√ |
|
|
|
|
√ |
√ |
|
√ |
支持平台 |
所有 |
所有 |
Windows,Mac,Linux |
Linux,Unix |
|
|
|
|
Windows,Mac,Linux |
Windows,Mac,Linux,FreeBSD |
支持手持設備 |
Windows mobile |
|
Nokia,WinCE,Android,Angstrom |
Windows CE, iPhone,ipod |
Java Mobile,Android Mobile |
|
|
|
|
|
2.3.2搜索服務
1.Nominatim:按名稱和地址來搜索OSM中的數據,並生成OSM點的合成地址的工具。Nominatim是基於PostgreSQL的導入實用程序osm2pgsql使用替代地名輸出選項。索引和搜索是使用的C、PLPGSQL和PHP相結合進行。地址:https://github.com/twain47/Nominatim
2.3.3地理編碼服務
1.Nominatim
2.MapQuest
3.OpenCage
4.Yacy
5.OSMLucener
6.OSMonto
7.Gisgraphy
8.Photon
最後更新:2017-04-03 05:40:09