首页 > 解决方案 > 如何将多达 25k 个位置发送到 OSRM 矩阵表函数

问题描述

我正在尝试使用osrm包 (table function)在 Python 中计算时间和距离矩阵。我正在使用自己的服务器(在 Docker 中运行)。Docker 映像基于此示例。默认情况下,我只能发送 1000 (lat,lng)。但是,通过--max-table-size在初始化 Docker 容器时使用该参数,我可以增加该限制。

docker run -t -i -p 5000:5000 -v "${PWD}:/data" osrm/osrm-backend osrm-routed --algorithm mld --max-table-size desired_amount /data/brazil-latest.osrm

由于我想计算一个包含超过 20k 个数据点(lat、lng)的矩阵,所以上面的代码行应该是这样的:

docker run -t -i -p 5000:5000 -v "${PWD}:/data" osrm/osrm-backend osrm-routed --algorithm mld --max-table-size 25000 /data/brazil-latest.osrm

这是我使用 python 发送这些点的代码:

time_matrix = osrm.table(list_coord, annotations = "duration,distance", output = 'raw')

看起来像这样的坐标列表在哪里list_coord(并且有超过 20k 个坐标):

[(-46.6954, -23.6702),
 (-46.744095, -23.657433),
 (-46.591366, -23.7729),
 (-46.5698, -23.7074),
 (-46.64778, -23.59573)]

初始化容器时效果很好,但是当发送超过 20k 数据点的请求时,我收到此错误:

RemoteDisconnected: Remote end closed connection without response

有什么方法可以发送超过 20k 个数据点而不会收到错误?或者我应该如何处理这个问题?如果有人有任何想法,我将非常感谢您的帮助。

标签: pythondockerosrm

解决方案


推荐阅读