zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    UVALive 7141 BombX
    CodeForces 722D Generating Sets
    CodeForces 722C Destroying Array
    CodeForces 721D Maxim and Array
    CodeForces 721C Journey
    CodeForces 415D Mashmokh and ACM
    CodeForces 718C Sasha and Array
    CodeForces 635C XOR Equation
    CodeForces 631D Messenger
    田忌赛马问题
  • 原文地址:https://www.cnblogs.com/52fhy/p/6759415.html
Copyright © 2011-2022 走看看