Вышла в свет обновленная версия русскоязычной базы данных стран и городов. Основные изменения:
- за счёт новой базы 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
А где можно взять список регионов с англ. и русскоязычным наименованием ?