gpt4 book ai didi

python - OSRM 对 2 点之间的距离给出错误的响应

转载 作者:太空宇宙 更新时间:2023-11-03 10:52:08 28 4
gpt4 key购买 nike

我正在尝试通过 projects-osrm 获取两个地理位置之间的距离。通过 python。

import requests
source_coordinates = '18.21231,42.50830;'
dest_coordinates = '18.20971,42.50075'
url = 'http://router.project-osrm.org/route/v1/driving/'+source_coordinates+dest_coordinates

payload = {"steps":"true","geometries":"geojson"}

response = requests.get(url,params=payload)

data = response.json()
print(data)

`
{
"routes": [
{
"geometry": "oksbGmvonB??",
"legs": [
{
"summary": "",
"weight": 0,
"duration": 0,
"steps": [],
"distance": 0
}
],
"weight_name": "routability",
"weight": 0,
"duration": 0,
"distance": 0
"code": "Ok"
}
`

如您所见,我将距离设置为 0 作为响应。

但是当我在网站上输入相同的坐标时。

http://map.project-osrm.org/并输入相同的坐标,我得到 2.5 公里和 6 分钟。

下面是截图: enter image description here

我能知道为什么会发生这种情况吗?还有其他方法(开源)可以获取两地之间的距离和时间吗?

提前致谢

最佳答案

将我们讨论中出现的所有不同部分结合起来。

<强>1。主要问题 - 给出 0 行进距离。

可以找到 API 的当前文档 here (对于 >V4.x)。请注意,在“请求”下,坐标按 lon,lat 顺序提供:

String of format {longitude},{latitude};{longitude},{latitude}[;{longitude},{latitude} ...] or polyline({polyline}) or polyline6({polyline6})

您提供的当前坐标将两个位置都放在海中,假设它们在 lon,lat 配对中。因此,您很可能会以更自然的 lat,lon 顺序提供坐标。 Web 界面期望 lat,lon 从而产生您期望的输出。老实说,我不知道为什么 API 坚持使用 lon,lat

<强>2。其他路由服务

当前构建在 OSM 数据之上的路由软件列表可以在他们的 Wiki 中找到 here .其中,我广泛使用了 Graphhopper 和 OSRM,但没有使用其他的。关于我用过的那些,我可以说几句:

  • 对于大型查询,OSRM 比 Graphhoper 快得多因为它支持矩阵调用而 Graphhopper 不支持(在开源格式)。位置之间小于 300 次查询/秒对,没有区别。
  • Graphhopper 带有一个内置的前端。OSRM front-end是一个需要 JavaScript 努力集成的独立实体。
  • Graphhopper 提供便宜的 API service如果你不想自托管。

<强>3。自托管。

您当前用于 OSRM 的 API 受合理使用政策的约束。它不适用于任何重要的工作,只是偶尔调用。您还担心它更新不够频繁。这两个问题都可以通过自托管您自己的软件版本来解决(Windows 支持被 OSRM 删除,但您可以在虚拟机上构建,然后桥接端口 5000,这样您就可以从 Windows 调用 API,这就是我所做的) .

  • 可以找到构建 OSRM 说明 here .
  • 可以找到提取 map 文件的说明here
  • Geofabrik 每天更新 map 文件。您可以随时从 here 下载新的 map 文件。 .osm.pbf 格式。

    OSRM 矩阵调用的旁注。有争论here关于返回距离和时间的矩阵 API,我并不完全理解。。如果您需要该功能,您应该通过 niemeier-PSI here 加载 fork 项目的 table-distances 分支。 .我从未加载过全局 map 文件,只加载过每个国家/地区的 map 文件,因此对这种方法的任何内存问题对我来说都没有实际意义。

关于python - OSRM 对 2 点之间的距离给出错误的响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48221046/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com