RSS
 

База GeoIP – страны и города, декабрь 2011

31 Дек

Вышла в свет обновленная версия русскоязычной базы данных стран и городов. Основное изменение – удалено большое количество дублей городов.

База распространяется в двух модификациях: «Страны и города» (23Mb, после установки ~130Mb)  и «Только страны» 2Mb, после установки ~12Mb). Также в архивах находится небольшой пример использования базы данных на php.

Точность определения страны ~99%, точность определения городов в среднем ~95%.  Много это или мало – зависит от задач, которые собираетесь решать с помощью этой базы.

Тестовое демо – определение вашей страны и города по IP-адресу

Рабочее демо – определение вашего города в форме поиска билетов

Для установки базы рекомендую воспользоваться программами типа mysqldumper или через ssh выполнить
mysql –p –uюзер база_данных < файл.sql

«Скрипт обновления» (~300Kb, после установки ~1Mb) адаптирован только для текущей версии базы (декабрь 2011), обновить с его помощью прежние версии невозможно. Для обновления базы импортируйте файл geo_update_2011_12.sql (содержит две технические таблицы), скачайте свежие архивы с maxmind и ipgeobase и запустите из консоли update_maxmind.php и update_ru.php. Обновление базы городов maxmind выполняется 20-30 минут.

В справочнике стран присутствуют острова, которые не являются независимыми государствами, но значительно удалены от своих метрополий.

В справочнике городов возможны ошибки (в том числе дубли).

В базе «Только страны» есть блоки IP только европейских стран (из ipgeobase, таблица net_euro) и стран всего мира (в том числе европейских, из maxmind, таблица net_country_ip). Теоретически европейские страны должны точнее определяться по первому варианту, но практической проверки не было.

Идеи по усовершенствованию и повышению качества базы приветствуются.

Немного статистики

В текущей версии базы 87,501 населенных пунктов.

Количество населенных пунктов по разным странам:

Страна Количество
США 28,991
Германия 16,264
Австралия 4,871
Франция 4,613
Испания 3,253
Канада 3,074
Бразилия 2,926
Российская Федерация 2,258
Швейцария 1,831
Мексика 1,572
Португалия 1,349
Ирландия 1,269
Аргентина 1,189
Япония 851
Польша 712
Италия 699
Болгария 659
Великобритания 652
Колумбия 540
Украина 469
Бельгия 447
Китай 401
Люксембург 387
Индия 365
Австрия 346
Турция 306
Сербия 293
Южно-Африканская Республика 292
Чили 281
Венгрия 269
Казахстан 266
Новая Зеландия 262
Чехия 216
Румыния 215
Алжир 190
Хорватия 170
Венесуэла 144
Беларусь 138
Молдова 129
Греция 128
Перу 126
Литва 115
Эстония 115
Швеция 113
Республика Корея 112
Гватемала 108
Филиппины 101
Израиль 99
Латвия 93
Сальвадор 92
Нидерланды 88
Иран 87
Пуэрто Рико 82
Эквадор 78
Доминиканская республика 75
Коста-Рика 74
Марокко 73
Словакия 70
Индонезия 69
Пакистан 67
Гондурас 66
Тринидад и Тобаго 63
Маврикий 61
Финляндия 59
Босния и Герцеговина 59
Уругвай 52
Нигерия 52
Македония 51
Египет 50
Ямайка 50
Панама 49
Тунис 48
Парагвай 47
Кот-д’Ивуар 45
Армения 44
Никарагуа 40
Вьетнам 38
Барбадос 38
Словения 37
Малайзия 37
Узбекистан 34
Ирак 31

В остальных странах менее 30 населенных пунктов.

Добавлено 01.01.2012
Исправлена ошибка в определении некоторых российских и украинских городов.

 

Тэги:

Обсудить

 

 
  1. Юрий

    3 февраля 2012, 16:13

    Табличку регионов бы к этой базе было-бы замечательно.
    Хотелось бы видеть область а не только город.

     
  2. Денис

    1 марта 2012, 17:08

    Ощущение, что не хватает таблицы net_regions с названиями регионов и областей, код которых указан в таблице net_city в поле region.
    Также неплохо добавить флаг для города «областной центр», и совсем уж на будущее – численность населения.

     
  3. NetLoad

    2 марта 2012, 13:10

    Подскажите, где найти эту информацию.

     
  4. Паша

    11 марта 2012, 20:38

    http://www.geonames.org/ нужно немного поломать голову, но запользовать вполне можно

     
  5. Денис

    7 июня 2012, 17:25

    Пиздец какой-то а не база.
    Москва в таблице net_ru по ip определяется как 23541, а в базе net_city под таким номером.. ничего нет! Москва в net_city же имеет 49849.
    Я боюсь теперь этой базы, если самый крупный город имеет такой косяк, то что с другими городами ?

     
  6. Денис

    7 июня 2012, 18:48

    Вообщем основная проблема в том что в net_t_city поле link_id не совпадает с полем id в net_city

    Увидеть список проблемных городов (в России) можно с помощью select tc.name,tc.district,tc.link_id,r.regname,c.* from net_t_city tc left join net_city c on (c.name_ru=tc.name) left join net_reg r on (c.region=r.Id)where link_id IN (select DISTINCT(nr.city_id) from net_ru nr where city_id not in (select id from net_city)) and country_id=20 and tc.district=r.regname

     
  7. Максим

    15 августа 2012, 10:11

    Помогите, пожалуйста!!!! Напишите пошагово как обновить базу

     
  8. NetLoad

    15 августа 2012, 10:23

    Максим,
    1. Импортируете файл geo_update_2011_12.sql
    2. Скачиваете файлы http://geolite.maxmind.com/download/geoip/database/GeoIPCountryCSV.zip и http://geolite.maxmind.com/download/geoip/database/GeoLiteCity_CSV/GeoLiteCity_20120807.zip , распаковываете
    3. Запускаете из консоли скрипты update_maxmind.ph и update_ru.php