Проект УИК Республики Башкортостан: различия между версиями
Нет описания правки |
Нет описания правки |
||
(не показано 26 промежуточных версий 1 участника) | |||
Строка 1: | Строка 1: | ||
'''Внимание: Эти данные устарели! Актуальные (2013 г.) данные по УИК собираются в проекте УИК ГЕО, [http://uikgeo.gis-lab.info присоединяйтесь], нам нужно ваше участие.''' | |||
* [http://cikrb.ru/ Центральная избирательная комиссия Республики Башкортостан] | * [http://cikrb.ru/ Центральная избирательная комиссия Республики Башкортостан] | ||
* [http://cikrb.ru/areas/?SHOWALL_1=1 Перечни участков] ([[Файл:Uik-bashkortostan.zip|Одним архивом]]) — исходники | * [http://cikrb.ru/areas/?SHOWALL_1=1 Перечни участков] ([[Файл:Uik-bashkortostan.zip|Одним архивом]]) — исходники | ||
Строка 7: | Строка 9: | ||
== Уфа == | == Уфа == | ||
[[Файл: | [[Файл:Uik-ufa.zip]] — исходники по Уфе + черновой вариант shp файла. | ||
'''Если берёте район, то впишите себя в таблицу, что | '''Если берёте район, то впишите себя в таблицу, что бы никто больше не взялся за него.''' | ||
{| class="wikitable" | {| class="wikitable" | ||
Строка 16: | Строка 18: | ||
! Прогресс | ! Прогресс | ||
! Полученный SHP-файл | ! Полученный SHP-файл | ||
|- | |- bgcolor="yellowgreen" | ||
| Демский || | | Демский || [[Участник:Yellow-sky|yellow_sky]] || 100% || [[Файл:Ufa-demsky-geocoded.zip]] | ||
|- | |- bgcolor="yellowgreen" | ||
| Калининский || | | Калининский || [[Участник:Yellow-sky|yellow_sky]] || 100% || [[Файл:Ufa-kalininsky-geocoded.zip]] | ||
|- | |- bgcolor="yellowgreen" | ||
| Кировский || | | Кировский || [[Участник:Yellow-sky|yellow_sky]] || 100% || [[Файл:Ufa-kirovsky-geocoded.zip]] | ||
|- | |- bgcolor="yellowgreen" | ||
| Ленинский || | | Ленинский || [[Участник:Yellow-sky|yellow_sky]] || 100% || [[Файл:Ufa-leninsky-geocoded.zip]] | ||
|- | |- bgcolor="yellow" | ||
| Октябрьский || || || | | Октябрьский || [[Участник:Yellow-sky|yellow_sky]] || 60% || | ||
|- | |- bgcolor="yellow" | ||
| Орджоникидзевский || || || | | Орджоникидзевский || [[Участник:Yellow-sky|yellow_sky]] || 60% || | ||
|- | |- bgcolor="yellow" | ||
| Советский || || | | Советский || [[Участник:Yellow-sky|yellow_sky]] || 60% || | ||
|} | |} | ||
== Описание процесса == | === Описание процесса === | ||
Как видно из приложенных pdf, все таблицы имеют четкую структуру: | |||
{| class="wikitable" | |||
! No ИУ | |||
! Адрес избирательного участка | |||
! Телефон ИУ | |||
! Описание избирательного участка | |||
|} | |||
Нам пригодятся первые три поля. Назовем их number, addr_vote, phone. | |||
К сожалению, во всех районах города разная форма записи адреса. Попытаемся привести её к единой. | |||
==== Конвертирование в CSV ==== | |||
Для начала необходимо конвертировать все таблицы из PDF в более пригодный для работы формат CSV. | |||
К сожалению, я не нашел ни одного нормального варианта такой конвертации ('''Может кто подскажет???'''). <br /> | |||
'''Рабочей вариант:''' Windows 7, Acrobat Reader 9.5, LibreOffice Calc 3.4.2. В Reader'e выбираем все, копируем, и вставляем в Calc. (Вариант с Calc 3.4.5 и Acrobat Reader 9.47 под Linux почему то не работает)<br /> | |||
'''Внимание:''' Необходимо удалить поле 'Описание избирательного участка', и переименовать первые три поля. | |||
Перед экспортом в CSV убедитесь, что у вас нет лишних полей, которые могут возникать при копировании таблицы из PDF. При экспорте лучше использовать кодировку UTF-8.<br /> | |||
'''Результат:''' [[Файл:ufa-csv.zip]] - готовые CSV файлы | |||
==== Конвертирование в SHP ==== | |||
Конвертировать можно с помощью плагина [[Пакетное_геокодирование_в_QGIS | RuGeocoder]]. Для этого необходимо запустить инструмент "CSV to SHP converter" и выбрать исходный csv файл. При желании можно указать месторасположение результирующего shp файла. В результате конвертации, будет получен точечный shp файл с той же самой атрибутикой, и нулевыми координатами. Так же к атрибутике будут добавлены пустые поля типа string: settlement, street, building_n и geocoded. Данные поля можно будет использовать в целях подготовки адреса для геокодера. | |||
==== Обработка адреса ==== | |||
Обработку адреса удобно выполнить с помощью [http://gis-lab.info/qa/fieldpyculator.html FieldPyculator].<br /> | |||
Так как в каждом файле один район Уфы, то поле settlement можно не заполнять.<br /> | |||
'''Для ufa-demsky'''<br /> | |||
street: | |||
<pre> | |||
street = <addr_vote>.split(",")[0] | |||
value = street.replace(u'ул.', '').strip() | |||
</pre> | |||
После обработки необходимо руками поправить 3 записи.<br /> | |||
house_num: | |||
<pre> | |||
try: | |||
num = <addr_vote>.split(",")[1] | |||
value = num.lstrip().split(" ")[0] | |||
except: | |||
value = 'Error' | |||
</pre> | |||
После обработки необходимо руками поправить 3 записи.<br /> | |||
'''Для ufa-kalininsky'''<br /> | |||
street: | |||
<pre> | |||
value = <addr_vote>.split(",")[3] | |||
</pre> | |||
После обработки необходимо руками поправить 1 запись.<br /> | |||
house_num: | |||
<pre> | |||
try: | |||
value = <addr_vote>.split(",")[4] | |||
except: | |||
value = "Error" | |||
</pre> | |||
После обработки необходимо руками поправить 2 записи.<br /> | |||
'''Для ufa-kirovsky'''<br /> | |||
Плохой файл. Много мусора.<br /> | |||
street: | |||
<pre> | |||
splited = <addr_vote>.split(u"ул. ") | |||
if len(splited)==2: | |||
addr = splited[1] | |||
addr = addr.replace(u"Ст. Кувыкина",u"Степана Кувыкина") | |||
addr = addr.replace(u"З Валиди",u"Заки Валиди") | |||
#addr = addr.replace(u"Заки Валиди", u'Фрунзе')#only for google!!! | |||
#addr = addr.replace(u"Мубарякова", u'Мубарекова')#only for google!!! | |||
splited = addr.split(",") | |||
if len(splited)==2: | |||
value = splited[0] | |||
else: | |||
value = addr | |||
else: | |||
value = "Error" | |||
</pre> | |||
После обработки необходимо руками поправить 3 записи.<br /> | |||
house_num: | |||
<pre> | |||
splited = <addr_vote>.split(u"ул. ") | |||
if len(splited)==2: | |||
addr = splited[1] | |||
splited = addr.split(",") | |||
if len(splited)==2: | |||
value = splited[1] | |||
else: | |||
value = addr | |||
else: | |||
value = "Error" | |||
</pre> | |||
После обработки необходимо руками поправить 3 записи.<br /> | |||
'''Для ufa-leninsky'''<br /> | |||
street: | |||
<pre> | |||
value = <addr_vote>.split(',')[1].replace(u'ул.','').strip() | |||
</pre> | |||
После обработки необходимо руками поправить 1 запись.<br /> | |||
house_num: | |||
<pre> | |||
value = <addr_vote>.split(',')[2].strip().split(' ')[0] | |||
</pre> | |||
Правок не требуется.<br /> | |||
'''Для ufa-oktyabrsky'''<br /> | |||
street: | |||
<pre> | |||
street = <addr_vote>.split(",")[1] | |||
value = street.replace(u'ул.', '').strip() | |||
</pre> | |||
После обработки необходимо руками поправить 3 записи.<br /> | |||
house_num: | |||
<pre> | |||
try: | |||
value = <addr_vote>.split(',')[2].strip() | |||
except: | |||
value = 'Error' | |||
</pre> | |||
После обработки необходимо руками поправить 3 записи.<br /> | |||
'''Проблема с данными!''' УИК №№ 216 и 238 не имеют полного адреса в исходных данных. Адреса были найдены в интернете. | |||
'''Для ufa-ordzho'''<br /> | |||
street: | |||
<pre> | |||
street = <addr_vote>.split(",")[1] | |||
value = street.replace(u'ул.', '').strip() | |||
</pre> | |||
После обработки необходимо руками поправить 3 записи.<br /> | |||
house_num: | |||
<pre> | |||
try: | |||
value = <addr_vote>.split(',')[2].strip() | |||
except: | |||
value = 'Error' | |||
</pre> | |||
После обработки необходимо руками поправить 3 записи.<br /> | |||
'''Для ufa-sovetsky'''<br /> | |||
street: | |||
<pre> | |||
street = <addr_vote>.split(",")[2] | |||
value = street.replace(u'ул.', '').strip() | |||
</pre> | |||
После обработки необходимо руками поправить 2 записи.<br /> | |||
house_num: | |||
<pre> | |||
try: | |||
value = <addr_vote>.split(',')[3].strip() | |||
except: | |||
value = 'Error' | |||
</pre> | |||
После обработки необходимо руками поправить 2 записи.<br /> | |||
'''Проблема с данными!''' УИК №№ 350, 366, 394 и 407 не имеют полного адреса в исходных данных. Адреса были найдены в интернете.<br /> | |||
'''Результат:''' [[Файл:Ufa-shp-address-corrected.zip]] - архив SHP файлов с корректными адресами | |||
[[Категория:Уточнение расположения УИКов]] | [[Категория:Уточнение расположения УИКов]] |
Текущая версия от 07:04, 17 августа 2013
Внимание: Эти данные устарели! Актуальные (2013 г.) данные по УИК собираются в проекте УИК ГЕО, присоединяйтесь, нам нужно ваше участие.
- Центральная избирательная комиссия Республики Башкортостан
- Перечни участков (Файл:Uik-bashkortostan.zip) — исходники
Схема работы
Смотри Проект УИК России
Смотри Типовой проект по местоположению УИКов
Уфа
Файл:Uik-ufa.zip — исходники по Уфе + черновой вариант shp файла.
Если берёте район, то впишите себя в таблицу, что бы никто больше не взялся за него.
Район | Кто делает | Прогресс | Полученный SHP-файл |
---|---|---|---|
Демский | yellow_sky | 100% | Файл:Ufa-demsky-geocoded.zip |
Калининский | yellow_sky | 100% | Файл:Ufa-kalininsky-geocoded.zip |
Кировский | yellow_sky | 100% | Файл:Ufa-kirovsky-geocoded.zip |
Ленинский | yellow_sky | 100% | Файл:Ufa-leninsky-geocoded.zip |
Октябрьский | yellow_sky | 60% | |
Орджоникидзевский | yellow_sky | 60% | |
Советский | yellow_sky | 60% |
Описание процесса
Как видно из приложенных pdf, все таблицы имеют четкую структуру:
No ИУ | Адрес избирательного участка | Телефон ИУ | Описание избирательного участка |
---|
Нам пригодятся первые три поля. Назовем их number, addr_vote, phone. К сожалению, во всех районах города разная форма записи адреса. Попытаемся привести её к единой.
Конвертирование в CSV
Для начала необходимо конвертировать все таблицы из PDF в более пригодный для работы формат CSV.
К сожалению, я не нашел ни одного нормального варианта такой конвертации (Может кто подскажет???).
Рабочей вариант: Windows 7, Acrobat Reader 9.5, LibreOffice Calc 3.4.2. В Reader'e выбираем все, копируем, и вставляем в Calc. (Вариант с Calc 3.4.5 и Acrobat Reader 9.47 под Linux почему то не работает)
Внимание: Необходимо удалить поле 'Описание избирательного участка', и переименовать первые три поля.
Перед экспортом в CSV убедитесь, что у вас нет лишних полей, которые могут возникать при копировании таблицы из PDF. При экспорте лучше использовать кодировку UTF-8.
Результат: Файл:Ufa-csv.zip - готовые CSV файлы
Конвертирование в SHP
Конвертировать можно с помощью плагина RuGeocoder. Для этого необходимо запустить инструмент "CSV to SHP converter" и выбрать исходный csv файл. При желании можно указать месторасположение результирующего shp файла. В результате конвертации, будет получен точечный shp файл с той же самой атрибутикой, и нулевыми координатами. Так же к атрибутике будут добавлены пустые поля типа string: settlement, street, building_n и geocoded. Данные поля можно будет использовать в целях подготовки адреса для геокодера.
Обработка адреса
Обработку адреса удобно выполнить с помощью FieldPyculator.
Так как в каждом файле один район Уфы, то поле settlement можно не заполнять.
Для ufa-demsky
street:
street = <addr_vote>.split(",")[0] value = street.replace(u'ул.', '').strip()
После обработки необходимо руками поправить 3 записи.
house_num:
try: num = <addr_vote>.split(",")[1] value = num.lstrip().split(" ")[0] except: value = 'Error'
После обработки необходимо руками поправить 3 записи.
Для ufa-kalininsky
street:
value = <addr_vote>.split(",")[3]
После обработки необходимо руками поправить 1 запись.
house_num:
try: value = <addr_vote>.split(",")[4] except: value = "Error"
После обработки необходимо руками поправить 2 записи.
Для ufa-kirovsky
Плохой файл. Много мусора.
street:
splited = <addr_vote>.split(u"ул. ") if len(splited)==2: addr = splited[1] addr = addr.replace(u"Ст. Кувыкина",u"Степана Кувыкина") addr = addr.replace(u"З Валиди",u"Заки Валиди") #addr = addr.replace(u"Заки Валиди", u'Фрунзе')#only for google!!! #addr = addr.replace(u"Мубарякова", u'Мубарекова')#only for google!!! splited = addr.split(",") if len(splited)==2: value = splited[0] else: value = addr else: value = "Error"
После обработки необходимо руками поправить 3 записи.
house_num:
splited = <addr_vote>.split(u"ул. ") if len(splited)==2: addr = splited[1] splited = addr.split(",") if len(splited)==2: value = splited[1] else: value = addr else: value = "Error"
После обработки необходимо руками поправить 3 записи.
Для ufa-leninsky
street:
value = <addr_vote>.split(',')[1].replace(u'ул.','').strip()
После обработки необходимо руками поправить 1 запись.
house_num:
value = <addr_vote>.split(',')[2].strip().split(' ')[0]
Правок не требуется.
Для ufa-oktyabrsky
street:
street = <addr_vote>.split(",")[1] value = street.replace(u'ул.', '').strip()
После обработки необходимо руками поправить 3 записи.
house_num:
try: value = <addr_vote>.split(',')[2].strip() except: value = 'Error'
После обработки необходимо руками поправить 3 записи.
Проблема с данными! УИК №№ 216 и 238 не имеют полного адреса в исходных данных. Адреса были найдены в интернете.
Для ufa-ordzho
street:
street = <addr_vote>.split(",")[1] value = street.replace(u'ул.', '').strip()
После обработки необходимо руками поправить 3 записи.
house_num:
try: value = <addr_vote>.split(',')[2].strip() except: value = 'Error'
После обработки необходимо руками поправить 3 записи.
Для ufa-sovetsky
street:
street = <addr_vote>.split(",")[2] value = street.replace(u'ул.', '').strip()
После обработки необходимо руками поправить 2 записи.
house_num:
try: value = <addr_vote>.split(',')[3].strip() except: value = 'Error'
После обработки необходимо руками поправить 2 записи.
Проблема с данными! УИК №№ 350, 366, 394 и 407 не имеют полного адреса в исходных данных. Адреса были найдены в интернете.
Результат: Файл:Ufa-shp-address-corrected.zip - архив SHP файлов с корректными адресами