我目前正在使用一个非常大的geo-ip数据库,我将其作为许多免费软件网站的混合物构建。
问题是 - 所有这些数据库的映射是:map:(ip) - > (纬度,长)
我正在寻找一种方法,可以通过城市的分辨率推断出那些纬度和长点的位置,如果可能的话 - 离线。
感谢
答案 0 :(得分:2)
您可以尝试使用Google地理编码http://code.google.com/intl/en/apis/maps/documentation/geocoding/
答案 1 :(得分:0)
要离线执行,您需要一个长/纬坐标数据库,例如:http://www.maxmind.com/app/worldcities
然后将长/纬度与城市匹配,你必须建立一个算法,将其缩小到误差范围内。
蛮力方法可能是通过使用毕达哥拉斯定理来测量距离,但这会迅速杀死你的CPU。更好的方法是首先排除高于或低于目标纬度/经度的1或更多的结果,然后对剩余的结果进行测量。答案 2 :(得分:0)
如果您确实需要离线信息,可以从citycsv.com获取城市和地区的lat / lon信息。查询lat / lon数据并获取城市或地区将很容易。然而,正如所述谷歌将能够通过他们的在线地理编码工具从你的手中获得大量开销。
您可以通过cron作业以突发模式(每天最多2.500)运行谷歌的地理编码,并在...的过程中填写您的离线数据库。