【发布时间】:2013-03-08 22:10:39
【问题描述】:
我有一个控件,允许用户输入邮政编码或在 iframe 中打开谷歌地图,然后点击地图选择位置。我目前所有这些都正常工作,iframe 会将点击事件中的纬度/经度发送回父级。
我还设置了一个数据库表,其中经纬度字段映射到邮政编码。
但是,纬度/经度组合很可能永远不会完全匹配我在数据库中的条目。所以,我正在寻找匹配最近邮政编码的最佳方式。
因为用户可以手动输入邮政编码,所以我并不完全担心精度(即,如果用户点击邮政编码之间的边界),但我希望它尽可能接近。我现在只需要担心美国的位置。
我目前对解决方案的想法是提出一些公差(.2?)并查询 db 以获取 lat/long +- 公差。然后从结果集中选择最接近的匹配项。
我很想听听以前做过这件事的人,或者有比我建议的解决方案更好的解决方案。我对使用服务不感兴趣,因为我拥有所需的所有数据。
我对我提出的解决方案的一个担忧是弄清楚什么是好的容忍度。该项目针对农村地区,我不确定这些地区的纬度/经度条目的分布范围。
编辑:这是我的表结构: zip5 |城市|状态 |纬度 |隆 |县
zip5是主键
【问题讨论】:
-
请问您为什么要尝试将纬度/经度转换为邮政编码?一旦你有了纬度/经度,你就有了通过接近度来找到其他实体的关键。拥有邮政编码对您有什么好处,而拥有纬度/经度却无法满足您的需求?
-
@Tim 根据我给出的设计规范,zip 将显示在 html 输入中。我可以反对它,但这似乎不应该那么困难。
-
如果您需要查找 2 组 lat/lon 之间的距离,请 google Greatest Circle Distance ... 然后您可以轻松计算从给定邮政编码(lat/lon)到那些的距离你有档案...
-
但是您必须使用诸如 R-trees 之类的东西或一些类似的方法来将查询限制为仅附近的一组 zip,或者您必须测量到所有这些 zip 的距离并选择最近的。
-
@dleiftah:
the ones you have on file。如果你有所有的邮政编码文件怎么办?