2

伙计们,我有一个小问题,我试图在基于 GeoIP 的系统上找到一些示例,该系统扩展了基于最近邻国的搜索。例如,访问者来自英国,并试图从法国、西班牙、比利时等国寻找 IP,而不是巴西、阿根廷、中国。那么我怎样才能从给定的国家/IP获得最近的国家并扩大距离?

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

4

2 回答 2

1

那么,减少问题的第一步是使用基本地理,并按大陆对国家进行分类。

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

如果您想花哨的话,首府城市之间的地理距离(例如公里或英里)应该是一个“足够好”的近似值。我敢打赌,您甚至可以通过在 Internet 上进行一些搜索来找到这样的列表。

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

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

于 2010-08-07T23:17:45.630 回答
0

Maxmind 为您提供每个国家/地区的纬度/经度,因此您只需计算您所在国家/地区与其他国家/地区的差异即可。请参阅此线程以进行地理定位距离计算或使用您选择的库。

但请记住,一个国家的地理位置只是这个国家某个地方的一个点,而不是离您最近的点。

于 2015-02-17T14:52:45.113 回答