GeoIP最近(最近)的国家/地区

时间:2010-08-07 22:40:38

标签: geolocation country geoip

伙计们我有一点问题,我试图在基于GeoIP的系统上找到一些例子,扩展基于最近邻国的搜索。例如,访问者来自英国,并试图从法国,西班牙,比利时等地查找IP,例如巴西,阿根廷,中国。那么我如何从一个给定的国家/地区/ IP获得最近的国家并扩大距离呢?

编辑:我正在使用免费的Max-mind版本,因为我并不关心那些城市。我的项目是基于C#。

2 个答案:

答案 0 :(得分:1)

嗯,减少问题的第一步是使用基本地理位置,并按continents对国家进行分类。

从那里,您可以列出给定大陆内的距离,并根据“距离”或“权重”进行排序。

如果你想要开始,首都城市之间的地理距离(例如公里或英里)应该是一个“足够好”的近似值。我打赌你甚至可以通过互联网搜索到这样的列表。

从那里你有“邮局问题”(Knuth)或“nearest neighbor search”优化问题,在这种情况下我怀疑你可以[ REWORDED ]在各大洲分区内进行线性搜索。如果您需要更好的性能,那么近似算法方法就足够了。 (答案不能保证是最佳解决方案,但大部分时间应该合理)

请注意,这种基于地理位置的“路由”形式在少数特殊情况下很弱,例如古巴,它无法从其(天真)明显的地理邻居美国和一些“黑洞”类型的国家获得互联网接入由于政治关系。我怀疑朝鲜和西藏是类似的案件。

答案 1 :(得分:0)

Maxmind为您提供每个国家/地区的纬度/经度,因此您只需计算您所在国家/地区与其他国家/地区的差异即可。请参阅this thread for geolocation distance calculation或使用您选择的库。

但请记住,某个国家/地区的地理位置只是 该国家/地区的单点,而不是最近指向您。