All Projects → zverok → ruadm

zverok / ruadm

Licence: other
Административные единицы России

Programming Languages

ruby
36898 projects - #4 most used programming language

Административные единицы России

Этот репозиторий содержит данные (и скрипты для их извлечения) по административным единицам России (вплоть до уровня 4 — населённый пункт), а также федеральным округам, в которые они входят.

Данные о населённых пунктах и административном делении извлекаются из базы КЛАДР.

Данны о разбиении регионов по федеральным округам, остутствующие в КЛАДР, извлекаются из статьи Википедии.

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

Описание данных

Описанные ниже файлы лежат в репозитории в папке data. Извлечь более свежие данные можно с помощью скриптов, лежащих в папке script (инструкции в разделе «Запуск скриптов»).

Данные можно использовать, склонировав/скачав репозиторий, или забирать онлайн через CDN RawGit, см. «Онлайн-использование данных»

Описание файлов с данными:

kladr.csv (≈33 Мб)

Данные в CSV-формате. Колонки (заголовки есть в файле):

  • code — код КЛАДР;
  • level — уровень КЛАДР (1 — регион, 2 — район, 3 — город, 4 — населённый пункт);
  • type — расшифровка уровня КЛАДР (соответственно region, raion, city, settlement);
  • name — название (для регионов также см.колонку region_wikiname);
  • city_code — для города — повторение КЛАДР-кода города; для посёлка, подчинённого городу — КЛАДР-код города, которому он подчинён;
  • city_name — расшифровка city_code;
  • raion_code — код района, в котором находится данный город/посёлок; для района — его собственный код;
  • raion_name — расшифровка raion_code;
  • region_code — код региона, в котором находится данный город/посёлок/район; для региона — его собственный код;
  • region_name — расшировка region_code;
  • district — название федерального округа, в который входит регион (без слов «ФО»/«федеральный округ»);
  • region_wikiname — название региона согласно Википедии (обычно полнее и читабельнее названия по КЛАДР).

NB: и да, слово raion в английском языке есть и означает именно то, что нам надо, спасибо за беспокойство.

kladr.json (≈56 Мб)

Те же данные, что в kladr.csv, в виде JSON-хеша (код КЛАДР → данные). Один элемент хеша:

{
  ...
  "6600000100000": {
    "code": "6600000100000",
    "level": 3,
    "type": "city",
    "name": "Екатеринбург",
    "district": "Уральский",
    "region": {
      "code": "6600000000000",
      "name": "Свердловская",
      "wikiname": "Свердловская область"
    },
    "city": {
      "code": "6600000100000",
      "name": "Екатеринбург"
    }
  }
  ...
}

settlement2region.json (≈ 5 Мб)

Простой хеш для быстрого отображения названия населённого пункта в название региона:

{
  "Екатеринбург": "Свердловская"
}

Внимание! При наличии нескольких совпадающих названий населённых пунктов — ключом, естественно, может стать только один. Предпочтение отдаётся тому, что больше (региону «Москва», а не нескольким различным городам и посёлкам «Москва»), при наличии нескольких населённых пунктов одного размера (напр. посёлок Зырянка) — тому, у которого меньше КЛАДР-код.

settlement2region2.json (≈ 5.6 Мб)

То же что предыдущее, но с названиями регионов из Википедии, а не КЛАДР (более красивыми).

{
  "Екатеринбург": "Свердловская область"
}

settlement2district.json (≈ 5 Мб)

Простой хеш для быстрого отображения названия населённого пункта в федеральный округ:

{
  "Екатеринбург": "Уральский"
}

city2region.json (≈ 320 Кб)

То же, что settlement2region.json, но только для административных единиц уровня 3 (город) и выше.

city2region2.json (≈ 420 Кб)

То же, что settlement2region2.json, но только для административных единиц уровня 3 (город) и выше.

city2district.json (≈ 320 Кб)

То же, что settlement2district.json, но только для административных единиц уровня 3 (город) и выше.

Онлайн-использование данных

CDN RawGit предоставляет доступ к данным онлайн.

Пример полезного URL: https://rawgit.com/zverok/ruadm/master/data/settlement2district.json

Пример Ruby-кода, использующего данные:

require 'json'
require 'open-uri'

url = 'https://rawgit.com/zverok/ruadm/master/data/settlement2region2.json'

data = JSON.parse(open(url).read)
data['Зырянка'] # => 'Республика Саха (Якутия)'

Внимание: для реального использования рекомендуется почитать инструкции на главной RawGit!

Запуск скриптов

  1. Скачайте данные КЛАДР отсюда: http://www.gnivc.ru/inf_provision/classifiers_reference/kladr/
  2. Распакуйте и положите KLADR.DBF в script/data
  3. Запустите скрипты в следующем порядке:
# извлекает csv из DBF
ruby script/dbf2csv.rb
# разбирает КЛАДР-коды
ruby script/parse_codes.rb
# извлекает федеральные округа
ruby script/extract_districts.rb
# сливает федеральные округа с данными КЛАДР и кладёт в data/kladr.csv
ruby script/merge-districts.rb
# делает JSON-файлы
ruby script/csv2json.rb

Лицензия на данные

(Человеческими словами — данные в общем под свободной лицензией, но если сомневаетесь — лучше почитайте по ссылкам.)

Автор репозитория

Виктор Шепелев

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].