Да, ещё одна. И совсем не всех. Эта база данных вовсе не собирается хвастаться десятками тысяч строк. Как раз наоборот: цель — предоставить необходимый минимум. Естественно, необходимость использовать справочник населённых пунктов есть во многих проектах. И получить полную БД можно легко и просто из ФИАС. Так зачем же нужен этот «велосипед»?
Вряд ли кто-то не в курсе про ФИАС fias.nalog.ru/Updates — если не принимать во внимание некоторые ошибки (циклы по NEXTID, несколько актуальных записей одного объекта без PREVID и т.п.), которые иногда возникают и относительно оперативно устраняются по запросу, то лучшего источника нет. Однако, в своём продукте хочется сделать все красиво и удобно: например, изначально при простом поиске отсеять небольшие населённые пункты — а такой информации в ФИАС, к сожалению, нет. Перейти к более простой двухуровневой иерархии: населённый пункт внутри региона — никаких муниципальных районов. Возможно ли? На практике оказалось, что да (небольшая демонстрация в поисковой строке сайта). Если мы возьмём населённые пункты с более 1000 жителями, то получим охват примерно в 89% населения.
В общем, короткое введение закончилось и представляю небольшой open data проект – населённые пункты РФ с численностью населения более 1000 человек. Каждая запись содержит идентификатор ФИАС – по нему сопоставляется ОКТМО, ОКАТО (которые часто меняются); часовой пояс – если у вас есть оповещение по СМС, польза очевидна; ссылка на статью Википедии, откуда получена информация о численности населения и координатах.
Небольшие очевидные замечания:
Обратная связь, проверка, корректировка данных, предложение ввода дополнительных полей и парсеры данных для них из открытых источников приветствуются.
Вряд ли кто-то не в курсе про ФИАС fias.nalog.ru/Updates — если не принимать во внимание некоторые ошибки (циклы по NEXTID, несколько актуальных записей одного объекта без PREVID и т.п.), которые иногда возникают и относительно оперативно устраняются по запросу, то лучшего источника нет. Однако, в своём продукте хочется сделать все красиво и удобно: например, изначально при простом поиске отсеять небольшие населённые пункты — а такой информации в ФИАС, к сожалению, нет. Перейти к более простой двухуровневой иерархии: населённый пункт внутри региона — никаких муниципальных районов. Возможно ли? На практике оказалось, что да (небольшая демонстрация в поисковой строке сайта). Если мы возьмём населённые пункты с более 1000 жителями, то получим охват примерно в 89% населения.
В общем, короткое введение закончилось и представляю небольшой open data проект – населённые пункты РФ с численностью населения более 1000 человек. Каждая запись содержит идентификатор ФИАС – по нему сопоставляется ОКТМО, ОКАТО (которые часто меняются); часовой пояс – если у вас есть оповещение по СМС, польза очевидна; ссылка на статью Википедии, откуда получена информация о численности населения и координатах.
Небольшие очевидные замечания:
- эта база данных не подойдет для заполнения граф типа «место рождения» — для неё следует использовать полную БД ФИАС, более того с историческими данными (если честно, лучше этого не делать – делайте поле строкой)
- если ваш проект затрагивает очень маленькие населённые пункты, то можно использовать эту БД только для удобства выбора, нужен «расширенный режим» — который тоже можно чуть упростить, исключив из полной БД ФИАС населенные пункты, содержащиеся в этой базе
- используя ФИАС, храните не только выбранный AOID, AOGUID, а также используемую версию БД ФИАС
Обратная связь, проверка, корректировка данных, предложение ввода дополнительных полей и парсеры данных для них из открытых источников приветствуются.
ainu
В своё время по работе возился с городами (и тоже сделал аналогичную базу). Так вот, есть такой посёлок — Ганино, Кировская область, населением 2605 человек. и у Вас в базе его нет.
Вероятно по той же причине, по которой его не было и у меня в самом начале работы. Причина простая: родительский объект этого посёлка — не район (как у деревни Нижний Наратбаш), не область (как у Самары), а другой город (Киров). Причём это не именованная часть города (как Вознесенское в Казани), не район города (как Ново-Савиновский в Казани), а прямо посёлок, со своим главой администрации.
Кроме того, в базе нет одного интересного города, который сам (с оговоркой) является субъектом РФ. Таких на самом деле не три (Москва, Питер, Севастополь), а четыре, и четвёртый это Байконур. Формально он не является субъектом РФ, только городом, но другого родительского объекта над ним нет, поэтому в терминах структуры базы данных это субъект.
ainu
Наверное стоит добавить, что Байконур входит в некий «94-й регион», с номерами машин «94RUS», туда же относится Антарктика.
Elsajalee Автор
— Нет, подчиненность другому населенному пункту в моей базе указана ( поле part_of, locdb.ru/doc ) Указанного вами и нескольких других ( ru.wikipedia.org/wiki/Административное_деление_Кирова ) нет по причине отсутствия странички в Википедии. Там многих посёлков, к сожалению, нет ( ru.wikipedia.org/wiki/Ганино ). Есть регионы, где все хорошо и странички есть даже куда у меньших посёлков, а есть «проблемные». Конкретно в этом случае я даже не заметил бы отсутствия, т.к. на практике всё равно менеджеры использовали бы Киров, а далее была бы выбрана улица вида «пос. Ганино \ ул. ***». Но повторюсь: в этом случае, применительно к БД, причина только в отсутствии странички Википедии.
— Смысл базы больше не в интересных городах, а в практическом применении. Но вы правы, Байконур, пожалуй, мне следует добавить, хоть это и Казахстан, но «арендован Россией на период до 2050 года». Моя база не соответствует иерархии ФИАС, о чем сразу и заявлено (двухуровневая иерархия), поэтому по аналогии с Москвой — регион: «Байконур», населенный пункт «город Байконур». Страничка есть ru.wikipedia.org/wiki/Байконур_(город)
— По быстрому гуглению в населённых пунктах (если станции так назвать) Антарктики значительно менее 1000 человек ( sevabashirov.livejournal.com/281499.html ), особенно в российских :)