码迷,mamicode.com
首页 > 其他好文 > 详细

Gis地图离线路由规划服务搭建

时间:2020-05-12 20:10:45      阅读:213      评论:0      收藏:0      [点我收藏+]

标签:镜像端口   project   source   dev   范围   配置   reader   下载地址   文件夹   

  由于公司业务需求,需要一套离线路由规划服务,譬如提供出发地、目的地、途经点、交通方式、避开区域等,规划出一条或多条导航路由。离线,离线,离线。我们已经太依赖网络了。
至于展示层就随意,可选cesium、leaflet、osgEarth等。
于是乎本人就从零开始了,下面是一些关键的爬坑记录。

本人环境:win10  64位。

由于本人之前没接触过docker,所以废了好大的周折才爬完这两个坑,七窍都快冒烟了。

  • 基于osrm
    • 全称(Open Source Routing Machine - C++ backend)
    • 官网  http://project-osrm.org
    • github  https://github.com/Project-OSRM/osrm-backend
  1.    下载http://download.geofabrik.de/asia/china-latest.osm.pbf(全国路网数据)。
  2. 安装docker(过程略)。
  3. docker pull osrm/osrm-backend(由于自己没接触过docker,看遍了官网也理解不到这一步)。
  4. 处理数据:docker run -t -v %cd%/data:/data osrm/osrm-backend osrm-extract -p /opt/car.lua /data/shanxi.pbf
    1. %cd%/data:/data:映射本机文件夹到镜像系统。%cd%是当前路径。冒号前面是本机的文件夹,冒号后面是镜像文件夹。
    2. osrm/osrm-backend:镜像名称。
    3. /opt/car.lua:镜像系统中的车配置文件。
    4. /data/shanxi.pbf:本机中的配置文件。  
  5. 处理数据:docker run -t -v %cd%/data:/data osrm/osrm-backend osrm-contract /data/shanxi.osrm
  6. 经过上面两次的处理,在data文件中的数据如下:
  7. 技术图片
  8. 开启服务:docker run -t -i -p 5000:5000 -v %cd%/data:/data osrm/osrm-backend osrm-routed /data/shanxi.osrm
    1. 说明:-p 5000:5000是将镜像端口映射到本机端口
  9. 访问测试:http://localhost:5000/route/v1/driving/114.818115,40.722283;112.532959,37.805444?steps=true技术图片
  • 基于graphhopper
    • 官网  https://www.graphhopper.com/developers
    • github   https://github.com/graphhopper/graphhopper
  1. 安装jdk(过程略)。
  2. 从github下载zip包、graphhopper-web-0.13.0.jar。
  3. 从zip包中复制config-example.yml到当前的目录。注释掉前面的没用的。
  4. 下载http://download.geofabrik.de/asia/china-latest.osm.pbf(全国路网数据)。
    • 至此,以准备好三样东西:jar包,yml配置,.pbf数据。
  1.   打开cmd运行java -Xmx1g -Xms1g -Ddw.graphhopper.datareader.file=shanxi.pbf -jar graphhopper-web-0.13.0.jar server config.yml。出现如下界面:
  2. 技术图片
  3. 访问测试:http://localhost:8989/route/?point=39.508279%2C112.456055&point=37.190955%2C112.571411&type=json&locale=zh-CN&vehicle=car&weighting=fastest&points_encoded=false
  4. 技术图片
  5. 访问对应本地map:http://localhost:8989/maps/?point=39.508279%2C112.456055&point=37.190955%2C112.571411&locale=zh-CN&vehicle=car&weighting=fastest&elevation=false&use_miles=false&layer=Omniscale
  6. 技术图片
  7. 个人总结:

    1.每次更新配置文件/更改数据源,需要删除graph-cache下的文件。

    2.增加这两个参数,能设置起点/终点的搜索范围。

    index.high_resolution: 1000000
    index.max_region_search: 40

    3.源码文件在:E:\routeEngine\route\graphhopper-master\core\src\main\java\com\graphhopper\GraphHopper.java 下。

    4.访问这个http://localhost:8989/info能拿到一些有用的数据。

    5.更改配置文件的graph.flag_encoders: car,foot,统一提供车/步行服务。

    6. 请求路径后面加上ch.disable=true,就可以用weighting=fastest/shortest模式了。

  8. 最后附上自己运行例子,纯离线:
  9. 技术图片

个人总结:据官网介绍,osrm是可以作为一个lib与c++无缝结合的,这个有待研究,如果真这样的化,就完成摒弃了B/S架构这种模式,像osgEarth就无缝结合了。总体管局graphhoper的官网要比osrm写的详细的多,osrm运行性能要比它高,osrm可以脱离docker直接编译在win上。

个人demo下载地址:https://pan.baidu.com/s/1qQhVgsDe9zubLNjUyKZIVw 。

Gis地图离线路由规划服务搭建

标签:镜像端口   project   source   dev   范围   配置   reader   下载地址   文件夹   

原文地址:https://www.cnblogs.com/airduce/p/12878163.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!