ubuntu20.4搭建本地地图服务(本地OSRM)

  1. 下载地图数据文件(xxx.osm.pbf),下载网址http://download.geofabrik.de/,例如下载Asia下的China的文件(China.osm.pbf),并放到对应的安装路径/home/user/Desktop/China_osm(记住这个路径)。

  1. 确保ubuntu已经成功安装docker,如果还未安装可以参考https://blog.youkuaiyun.com/qq_53258482/article/details/129215605?spm=1001.2014.3001.5501

  1. 使用命令进行搭建

cd /home/user/Desktop/China_osm

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

sudo docker run -t -v $(pwd):/data osrm/osrm-backend osrm-partition /data/China.osrm

sudo docker run -t -v $(pwd):/data osrm/osrm-backend osrm-customize /data/China.osrm

sudo docker run -t -i -p 5000:5000 -v $(pwd):/data osrm/osrm-backend osrm-routed --algorithm mld /data/China.osrm

  1. 使用web端查看

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

  1. python 在本地调用OSRM进行路网距离请求

import os

import requests

OSRM_HOSTPORT = os.getenv("OSRM_HOSTPORT", "localhost:5000")

def calDisOSRM(ori, dst):

url = """http://{hostport}/route/v1/driving/{lon0},{lat0};{lon1},{lat1}?overview=full""".format(

hostport=OSRM_HOSTPORT,

lon0=ori[1],

lat0=ori[0],

lon1=dst[1],

lat1=dst[0]

)

while True:

try:

responses = requests.get(url).json()

print(responses)

break

except Exception:

print("error")

route = responses["routes"][0] # Getting the next route available

tripdistance = route["distance"]

#print("Dist: ", tripdistance)

return tripdistance

ori = [30.68435,104.34834]

dst = [30.67,104.0578]

dist = calDisOSRM(ori, dst)

print("dist:",dist)

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值