2009-11-26 91 views
0

我正在从一个非统一位置的大表中提取位置实体('麦迪逊广场花园','圣地亚哥动物园'等)。 我试图避免在我的新表中的多个实体。 我没有可靠的街道地址,但我试图提取本地范围内的地址。避免地理编码范围冲突

我通过在30公里范围内计算和匹配类似名称来完成此操作。

我正在浏览经过地理编码的城市表格,并为每个城市创建纬度/经度范围,然后提取该范围内的地点名称。

以麦迪逊广场花园为例。场地会在城市的不同城市重复多次。例如,曼哈顿,纽瓦克等都可能重叠纽约市场范围,并导致纽约市一些物业的多个参赛项目。

我不能只是设置的范围,以更小的面积,因为我会错过的地点,或更糟的是,有更多的多个条目结束了,因为我不经常有好的街道/城市/地理编码的位置(虽然30公里区域似乎工作得很好)。

我希望geohashing能够让我创建一个边界框,在那里我能够找到重叠,并避免多个条目,但似乎并非基于我发现的情况。

理想情况下,我相信我正在寻找一个散列或其他值,我可以放入一个单元格中,并存储一个唯一的位置名称/散列,这样mysql不会以多个条目为单个位置结束。

我没有正确的街道地址为每个条目(虽然我确实有一些),所以获得街道级别的准确性和不使用范围似乎并不是一个选项。 我也没有一致的城市名称,所以我最终与纽约,纽约,曼哈顿等等。但我的城市表格更好,包括纽约,但不是纽约市。

_ED------ EDITED -------------------- 再看一遍Geohash.org后,我认为我处于正确的轨道上,只是缺少一点粒度。 如果我采用散列的前两个字符,则这个字符在一个太大的范围内是一致的。例如,从victoria,bc到portland的所有内容,或者前两个字符都是'C2'。 然而,去一个3个字符的解决方案, 纽约市开始'dr5'和纽瓦克(这很好),但哈肯萨克是'dr7'。 更糟糕,Vanouver,BC。是'C2b',但里士满BC的郊区是'C28'。

+0

这听起来像你只是想为每个位置最好的城市匹配。一个简单的方法就是选择距离您所在地到市中心最短距离的城市。这并不完美,但要做得更好,您可能需要为每个城市划定一个边界多边形。 – 2009-11-26 21:16:50

+0

是的,我很愿意这样做基思,不幸的是,我认为我报废的数据太麻烦了。我正在经历几百万行,并从半结构化数据中挑选出位置。我并不总是有与该位置相关的准确城市名称,我将如何决定曼哈顿和纽约之间的?那种东西是我认为让我沮丧的东西。 – pedalpete 2009-11-26 21:39:12

回答

1

我已经建立了一个类似的服务,需要经纬度坐标并返回最近的城市。我使用了http://www.globixdata.com/的数据库,其中包含城市名称和经纬度坐标以及其他可能相关的数据,如近似人口。如果您的地址或点位于城市之间的边界,则可能无法获得100%准确的结果。

我为数据库支付了费用,但是您也许可以通过一些调查在网上免费找到类似的东西。