Проект УИК Республики Башкортостан: различия между версиями
Строка 53: | Строка 53: | ||
==== Обработка адреса ==== | ==== Обработка адреса ==== | ||
'''Для ufa-demsky | '''Для ufa-demsky'''<br /> | ||
street | street: | ||
<pre> | <pre> | ||
street = <addr_vote>.split(",")[0] | street = <addr_vote>.split(",")[0] | ||
Строка 68: | Строка 68: | ||
value = 'Error' | value = 'Error' | ||
</pre> | </pre> | ||
После обработки необходимо руками поправить 3 записи.<br /> | |||
'''Для ufa-kalininsky'''<br /> | |||
street: | |||
<pre> | |||
value = <addr_vote>.split(",")[3] | |||
</pre> | |||
После обработки необходимо руками поправить 1 запись.<br /> | |||
house_num: | |||
<pre> | |||
value = <addr_vote>.split(",")[4] | |||
</pre> | |||
После обработки необходимо руками поправить 1 запись.<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"Заки Валиди") | |||
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 /> | |||
[[Категория:Уточнение расположения УИКов]] | [[Категория:Уточнение расположения УИКов]] |
Версия от 21:18, 24 февраля 2012
- Центральная избирательная комиссия Республики Башкортостан
- Перечни участков (Файл:Uik-bashkortostan.zip) — исходники
Схема работы
Смотри Проект УИК России
Смотри Типовой проект по местоположению УИКов
Уфа
Файл:Uik-ufa.zip — исходники по Уфе + черновой вариант shp файла.
Если берёте район, то впишите себя в таблицу, что б не никто больше не взялся за него.
Район | Кто делает | Прогресс | Полученный SHP-файл |
---|---|---|---|
Демский | |||
Калининский | |||
Кировский | |||
Ленинский | |||
Октябрьский | |||
Орджоникидзевский | |||
Советский |
Описание процесса
Как видно из приложенных 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 почему то не работает)
Внимание: для возможности подготовить адреса для автоматического геокодирования, в Calc'e перед экспортом нужно добавить два дополнительных поля: street и house_num!
Так же, необходимо удалить поле 'Описание избирательного участка', и переименовать первые три поля.
Перед экспортом в CSV убедитесь, что у вас нет лишних полей, которые могут возникать при копировании таблицы из PDF. При экспорте лучше использовать кодировку UTF-8.
Результат: Файл:Ufa-csv.zip - готовые CSV файлы
Обработка адреса
Для 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:
value = <addr_vote>.split(",")[4]
После обработки необходимо руками поправить 1 запись.
Для 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"Заки Валиди") 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 записи.