Вышла в свет обновленная версия русскоязычной базы данных стран и городов. Основное изменение – удалено большое количество дублей городов.
База распространяется в двух модификациях: «Страны и города» (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
Исправлена ошибка в определении некоторых российских и украинских городов.
Юрий
3 февраля 2012, 16:13
Табличку регионов бы к этой базе было-бы замечательно.
Хотелось бы видеть область а не только город.
Денис
1 марта 2012, 17:08
Ощущение, что не хватает таблицы net_regions с названиями регионов и областей, код которых указан в таблице net_city в поле region.
Также неплохо добавить флаг для города «областной центр», и совсем уж на будущее – численность населения.
NetLoad
2 марта 2012, 13:10
Подскажите, где найти эту информацию.
Паша
11 марта 2012, 20:38
http://www.geonames.org/ нужно немного поломать голову, но запользовать вполне можно
Денис
7 июня 2012, 17:25
Пиздец какой-то а не база.
Москва в таблице net_ru по ip определяется как 23541, а в базе net_city под таким номером.. ничего нет! Москва в net_city же имеет 49849.
Я боюсь теперь этой базы, если самый крупный город имеет такой косяк, то что с другими городами ?
Денис
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
Максим
15 августа 2012, 10:11
Помогите, пожалуйста!!!! Напишите пошагово как обновить базу
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