GeoIP ближайшая (ближайшая) страна

Ребята, у меня небольшая проблема, я попытался найти несколько примеров системы на основе GeoIP, которая расширяет поиск на основе ближайших соседних стран. Например, посетитель из Великобритании и пытается найти IP-адреса из Франции, Испании, Бельгии и т. Д., А не из Бразилии, Аргентины, Китая. Итак, как я могу получить ближайшие страны из данной страны / IP-адреса и увеличивать расстояние, увеличивая расстояние?

Изменить: я использую бесплатную версию Max-mind, так как меня не очень волнуют города. И мой проект основан на C #.


person Anonymous    schedule 07.08.2010    source источник


Ответы (2)


Итак, первый шаг к уменьшению проблемы - использовать базовую географию и классифицировать страны по континентам.

Оттуда вы можете составить список расстояний в пределах данного континента и отсортировать их по этим «расстояниям» или «весам».

Географическое расстояние (например, км или миль) между столицами должно быть «достаточно хорошим» приближением, чтобы начать работу, если вы хотите быть фантазией. Бьюсь об заклад, вы даже можете найти такой список, немного поискав в Интернете.

Оттуда у вас есть "проблема с почтовым отделением" (Knuth) или "поиск ближайшего соседа" проблема оптимизации, и в этом случае я подозреваю, что вы можете [ПЕРЕПИСАТЬ] просто использовать линейный поиск в разделах континентов. Если вам нужна лучшая производительность, то подходящего приблизительного алгоритма должно быть достаточно. (ответы не гарантируются как лучшее решение, но в большинстве случаев должны быть разумными)

Обратите внимание, что эта форма "маршрутизации" на основе географии является слабой в нескольких исключительных случаях, таких как Куба, которая не получает доступа в Интернет от своего (наивного) очевидного географического соседа, США, и некоторых стран типа "черной дыры" из-за политических соображений. связи. Я подозреваю, что Северная Корея и Тибет - аналогичные случаи.

person mctylr    schedule 07.08.2010
comment
Действительно, очень хороший подход, я рассмотрю его, но пока эта реализация выглядит сложной. - person Anonymous; 08.08.2010

Maxmind дает вам широту / долготу каждой страны, поэтому вы можете просто рассчитать разницу между вашей страной и другими, и все готово. См. этот поток для расчета расстояния геолокации или используйте библиотеку по вашему выбору.

Но имейте в виду, что географическое положение страны - это просто отдельная точка где-то в этой стране, а не ближайшая точка к вам.

person mattelacchiato    schedule 17.02.2015