【发布时间】:2013-06-28 16:28:56
【问题描述】:
用户注册我的网站并输入他们的邮政编码。我想查询其他用户,并按距离排序。
我有一个充满邮政编码的数据库,每个邮政编码都有纬度/经度点。
zip_code (char)
lat (float)
lon (float)
我有一种方法可以计算两组纬度/经度之间的距离,但是在我的数据库中的每个其他邮政编码上运行它是昂贵的。我需要在每个邮政编码组合上运行它。我想我可以做一次并将其存储在某个地方,但是我将它存储在哪里呢?每个邮政编码都有一个表格,其中包含到每个其他邮政编码的距离,这似乎很奇怪。有没有一种干净的方法可以做到这一点?
【问题讨论】:
-
你需要一个图(存储在缓存中):networkx.github.io。只需使用距离初始化边的权重,并使用 zip_code ID 初始化节点。这样你就有 O(1) (节点查找)+ O(|E|) (节点的度数线性)
-
我认为你的问题的标题具有误导性,因为这不是你想知道的。
-
您的用户在美国吗?然后根据 lon 对 lat/lon 进行排序。这样您就不需要测试 lon 距离 2 度或更多度的点。
标签: python geocoding geospatial geo