我目前使用的是一个非常大的geo-ip数据库,它是我从许多免费软件网站上混合而成的。
问题是-所有这些数据库的映射是: map:(ip) -> (latitude,long)
我正在寻找一种方法,可以通过城市的分辨率来推断这些纬度和长点的位置,如果可能的话-离线。
谢谢
发布于 2011-11-19 19:27:18
你可能想试试谷歌地理编码http://code.google.com/intl/en/apis/maps/documentation/geocoding/
发布于 2011-11-19 19:32:22
要离线执行此操作,您需要一个经纬度坐标数据库,如下所示:http://www.maxmind.com/app/worldcities
然后,为了匹配城市的经度/纬度,您必须构建一个算法,将其缩小到误差范围内。
一种暴力方法可能是使用毕达哥拉斯定理来测量距离,但这会迅速杀死您的CPU。更好的方法可能是从排除高于或低于目标经度/纬度1或1以上的结果开始,然后对剩余的结果进行测量。
发布于 2012-10-31 06:05:27
如果您确实需要脱机信息,您可以从citycsv.com获取城市和地区经纬度信息。查询经度/经度的数据并返回城市或地区将很容易。然而,正如所说的那样,google将能够通过他们的在线地理编码工具从您的手中节省大量管理费用。
您可以通过cron作业以突发模式(每天最多2.500个)运行google的地理编码,并在此过程中填满您的脱机数据库。
https://stackoverflow.com/questions/8193692
复制相似问题