Вышла в свет обновленная версия русскоязычной базы данных стран и городов. Основные изменения:
- за счёт новой базы ipgeobase.ru повысилась точность определения городов Украины
- из бесплатной версии базы geobaza.ru исчезли города, поэтому точность определения городов других стран СНГ понизилась
- добавлен скрипт, с помощью которого вы можете самостоятельно обновлять базу (без добавления новых городов и стран)
- таблицы net_ru_2 и net_su удалены из базы, изменены примеры запросов
База распространяется в двух модификациях: «Страны и города» (21Mb, после установки ~122Mb) и «Только страны» 2Mb, после установки ~13Mb). Также в архивах находится небольшой пример использования базы данных на php.
Точность определения страны ~99%, точность определения городов в среднем ~95%. Много это или мало – зависит от задач, которые собираетесь решать с помощью этой базы.
Тестовое демо – определение вашей страны и города по IP-адресу
Рабочее демо – определение вашего города в форме поиска билетов
Для установки базы рекомендую воспользоваться программами типа mysqldumper или через ssh выполнить
mysql –p –uюзер база_данных < файл.sql
«Скрипт обновления» (~300Kb, после установки ~1Mb) адаптирован только для текущей версии базы (июнь 2011), обновить с его помощью прежние версии невозможно. Для обновления базы импортируйте файл geo_update_2011_06.sql (содержит две технические таблицы), скачайте свежие архивы с maxmind и ipgeobase и запустите из консоли update_maxmind.php и update_ru.php. При обновлении базы городов maxmind выполняется ~4 миллиона select-ов и ~2 миллиона insert-ов, поэтому операция требует значительных ресурсов и времени (~30-60 минут). Обновление базы городов maxmind выполняется 20-30 минут.
В справочнике стран присутствуют острова, которые не являются независимыми государствами, но значительно удалены от своих метрополий.
В справочнике городов возможны ошибки (в том числе дубли).
В базе «Только страны» есть блоки IP только европейских стран (из ipgeobase, таблица net_euro) и стран всего мира (в том числе европейских, из maxmind, таблица net_country_ip). Теоретически европейские страны должны точнее определяться по первому варианту, но практической проверки не было.
Идеи по усовершенствованию и повышению качества базы приветствуются.
Немного статистики
В текущей версии базы 94,615 населенных пунктов.
Количество населенных пунктов по разным странам:
Страна | Количество |
---|---|
Германия | 18,468 |
США | 15,798 |
Италия | 6,645 |
Австрия | 6,417 |
Испания | 5,721 |
Австралия | 5,134 |
Франция | 4,651 |
Российская Федерация | 3,287 |
Канада | 3,027 |
Польша | 2,844 |
Бразилия | 2,342 |
Швейцария | 1,814 |
Бельгия | 1,589 |
Япония | 1,445 |
Португалия | 1,289 |
Ирландия | 1,128 |
Аргентина | 1,086 |
Мексика | 1,069 |
Украина | 800 |
Китай | 724 |
Болгария | 615 |
Великобритания | 585 |
Колумбия | 545 |
Индия | 359 |
Люксембург | 359 |
Южно-Африканская Республика | 333 |
Норвегия | 330 |
Турция | 304 |
Новая Зеландия | 280 |
Венгрия | 262 |
Сербия | 221 |
Чили | 203 |
Казахстан | 194 |
Филиппины | 188 |
Чехия | 176 |
Румыния | 171 |
Республика Корея | 166 |
Словакия | 161 |
Швеция | 159 |
Нидерланды | 157 |
Хорватия | 141 |
Эквадор | 141 |
Финляндия | 134 |
Гватемала | 126 |
Венесуэла | 123 |
Гондурас | 121 |
Беларусь | 102 |
Иран | 96 |
Греция | 96 |
Литва | 95 |
Израиль | 91 |
Латвия | 89 |
Эстония | 85 |
Молдова | 85 |
Тринидад и Тобаго | 79 |
Перу | 69 |
Барбадос | 56 |
Ямайка | 56 |
Коста-Рика | 56 |
Индонезия | 56 |
Доминиканская республика | 53 |
Маврикий | 52 |
Дания | 51 |
Египет | 46 |
Марокко | 43 |
Македония | 41 |
Армения | 40 |
Нигерия | 39 |
Вьетнам | 38 |
Алжир | 38 |
Уругвай | 36 |
Панама | 36 |
Сальвадор | 33 |
Словения | 30 |
Малайзия | 30 |
В остальных странах менее 30 населенных пунктов.
Добавлено 09.06.2011
Оптимизирован скрипт обновления базы maxmind, операция выполняется быстрее и потребляет меньше вычислительных ресурсов.
Макс
25 июня 2011, 14:48
А можно использовать эту базу не локально, ставя на сервер, а онлайн, передавая запрос с GET и получая координаты?
NetLoad
4 июля 2011, 19:59
Можно, если вы установите её на свой сервер.
Павел
4 августа 2011, 1:43
Зачем так все усложнять:
select * from (select * from net_ru where begin_ip=$int
Если можно написать так:
select * from net_ru where begin_ip=$int order by begin_ip desc limit 1
Viktor
19 августа 2011, 15:27
А в какой кодировке сам файл geo_city_2011_06.sql? Хочу перевести в UTF-8 для повторной заливки на сервак. Первая попытка прошла неудачно по причине этой самой кодировке. Спасибо!
Viktor
19 августа 2011, 15:37
Всё решилось добавлением опции –default-character-set=UTF8
Oleg
16 февраля 2012, 13:49
А где можно взять список регионов с англ. и русскоязычным наименованием ?