Данные по избирательным комиссиям РФ из ГАС Выборы: различия между версиями

Материал из GIS-Lab
Перейти к навигации Перейти к поиску
 
(не показано 120 промежуточных версий 3 участников)
Строка 1: Строка 1:
{{Статья|Черновик}}
{{Статья|Опубликована|cik-data}}
{{Аннотация|Данные об избирательных комиссиях}}
{{Аннотация|Данные об избирательных комиссиях в машиночитаемом виде}}
 
На региональных сайтах избирательных комиссий (субодомены сайта ЦИК) появилась информация о всех территориальных и участковых избирательных комиссиях (например [http://www.altai_rep.vybory.izbirkom.ru/altai_rep/ik/ Алтайский край]). К сожалению, исходно информация предоставляется не в машиночитаемом виде, что препятствует эффективному ее использованию для анализа данных и картографии. Нами были написали скрипты для скачивания всех данных о комиссиях и здесь можно получить полную БД в машиночитаемом виде.


==Общая информация==
==Общая информация==


На сайте избирательных комиссия субъектов РФ появилась информация о всех территориальных и участковых избирательных комиссиях.
Для каждой избирательной комиссии предоставляется следующая информация:
 
Для каждой избирательной комиссии предоставляется следующая информация
* Наименование избирательной комиссии
* Наименование избирательной комиссии
* Адрес комиссии
* Адрес комиссии
Строка 16: Строка 16:
Для подавляющего большинства участковых избирательных комиссий факс и адрес электронной почты не указаны.
Для подавляющего большинства участковых избирательных комиссий факс и адрес электронной почты не указаны.


Также указана информация по каждому члену избирательной комиссии
Также указана информация по каждому члену избирательной комиссии и по резерву в участковые избирательные комиссии:
* Фамилия Имя Отчество
* Фамилия Имя Отчество
* Должность (председатель/зам. председателя/секретарь/член)
* Должность (председатель/зам. председателя/секретарь/член)
* субъект, предложивший данную кандидатуру в состав комиссии
* субъект, предложивший данную кандидатуру в состав комиссии


==Скачать==
==Скачать данные==
Ниже представлены данные, скачанные с сайтов избирательных комиссий субъектов РФ.
 
Актуальность: 14.09.2021
* Единая БД по всем данным ЦИК в формате [http://gis-lab.info/data/cik/cik_20210914.7z SQLite]
* Адреса, телефоны и пр. избирательных комиссий ([http://gis-lab.info/data/cik/cik_uik_20210914.7z CSV])
* Составы комиссий ([http://gis-lab.info/data/cik/cik_people_20210914.7z CSV])
* Резерв участковых избирательных комиссий ([http://gis-lab.info/data/cik/cik_people_reserve_20210914.7z CSV])
* Исходные данные: html-страницы ([http://gis-lab.info/data/cik/cik_20210914_orig.7z файл])
 
===Архив===
Чтобы скачать предыдущие версии данных, необходимо поменять дату в ссылках на другую, имеющуюся в архиве. Доступны следующие даты:


Структура данных таблицы адресов избирательных комиссий
*20140404
*20140629
*20141119
*20150915
*20160229
*20160629
*20170121
*20170719
*20180215
*20180709
*20180906
*20190101
*20190313
*20190617
*20190905
*20191110
*20200212
*20200610
*20200628
*20200910
*20210208
*20210630


==Структура данных ==
Таблица адресов избирательных комиссий (cik_uik):
{| class="wikitable sortable"
{| class="wikitable sortable"
|-
|-
Строка 30: Строка 65:
! | Название поля  
! | Название поля  
! | Примечания
! | Примечания
! | Пример
|-
|-
| id  
| id  
| id избирательной комиссии  
| id избирательной комиссии  
|  
| Если для записи из резерва не удается найти подходящую комиссию, то в таблице адресов избирательных комиссий создается фейковая запись, которой назначается отрицательное значение id.
|45766
|-
|-
| iz_id  
| iz_id  
| id избирательной комиссии, используемый в ГАС Выборы
| id избирательной комиссии, используемый в ГАС Выборы
|  
|
| 442401997889
|-
| reserve_iz_id
| id резерва участковой избирательной комиссии, используемый в ГАС Выборы
|
| 828
|-
|-
| parent_id  
| parent_id  
| id "вышестоящей" избирательной комиссии  
| id "вышестоящей" избирательной комиссии  
|  
|
| 45764
|-
|-
| type_ik  
| type_ik  
Строка 48: Строка 92:
type_ik=tik – территориальная избирательная комиссия<br />
type_ik=tik – территориальная избирательная комиссия<br />
type_ik=uik – участковая избирательная комиссия
type_ik=uik – участковая избирательная комиссия
|uik
|-
|-
| region  
| region  
| субъект РФ, к которой относится избирательная комиссия  
| субъект РФ, к которой относится избирательная комиссия  
|  
|  
|kemerovo
|-
|-
| url  
| url  
| URL интернет страницs с информацией об избирательной комиссии
| URL интернет страницы с информацией об избирательной комиссии
|  
|  
| http://www.kemerovo.vybory.izbirkom.ru/region/kemerovo?action=ik&vrn=442401997889
|-
|-
| name  
| name  
| название избирательной комиссии
| название избирательной комиссии
|  
|  
|Участковая избирательная комиссия №545
|-
|-
| address  
| address  
| адрес избирательной комиссии
| адрес избирательной комиссии
|  
|  
| 652840, Кемеровская область, Мысковский городской округ, Чувашка поселок, улица Алтын Шор, дом 4, Дом культуры поселка Чувашка
|-
| address_voteroom
| адрес помещения для голосования
| Это поле появилось в выгрузке начиная с 15.02.2018
| 652840, Кемеровская область, Мысковский городской округ, Чувашка поселок, улица Алтын Шор, дом 4, Дом культуры поселка Чувашка
|-
| lat_ik, lon_ik
| координаты избирательной комиссии
| Эти поля появились в выгрузке начиная с 15.02.2018
| 53.597575, 87.818478
|-
| lat_voteroom, lon_voteroom
| координаты помещения для голосования
| Эти поля появились в выгрузке начиная с 15.02.2018
| 53.597575, 87.818478
|-
|-
| phone  
| phone  
| телефон избирательной комиссии
| телефон избирательной комиссии
|  
|  
|8-(384-74)-95-6-46
|-
| phone_voteroom
| телефон помещения для голосования
| Это поле появилось в выгрузке начиная с 15.02.2018
|8-(384-74)-95-6-46
|-
|-
| fax  
| fax  
| номер факса избирательной комиссии
| номер факса избирательной комиссии
|  
|  
|(38474)
|-
|-
| email  
| email  
| адрес электронной почты избирательной комиссии
| адрес электронной почты избирательной комиссии
|  
|  
|
|-
|-
| end_date
| end_date
| дата окончания полномочий избирательной комиссии
| дата окончания полномочий избирательной комиссии
|  
|  
|26.03.2018
|}
|}


Структура данных таблицы составов избирательных комиссий
Таблица составов избирательных комиссий (cik_people):
{| class="wikitable sortable"
{| class="wikitable sortable"
|-
|-
Строка 88: Строка 161:
! | Название поля  
! | Название поля  
! | Примечания
! | Примечания
! | Пример
|-
|-
| id  
| id  
| id записи  
| id записи  
|  
|  
|683770
|-
|-
| ik_id  
| ik_id  
| id избирательной комиссии  
| id избирательной комиссии  
| этот id указывает на комиссию из таблицы адресов комиссии
| этот id указывает на комиссию из таблицы адресов комиссии
|78161
|-
|-
| number
| number
| номер в списке членов избирательной комиссии  
| номер в списке членов избирательной комиссии  
| никакого смысла это поле не имеет
| никакого смысла это поле не имеет
|10
|-
|-
| fio
| fio
| Фамилия Имя Отчество члена избирательной комиссии
| Фамилия Имя Отчество члена избирательной комиссии
|  
|  
|Якимова Татьяна Валерьевна
|-
|-
| post  
| post  
| должность
| должность
|  
|  
|Член
|-
|-
| party  
| party  
| субъект, предложивший данную кандидатуру в состав комиссии  
| субъект, предложивший данную кандидатуру в состав комиссии  
|  
|  
|Свердловское региональное отделение политической партии "Российская объединенная демократическая партия "ЯБЛОКО"
|}
Таблица резервов участковых избирательных комиссий (cik_people_reserve):
{| class="wikitable sortable"
|-
! | Код поля
! | Название поля
! | Примечания
! | Пример
|-
| id
| id записи
|
|457646
|-
| ik_id
| id избирательной комиссии
| этот id указывает на комиссию из таблицы адресов комиссии. Если для записи из резерва не удается найти подходящую комиссию, то в таблице адресов избирательных комиссий создается фейковая запись, которой назначается отрицательное значение id.
|81578
|-
| number
| номер в списке членов резерва участковой избирательной комиссии
| никакого смысла это поле не имеет
|1
|-
| fio
| Фамилия Имя Отчество члена резерва участковой избирательной комиссии
|
|Васькина Юлия Николаевна
|-
| post
| должность
|
|Зачислен в резерв составов УИК
|-
| party
| субъект, предложивший данную кандидатуру в состав комиссии
|
|собрание избирателей по месту работы - ГБОУ НПО "Профессиональный лицей №10", г.Тверь
|}
|}


Строка 125: Строка 244:
Непонятна актуальность информации. Составы комиссий и адреса УИК время от времени меняются. Из представленных данных неясно, какие из этих изменений учтены.
Непонятна актуальность информации. Составы комиссий и адреса УИК время от времени меняются. Из представленных данных неясно, какие из этих изменений учтены.


'''2. Территории избирательных участков'''
'''3. Территории избирательных участков'''


Отсутствует информация о территории избирательных участков.
Отсутствует информация о территории избирательных участков.
'''4. Непостоянство структуры записи адреса избирательной комиссии'''
Встречаются разные вариации записи адреса избирательного участка
* индекс, область, район, населенный пункт, улица (название места голосования), дом
* индекс, область, район, населенный пункт (название места голосования), улица, дом
* индекс, область, район, населенный пункт, улица, дом, название места голосования
* и множество других
Название любого компонента адреса может фигурировать в разных вариантах, содержать опечатки или вообще отсутствовать. В середине адресной строки могут присутствовать неожиданные вставки вида
* Адрес УИК и помещения для голосования:
* адрес УИК
* адрес помещения для голосования
==Скрипты==
Для получения данных служат следующие скрипты:
*down.py - скачивание исходных данных
*cik.py - парсинг исходных данных в SQLite базу
[https://github.com/old-bibigon/parse-cik Исходный код]
Для преобразование SQLite -> CSV используются следующие команды:
  sqlite3 -header -csv cik.sqlite "select * from cik_people order by id" > cik_people.csv
  sqlite3 -header -csv cik.sqlite "select * from cik_uik order by id" > cik_uik.csv
  sqlite3 -header -csv cik.sqlite "select * from cik_people_reserve order by id" > cik_people_reserve.csv
==Примеры использования==
* Скачать данные об адресах и составах избирательных комиссий Башкортостана
python down.py --region=bashkortostan
* Скачать данные об адресах, составах избирательных комиссий и резервов участковых избирательных комиссий Орловской области
python down.py --with-reserve --region=orel
Список используемых наименований субъектов РФ можно посмотреть в файле cik.py
==Примеры SQL запросов==
<span style="color:#ff0000">'''NB''' В программе '''sqlite''' по умолчанию не включена поддержка сопоставления кириллических символов.</span> По умолчанию не работают функции перевода строки в нижний и верхний регистр и не работает регистронезависимый поиск. Как исправить этот недостаток описано [[#Подключение регистронезависимого поиска для sqlite|ниже]].
Запрос к базе данных выглядит следующим образом
<syntaxhighlight lang="bash">
sqlite3 -header -csv cik.sqlite "sql запрос" > result.csv
</syntaxhighlight>
Примеры простых sql запросов:
* Выгрузить из SQLite базы списочный состав всех избирательных комиссий Москвы с указанием названий комиссий
<syntaxhighlight lang="SQL">
select
  cik_uik.name,
  cik_people.*
from
  cik_people
  inner join
      cik_uik
      on cik_people.ik_id = cik_uik.id
where
  cik_uik.region = 'moscow_city'
</syntaxhighlight>
* Выгрузить из SQLite базы списочный состав всех участковых избирательных комиссий Московской области с указанием названий самой комиссии и вышестоящей
<syntaxhighlight lang="SQL">
select
  cik_uik2.name as "parent_name",
  cik_uik1.region,
  cik_uik1.url,
  cik_uik1.name,
  cik_people.fio,
  cik_people.post,
  cik_people.party
from
  cik_uik as cik_uik1
  inner join
      cik_uik as cik_uik2
      on cik_uik1.parent_id = cik_uik2.id
  join
      cik_people
      on cik_people.ik_id = cik_uik1.id
where
  cik_uik1.type_ik = 'uik'
  and cik_uik1.region = 'moscow_reg'
</syntaxhighlight>
* Выгрузить из SQLite базы адреса всех участковых комиссий Ярославской области
<syntaxhighlight lang="SQL">
select
  cik_uik.*
from
  cik_uik
where
  cik_uik.region = 'yaroslavl'
  and cik_uik.type_ik = 'uik'
  and cik_uik.iz_id > 0
</syntaxhighlight>
* Выгрузить из SQLite состав резервов участковых комиссий Тамбовской области
<syntaxhighlight lang="SQL">
select
  cik_uik.name,
  cik_people_reserve.*
from
  cik_people_reserve
  inner join
      cik_uik
      on cik_people_reserve.ik_id = cik_uik.id
where
  cik_uik.region = 'tambov'
</syntaxhighlight>
* Выгрузить из SQLite состав резервов участковых комиссий Московской области с указанием названия самой комиссии, а также вышестоящей
<syntaxhighlight lang="SQL">
select
  cik_uik2.name as "parent_name",
  cik_uik1.region,
  cik_uik1.url,
  cik_uik1.name,
  cik_people_reserve.fio,
  cik_people_reserve.post,
  cik_people_reserve.party
from
  cik_uik as cik_uik1
  left outer join
      cik_uik as cik_uik2
      on cik_uik1.parent_id = cik_uik2.id
  join
      cik_people_reserve
      on cik_people_reserve.ik_id = cik_uik1.id
where
  cik_uik1.region = 'moscow_reg'
</syntaxhighlight>
* Найти данные по УИКам Брянского района Брянской области
Сначала с помощью запроса
<syntaxhighlight lang="SQL">
select
  cik_uik.name,
  cik_uik.id
from
  cik_uik
where
  type_ik = 'ik'
  and cik_uik.name LIKE '%Брянск%'
</syntaxhighlight>
найдем id комиссии Брянской области. Результатом выполнения этой команды будет следующий текст
<syntaxhighlight lang="text">
Избирательная комиссия Брянской области|91193
</syntaxhighlight>
Так как ТИКи Брянской области имеют parent_id=91193, то их находим командой
<syntaxhighlight lang="SQL">
select
  cik_uik.name,
  cik_uik.id
from
  cik_uik
where
  parent_id = '91193'
  and cik_uik.name LIKE '%Брянск%'
</syntaxhighlight>
Из вывода этой команды
<syntaxhighlight lang="text">
name|id
Брянск, Бежицкая|91194
Брянск, Володарская|91258
Брянск, Советская|91288
Брянск, Фокинская|91338
Брянская|91461
</syntaxhighlight>
находим, что УИКи Брянского района Брянской области имеют parent_id=91461. Используя этот результат несложно выбрать нужную информацию по этим УИКам.
NB. Это лишь пример работы со срезом от 01.01.2019. В срезах за другие даты значения id могут отличаться.
* Если известно название вышестоящей комиссии, то составы непосредственно нижестоящих комиссий можно выгрузить одной командой. Например, следующая команда выдает составы всех УИК района Южное Тушино Города Москвы
<syntaxhighlight lang="SQL">
select
  cik_uik.parent_id,
  cik_uik.name,
  cik_people.*
from
  cik_people
  inner join
      cik_uik
      on cik_people.ik_id = cik_uik.id
where
  cik_uik.parent_id in
  (
      select
        cik_uik.id
      from
        cik_uik
      where
        cik_uik.name like '%Южное Тушино%'
  )
</syntaxhighlight>
* Поиск члена комиссии по фамилии по всем комиссиям
<syntaxhighlight lang="SQL">
select
  cik_uik.name,
  cik_uik.address,
  cik_people.*
from
  cik_people
  inner join
      cik_uik
      on cik_people.ik_id = cik_uik.id
where
  cik_people.fio LIKE '%Иванов Иван%'
</syntaxhighlight>
==Подключение регистронезависимого поиска для sqlite==
По умолчанию '''sqlite''' умеет переводить символы в верхний или нижний регистр и искать строки без учета регистра только для ASCII символов. Для поддержки этих операций для символов вне этого диапазона необходимо подключить специальное расширение. Для этого
* Необходимо скачать [https://www.sqlite.org/cgi/src/doc/trunk/README.md исходные тексты sqlite].
* Распаковать архив с исходными текстами и перейти в директорию ''ext/icu/''.
* Скомпилировать расширение icu.
* Регистронезависимый поиск по базе данных осуществляется командой
<syntaxhighlight lang="bash">
sqlite3 -header -csv cik.sqlite '.load /PATH/TO/ICU/EXTENSION/libSqliteIcu.so sqlite3_icu_init' "sql запрос" > result.csv
</syntaxhighlight>
==Альтернативные машиночитаемые источники данных==
* [http://uikgeo.ru/ УИК ГЕО] – данные об адресах участковых избирательных комиссий и географических координат помещений для голосования.
* [http://wikiuiki.org/ WikiУИКи] - данные об избирательных комиссиях и их составах.
* [http://gis-lab.info/blog/2013-08/mgik-data-problems/ Мосгоризбирком]

Текущая версия от 09:36, 15 сентября 2021

Эта страница опубликована в основном списке статей сайта
по адресу http://gis-lab.info/qa/cik-data.html


Данные об избирательных комиссиях в машиночитаемом виде

На региональных сайтах избирательных комиссий (субодомены сайта ЦИК) появилась информация о всех территориальных и участковых избирательных комиссиях (например Алтайский край). К сожалению, исходно информация предоставляется не в машиночитаемом виде, что препятствует эффективному ее использованию для анализа данных и картографии. Нами были написали скрипты для скачивания всех данных о комиссиях и здесь можно получить полную БД в машиночитаемом виде.

Общая информация

Для каждой избирательной комиссии предоставляется следующая информация:

  • Наименование избирательной комиссии
  • Адрес комиссии
  • Телефон
  • Факс
  • Адрес электронной почты
  • Срок окончания полномочий

Для подавляющего большинства участковых избирательных комиссий факс и адрес электронной почты не указаны.

Также указана информация по каждому члену избирательной комиссии и по резерву в участковые избирательные комиссии:

  • Фамилия Имя Отчество
  • Должность (председатель/зам. председателя/секретарь/член)
  • субъект, предложивший данную кандидатуру в состав комиссии

Скачать данные

Ниже представлены данные, скачанные с сайтов избирательных комиссий субъектов РФ.

Актуальность: 14.09.2021

  • Единая БД по всем данным ЦИК в формате SQLite
  • Адреса, телефоны и пр. избирательных комиссий (CSV)
  • Составы комиссий (CSV)
  • Резерв участковых избирательных комиссий (CSV)
  • Исходные данные: html-страницы (файл)

Архив

Чтобы скачать предыдущие версии данных, необходимо поменять дату в ссылках на другую, имеющуюся в архиве. Доступны следующие даты:

  • 20140404
  • 20140629
  • 20141119
  • 20150915
  • 20160229
  • 20160629
  • 20170121
  • 20170719
  • 20180215
  • 20180709
  • 20180906
  • 20190101
  • 20190313
  • 20190617
  • 20190905
  • 20191110
  • 20200212
  • 20200610
  • 20200628
  • 20200910
  • 20210208
  • 20210630

Структура данных

Таблица адресов избирательных комиссий (cik_uik):

Код поля Название поля Примечания Пример
id id избирательной комиссии Если для записи из резерва не удается найти подходящую комиссию, то в таблице адресов избирательных комиссий создается фейковая запись, которой назначается отрицательное значение id. 45766
iz_id id избирательной комиссии, используемый в ГАС Выборы 442401997889
reserve_iz_id id резерва участковой избирательной комиссии, используемый в ГАС Выборы 828
parent_id id "вышестоящей" избирательной комиссии 45764
type_ik тип избирательной комиссии type_ik=ik – избирательная комиссия субъекта РФ

type_ik=tik – территориальная избирательная комиссия
type_ik=uik – участковая избирательная комиссия

uik
region субъект РФ, к которой относится избирательная комиссия kemerovo
url URL интернет страницы с информацией об избирательной комиссии http://www.kemerovo.vybory.izbirkom.ru/region/kemerovo?action=ik&vrn=442401997889
name название избирательной комиссии Участковая избирательная комиссия №545
address адрес избирательной комиссии 652840, Кемеровская область, Мысковский городской округ, Чувашка поселок, улица Алтын Шор, дом 4, Дом культуры поселка Чувашка
address_voteroom адрес помещения для голосования Это поле появилось в выгрузке начиная с 15.02.2018 652840, Кемеровская область, Мысковский городской округ, Чувашка поселок, улица Алтын Шор, дом 4, Дом культуры поселка Чувашка
lat_ik, lon_ik координаты избирательной комиссии Эти поля появились в выгрузке начиная с 15.02.2018 53.597575, 87.818478
lat_voteroom, lon_voteroom координаты помещения для голосования Эти поля появились в выгрузке начиная с 15.02.2018 53.597575, 87.818478
phone телефон избирательной комиссии 8-(384-74)-95-6-46
phone_voteroom телефон помещения для голосования Это поле появилось в выгрузке начиная с 15.02.2018 8-(384-74)-95-6-46
fax номер факса избирательной комиссии (38474)
email адрес электронной почты избирательной комиссии
end_date дата окончания полномочий избирательной комиссии 26.03.2018

Таблица составов избирательных комиссий (cik_people):

Код поля Название поля Примечания Пример
id id записи 683770
ik_id id избирательной комиссии этот id указывает на комиссию из таблицы адресов комиссии 78161
number номер в списке членов избирательной комиссии никакого смысла это поле не имеет 10
fio Фамилия Имя Отчество члена избирательной комиссии Якимова Татьяна Валерьевна
post должность Член
party субъект, предложивший данную кандидатуру в состав комиссии Свердловское региональное отделение политической партии "Российская объединенная демократическая партия "ЯБЛОКО"

Таблица резервов участковых избирательных комиссий (cik_people_reserve):

Код поля Название поля Примечания Пример
id id записи 457646
ik_id id избирательной комиссии этот id указывает на комиссию из таблицы адресов комиссии. Если для записи из резерва не удается найти подходящую комиссию, то в таблице адресов избирательных комиссий создается фейковая запись, которой назначается отрицательное значение id. 81578
number номер в списке членов резерва участковой избирательной комиссии никакого смысла это поле не имеет 1
fio Фамилия Имя Отчество члена резерва участковой избирательной комиссии Васькина Юлия Николаевна
post должность Зачислен в резерв составов УИК
party субъект, предложивший данную кандидатуру в состав комиссии собрание избирателей по месту работы - ГБОУ НПО "Профессиональный лицей №10", г.Тверь

Недостатки

У представленных данных есть несколько недостатков

1. Неполная адресная информация об УИК

Адрес участковой избирательной комиссии (УИК) определяется постановлением главы соответствующего муниципального образования или решением ТИК. Обычно в этих документах указывают не только почтовый адрес УИК, но также и название соответствующего здания (школа, дом культуры, клуб, и пр.). В представленных на сайтах избирательных комиссий субъектов РФ информация о типе здания во многих случаях опускается. Кроме того, там не делается различий между адресом помещения для голосования и адресом избирательной комиссии.

2. Актуальность информации

Непонятна актуальность информации. Составы комиссий и адреса УИК время от времени меняются. Из представленных данных неясно, какие из этих изменений учтены.

3. Территории избирательных участков

Отсутствует информация о территории избирательных участков.

4. Непостоянство структуры записи адреса избирательной комиссии Встречаются разные вариации записи адреса избирательного участка

  • индекс, область, район, населенный пункт, улица (название места голосования), дом
  • индекс, область, район, населенный пункт (название места голосования), улица, дом
  • индекс, область, район, населенный пункт, улица, дом, название места голосования
  • и множество других

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

  • Адрес УИК и помещения для голосования:
  • адрес УИК
  • адрес помещения для голосования

Скрипты

Для получения данных служат следующие скрипты:

  • down.py - скачивание исходных данных
  • cik.py - парсинг исходных данных в SQLite базу

Исходный код

Для преобразование SQLite -> CSV используются следующие команды:

 sqlite3 -header -csv cik.sqlite "select * from cik_people order by id" > cik_people.csv
 sqlite3 -header -csv cik.sqlite "select * from cik_uik order by id" > cik_uik.csv
 sqlite3 -header -csv cik.sqlite "select * from cik_people_reserve order by id" > cik_people_reserve.csv

Примеры использования

  • Скачать данные об адресах и составах избирательных комиссий Башкортостана
python down.py --region=bashkortostan
  • Скачать данные об адресах, составах избирательных комиссий и резервов участковых избирательных комиссий Орловской области
python down.py --with-reserve --region=orel

Список используемых наименований субъектов РФ можно посмотреть в файле cik.py

Примеры SQL запросов

NB В программе sqlite по умолчанию не включена поддержка сопоставления кириллических символов. По умолчанию не работают функции перевода строки в нижний и верхний регистр и не работает регистронезависимый поиск. Как исправить этот недостаток описано ниже.

Запрос к базе данных выглядит следующим образом

sqlite3 -header -csv cik.sqlite "sql запрос" > result.csv

Примеры простых sql запросов:

  • Выгрузить из SQLite базы списочный состав всех избирательных комиссий Москвы с указанием названий комиссий
select
   cik_uik.name,
   cik_people.* 
from
   cik_people 
   inner join
      cik_uik 
      on cik_people.ik_id = cik_uik.id 
where
   cik_uik.region = 'moscow_city'
  • Выгрузить из SQLite базы списочный состав всех участковых избирательных комиссий Московской области с указанием названий самой комиссии и вышестоящей
select
   cik_uik2.name as "parent_name",
   cik_uik1.region,
   cik_uik1.url,
   cik_uik1.name,
   cik_people.fio,
   cik_people.post,
   cik_people.party 
from
   cik_uik as cik_uik1 
   inner join
      cik_uik as cik_uik2 
      on cik_uik1.parent_id = cik_uik2.id 
   join
      cik_people 
      on cik_people.ik_id = cik_uik1.id 
where
   cik_uik1.type_ik = 'uik' 
   and cik_uik1.region = 'moscow_reg'
  • Выгрузить из SQLite базы адреса всех участковых комиссий Ярославской области
select
   cik_uik.* 
from
   cik_uik 
where
   cik_uik.region = 'yaroslavl' 
   and cik_uik.type_ik = 'uik' 
   and cik_uik.iz_id > 0
  • Выгрузить из SQLite состав резервов участковых комиссий Тамбовской области
select
   cik_uik.name,
   cik_people_reserve.* 
from
   cik_people_reserve 
   inner join
      cik_uik 
      on cik_people_reserve.ik_id = cik_uik.id 
where
   cik_uik.region = 'tambov'
  • Выгрузить из SQLite состав резервов участковых комиссий Московской области с указанием названия самой комиссии, а также вышестоящей
select
   cik_uik2.name as "parent_name",
   cik_uik1.region,
   cik_uik1.url,
   cik_uik1.name,
   cik_people_reserve.fio,
   cik_people_reserve.post,
   cik_people_reserve.party 
from
   cik_uik as cik_uik1 
   left outer join
      cik_uik as cik_uik2 
      on cik_uik1.parent_id = cik_uik2.id 
   join
      cik_people_reserve 
      on cik_people_reserve.ik_id = cik_uik1.id 
where
   cik_uik1.region = 'moscow_reg'
  • Найти данные по УИКам Брянского района Брянской области

Сначала с помощью запроса

select
   cik_uik.name,
   cik_uik.id 
from
   cik_uik 
where
   type_ik = 'ik' 
   and cik_uik.name LIKE '%Брянск%'

найдем id комиссии Брянской области. Результатом выполнения этой команды будет следующий текст

Избирательная комиссия Брянской области|91193

Так как ТИКи Брянской области имеют parent_id=91193, то их находим командой

select
   cik_uik.name,
   cik_uik.id 
from
   cik_uik 
where
   parent_id = '91193' 
   and cik_uik.name LIKE '%Брянск%'

Из вывода этой команды

name|id
Брянск, Бежицкая|91194
Брянск, Володарская|91258
Брянск, Советская|91288
Брянск, Фокинская|91338
Брянская|91461

находим, что УИКи Брянского района Брянской области имеют parent_id=91461. Используя этот результат несложно выбрать нужную информацию по этим УИКам.

NB. Это лишь пример работы со срезом от 01.01.2019. В срезах за другие даты значения id могут отличаться.

  • Если известно название вышестоящей комиссии, то составы непосредственно нижестоящих комиссий можно выгрузить одной командой. Например, следующая команда выдает составы всех УИК района Южное Тушино Города Москвы
select
   cik_uik.parent_id,
   cik_uik.name,
   cik_people.* 
from
   cik_people 
   inner join
      cik_uik 
      on cik_people.ik_id = cik_uik.id 
where
   cik_uik.parent_id in 
   (
      select
         cik_uik.id 
      from
         cik_uik 
      where
         cik_uik.name like '%Южное Тушино%'
   )
  • Поиск члена комиссии по фамилии по всем комиссиям
select
   cik_uik.name,
   cik_uik.address,
   cik_people.* 
from
   cik_people 
   inner join
      cik_uik 
      on cik_people.ik_id = cik_uik.id 
where
   cik_people.fio LIKE '%Иванов Иван%'

Подключение регистронезависимого поиска для sqlite

По умолчанию sqlite умеет переводить символы в верхний или нижний регистр и искать строки без учета регистра только для ASCII символов. Для поддержки этих операций для символов вне этого диапазона необходимо подключить специальное расширение. Для этого

  • Распаковать архив с исходными текстами и перейти в директорию ext/icu/.
  • Скомпилировать расширение icu.
  • Регистронезависимый поиск по базе данных осуществляется командой
sqlite3 -header -csv cik.sqlite '.load /PATH/TO/ICU/EXTENSION/libSqliteIcu.so sqlite3_icu_init' "sql запрос" > result.csv

Альтернативные машиночитаемые источники данных

  • УИК ГЕО – данные об адресах участковых избирательных комиссий и географических координат помещений для голосования.
  • WikiУИКи - данные об избирательных комиссиях и их составах.
  • Мосгоризбирком