2

我需要从一组选定的城市中找到最近的城市。

我们公司有一份子公司名单(在我国大约有 100 家)。我们每天收到大约 3000 个请求。此请求应分配给子公司(按地理距离)。

有没有 API 可以做到这一点?

最好的是(java)GoogleMaps API 或类似的网络服务。

最好的问候,克里斯蒂安。

4

3 回答 3

2

我要做的是根据地理距离构建您子公司的Voronoi 图,并将该图以可在您的代码中使用的形式存储。然后,查找每个请求的包含单元格,这将告诉您哪个子公司是最接近的。

如果您真的想使其精确,您可以使用 OSM 的道路网络根据行驶距离来构建图表,而不仅仅是地理上的。

于 2012-09-10T08:07:53.027 回答
0

从Nominatim获取坐标,从 java 应用程序发出请求应该很简单。计算每个城市到每个城市的大圆距离。我不得不承认结果可能是 300 乘 300?大批。但是它可能只包含整数。将其保存在内存中以备将来请求。查找行或列中编号最小的条目。

于 2012-09-09T02:49:53.467 回答
0

一个老问题,对你来说可能为时已晚。

在绝对精度不是本质的情况下,速度问题的一个很好的近似值是围绕一个点绘制一个矩形(您需要在此处找到最近的子公司)。该矩形本身将具有 NE 和 SW 坐标边界(或 NW/SE)。

要找到最近的子公司,需要找到所有的NE坐标比矩形的“小”和“多”的SW边界。

我引用“更多”和“更少”是因为它们的含义可能不同,具体取决于您在地球上的位置。

几年前,我为自己的需要写了https://github.com/grumlimited/geocalc 。查看有关名称“BoundingArea”的部分。

于 2015-08-28T18:29:17.930 回答