OSRM筆記


OSRM

OSRM(OpenStreetMap Routeing Machine)可用於路線規划。作為高性能的路線規划引擎,OSRM使用C++14編寫,基於開源的OpenStreetMap數據實現。

官網:http://project-osrm.org/
Github:https://github.com/Project-OSRM/osrm-backend

安裝

使用docker安裝

首先需要安裝docker:

curl -fsSL https://get.docker.com/ | sh

# daocloud.io 國內鏡像
curl -sSL https://get.daocloud.io/docker | sh

詳細請閱讀:Docker學習筆記

OSRM依賴OpenStreetMap的數據。可以在 http://download.geofabrik.de 下載。選擇pbf即可。示例:

wget http://download.geofabrik.de/europe/germany/berlin-latest.osm.pbf

安裝 Server 端並運行在5000端口:

docker run -t -v $(pwd):/data osrm/osrm-backend osrm-extract -p /opt/car.lua /data/berlin-latest.osm.pbf
docker run -t -v $(pwd):/data osrm/osrm-backend osrm-contract /data/berlin-latest.osrm

docker run -t -i -p 5000:5000 -v $(pwd):/data osrm/osrm-backend osrm-routed /data/berlin-latest.osrm

如果順利的話,osrm-backend已經安裝好了。發送請求示例:

curl "http://127.0.0.1:5000/route/v1/driving/13.388860,52.517037;13.385983,52.496891?steps=true"

安裝web端用於顯示地圖,運行在 9966 端口:

docker run -p 9966:9966 osrm/osrm-frontend

打開瀏覽器,訪問 http://127.0.0.1:9966 即可。

從源碼編譯安裝

這里以 Ubuntu 16.04 為例。

安裝依賴:

sudo apt install build-essential git cmake pkg-config \
libbz2-dev libstxxl-dev libstxxl1v5 libxml2-dev \
libzip-dev libboost-all-dev lua5.2 liblua5.2-dev libtbb-dev

編譯和安裝 OSRM 二進制文件:

mkdir -p build
cd build
cmake ..
cmake --build .
sudo cmake --build . --target install

Geofabrik 或者 Mapzen's Metro Extracts 下載一個.osm.pbf文件:

wget http://download.geofabrik.de/europe/germany/berlin-latest.osm.pbf

解壓地圖數據並啟動 Server:

osrm-extract berlin-latest.osm.pbf -p profiles/car.lua
osrm-contract berlin-latest.osrm
osrm-routed berlin-latest.osrm

請求示例:

curl http://127.0.0.1:5000/route/v1/driving/13.388860,52.517037;13.385983,52.496891?steps=true

相關資料

OpenStreetMap

OpenStreetMap(簡稱OSM)是一個網上地圖協作計划,目標是創造一個內容自由且能讓所有人編輯的世界地圖。

OSM是一款由網絡大眾共同打造的免費開源、可編輯的地圖服務。OpenStreetMap它是利用公眾集體的力量和無償的貢獻來改善地圖相關的地理數據。OSM是非營利性的,它將數據回饋給社區重新用於其它的產品與服務。而其他地圖則是將大多數的地圖數據出售給第三方。

OSM的地圖由用戶根據手提GPS裝置、航空攝影照片、其他自由內容甚至單靠地方智慧繪制。網站里的地圖圖像及向量數據皆以共享創意姓名標示-相同方式分享2.0授權。

官網:http://www.openstreetmap.org/

Leaflet

Leaflet 是一個為建設移動設備友好的互動地圖,而開發的現代的、開源的 JavaScript 庫。它是由 Vladimir Agafonkin 帶領一個專業貢獻者團隊開發,雖然代碼僅有 33 KB,但它具有開發人員開發在線地圖的大部分功能。

Leaflet設計堅持簡便、高性能和可用性好的思想,在所有主要桌面和移動平台能高效運作,在現代瀏覽器上會利用HTML5和CSS3的優勢,同時也支持舊的瀏覽器訪問。支持插件擴展,有一個友好、易於使用的API文檔和一個簡單的、可讀的源代碼。

官網:http://leafletjs.com/

拓展

1、如何用Go實現一款類似滴滴優步的網絡約車軟件(含源碼)
https://mp.weixin.qq.com/s/FnrnytO2-nybdWSE3jTkUQ


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM