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

  • 相关阅读:
    box-shadow使用指南
    chrome的input默认样式黄色背景以及选中加粗的边框处理
    Spring AOP执行方法
    Spring JDBC主从数据库访问配置
    JS 命名冲突
    Data truncation: Truncated incorrect DOUBLE value 解决方案
    MySQL DATE_ADD() 函数
    Codeforces Round #340 (Div. 2)
    2020牛客寒假算法基础集训营3
    Codeforces Round #377 (Div. 2)
  • 原文地址:https://www.cnblogs.com/52fhy/p/6759415.html
Copyright © 2011-2022 走看看