【问题标题】:How to determine which city a given long and latitude points represent?如何确定给定的经纬度点代表哪个城市?
【发布时间】:2011-11-19 11:22:15
【问题描述】:

我目前正在使用一个非常大的地理 IP 数据库,该数据库是我从许多免费软件网站中混合构建的。

问题是 - 所有这些数据库的映射是:map: (ip) -> (latitude,long)

我正在寻找一种方法,可以通过城市分辨率推断这些纬度和经度点的位置,如果可能的话 - 离线。

谢谢

【问题讨论】:

  • 只是一个建议:如果您要进行地理编码,您可能会发现映射到邮政编码或大都市统计区很有用(如果您在美国;其他国家也有类似的想法),所以然后您可以参考人口统计信息。但是,请注意您的 IP -> (lat, long) 数据库足够准确以支持这种映射粒度。通常不是。
  • @iterator - 我正在使用网上免费提供的东西。我知道它不是那么准确,但这就是我所拥有的

标签: geolocation location latitude-longitude


【解决方案1】:

【讨论】:

    【解决方案2】:

    要离线进行,您需要一个长/纬度坐标数据库,例如:http://www.maxmind.com/app/worldcities

    然后要将经/纬度与城市相匹配,您必须构建一种算法,将其缩小到误差范围内。

    一种蛮力方法可能是使用毕达哥拉斯定理来测量距离,但这会迅速杀死你的 CPU。更好的方法可能是首先排除高于或低于目标纬度/经度 1 或更多的结果,然后对剩余的结果进行测量。

    【讨论】:

      【解决方案3】:

      如果您确实需要离线信息,您可以从citycsv.com 获取城市和地区的纬度/经度信息。查询纬度/经度数据并返回城市或地区将很容易。然而,如前所述,谷歌将能够通过他们的在线地理编码工具减轻您的大量开销。

      您可以通过 cron 作业以突发模式(每天最多 2.500 次)运行 google 的地理编码,并在...的过程中填满您的离线数据库。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-09-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多