Классификатор населённых пунктов России, Украины, Белоруссии и Казахстана - insbor.ru
insbor.ru

insbor.ru

Привет, это я

Читаю, пишу, перечитываю и исправляю.


Что здесь происходит


Предыдущие записи


Классификатор населённых пунктов России, Украины, Белоруссии и Казахстана

Опубликовано :   |  Кем :   |  Категория :  Классификаторы

В прошлой заметке я рассказал про адаптацию стандартной базы данных населённых пунктов России КЛАДР. Теперь добавим к ней Украину, Белоруссию и Казахстан.

В итоге у нас получится русскоязычный сводный классификатор населённых пунктов крупнейших стран СНГ, стран с преобладающим использованием русского языка. С его помощью наши посетители смогут регистрироваться без выбора страны проживания. Если нам нужно знать только место жительства, то и не надо их вынуждать делать лишние телодвижения.

Выпадающий список информативный и удобный. При вводе начала названия НП(без приставки 'г.' или 'пгт') вываливается выпадающий список с названием НП, его регионом и флажком страны справа. Сомневающиеся могут навести на него  курсор и в хинте прочитать название.

Украинскую базу на русском языке я нашёл у одного туземного коллеги в XML, добавил к ней список областей. Районы внесены в строки всех НП, но как самостоятельных записей, их нет. Да, несложно извлечь, но мне не требуется. В процессе поиска встречались базы и на украинском языке, оригинал кажется выложен на каком-то официальном сайте.

Белорусская база данных попалась на официальном сайте их налоговой, была подробной и наверное самой удобной для адаптации, сразу на русском. Не знаю, есть ли реплики на белорусском, видимо, дело в невысокой его популярности в самой стране.

Казахскую найти оказалось непросто. Да, она тоже лежит на одном из официальных сайтов, но по тем же поисковым запросам, которые меня выручили со славянской тройкой, здесь ничего путного не встретилось - нужные страницы хуже проиндексированы. В итоге забрёл на один форум, где бывший сотрудник статистического агенства поделился ссылкой с кем-то, озадаченным моей проблемой.

С прошлого раза я немножко изменил структуру таблицы избавившись от совсем ненужных столбцов:

CREATE TABLE `system_classifiers_cities` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `name` varchar(40) NOT NULL COMMENT 'Наименование',
  `type_name` varchar(10) NOT NULL COMMENT 'Сокращённое наименование типа объекта',
  `prefix_type_name` tinyint(1) unsigned NOT NULL DEFAULT '0' COMMENT 'Флаг, указывающй на то, что тип пишется перед названием объекта',
  `code` varchar(13) NOT NULL COMMENT 'Код КЛАДР',
  `status` tinyint(1) unsigned NOT NULL DEFAULT '0' COMMENT 'Статусnn0 - объект не является центромn1 – райцентр;n2 – центр региона;n3 – одновременно и центр района и центр региона;n4 – центральный район, т.е. район, в котором находится центр региона',
  `country_code` smallint(5) unsigned NOT NULL COMMENT 'Международный код страны',
  `country_name` varchar(40) NOT NULL COMMENT 'Название страны',
  `region_code` varchar(5) NOT NULL COMMENT 'Код региона',
  `region_name` varchar(40) NOT NULL DEFAULT '' COMMENT 'Название региона, в котором расположен объект для вложенных объектов',
  `region_type_name` varchar(10) NOT NULL DEFAULT '' COMMENT 'Тип региона, в котором расположен объект для вложенных объектов',
  `region_prefix_type_name` tinyint(1) unsigned NOT NULL DEFAULT '0' COMMENT 'Флаг, указывающй на то, что тип региона пишется перед названием региона',
  `district_code` varchar(3) NOT NULL COMMENT 'Код областного района',
  `district_name` varchar(40) NOT NULL DEFAULT '' COMMENT 'Название района, в котором расположен объект для вложенных объектов',
  `district_type_name` varchar(10) NOT NULL DEFAULT '' COMMENT 'Тип района, в котором расположен объект для вложенных объектов',
  `district_prefix_type_name` tinyint(1) NOT NULL DEFAULT '0' COMMENT 'Флаг, указывающй на то, что тип района пишется перед названием района',
  `is_locality` tinyint(1) unsigned NOT NULL DEFAULT '0' COMMENT 'Флаг, является ли объект населённым пунктом или регионом страны',
  `longitude` float DEFAULT NULL COMMENT 'Долгота (N|S) (вещественная)',
  `latitude` float DEFAULT NULL COMMENT 'Широта (E|W) (вещественная)',
  `visible` tinyint(1) unsigned NOT NULL DEFAULT '1' COMMENT 'Видимость',
  `order` bigint(20) NOT NULL DEFAULT '0' COMMENT 'Порядок сортировки (индекс популярности)',
  `description` varchar(255) NOT NULL COMMENT 'Описание',
  PRIMARY KEY (`id`),
  KEY `cities_name_index` (`name`),
  KEY `cities_order_index` (`order`)
) ENGINE=InnoDB AUTO_INCREMENT=264708 DEFAULT CHARSET=utf8 COMMENT='Классификатор населённых пунктов России, Украины, Белоруссии и Казахстана'

Я попробовал найти аналогичный классификатор для Молдавии, но потерпел неудачу, как и надежду заиметь сводный русскоязычный классификатор НП стран СНГ. Ну да ладно.

Итого в активе имеем 168к записей по России, 30к по Украине, 27к по Белоруссии и 10к по Казахстану, т.е. 236к в сумме. Все несущественные записи и старые дубликаты названий удалены, актуальность данных - от конца двухтысячных до средины 2011 года. Данные по координатам не заполнены нигде кроме Украины, в будущем мне придётся решать эту проблему, но дожить бы до этого прекрасного будущего.. :)

Смотрим, что есть по ближайшей загранице.. Латвия не порадовала и на этом индивидуальный сбор информации был завершён. Посмотрел сводные по странам мира - везде тиражируется в разных вариациях одна база данных на 10к записей, большая часть из которых приходится на уже имеющиеся в моей версии, да к тому же с извращённой иерархией регионов. Где-то, как в США, страна разбита на штаты, а где-то, как в Испании, считается одним регионом. Уже бы так, или так, но не вперемешку..

Это не удовлетворяло моих амбиций и в дело пошла база данных GeoIP с 2.7кк(!!) записей по всему миру на английском языке и Google API транслитерации(не перевода) с английского на русский. На сколько я знаю, в открытом доступе подобные данные до сих пор не появлялись. Точность транскрипции будет конечно на троечку и гарантированно велик процент невнятных названий, но они по большей части будут собраны в странах Азии, Африки, Ближнего Востока и Латинской Америки. Те регионы, которые меня интересуют, прекрасно именуются английским алфавитом и выглядят вполне внятно. В одной из следующих заметок посмотрим, что из этого вышло.

Ну а скачать наши четыре страны можно здесь (.zip 3.2мб).