УИК ГЕО (проект)
УИК ГЕО — проект направленный на создание базы геоданных по расположению УИКов на территории России. Результат работы доступен на страничке экспорта http://uikgeo.ru/uik/export
Важно! Расположение УИК на карте может быть очень неточным, так как зачастую на схеме населенного пункта отсутствует необходимая адресная информация, которая могла бы помочь точно позиционировать УИК.
Ниже будет описана процедура, как данные проекта могут быть преобразованы к виду, пригодному для загрузки в навигационные программы и различные веб-сервисы.
Для примера возьмём УИКи Ярославской области.
1. Скачиваем со странички http://uikgeo.ru/uik/export архив 76.zip и распаковываем его. Находим среди содержимого файл 76.csv. Он содержит координаты всех УИКов Ярославской области. Если нужно только часть УИКов, то лишние строки можно удалить.
2. Первую строку в файле 76.csv
id,lat,lon,number_official,address_voting,place_voting,comment,is_applied,geocoding_precision,tik,tik_id,region
заменяем на строку
id,lat,lon,name,desc,comment,notes,is_applied,geocoding_precision,tik,tik_id,region
3. В некоторых регионах поля в csv файлах содержат переводы строк. Их нужно убрать. Это проще всего сделать в табличном редакторе (Excel, OpenOffice, LibreОffice), заменив всюду "\n" на " ". Результат сохраняем в виде файла 76-new.csv .
4. Пункты 2 и 3 можно сделать с помощью Perl скрипта
#!/usr/bin/perl -w
use strict;
use warnings;
use Text::CSV;
use utf8;
binmode STDOUT, ":encoding(UTF-8)";
my $csv = Text::CSV->new ({
binary => 1,
quote_space => 0,
quote_binary => 0,
eol => $/,
});
my %symb;
$symb{"building"}="Flag, Green";
$symb{"street"}="Flag, Blue";
$symb{"settlement"}="Flag, Red";
$symb{"region"}="Flag, Red";
my $row = $csv->getline( \*STDIN );
$row->[3]="name";
$row->[4]="desc";
$row->[5]="comment";
$row->[6]="notes";
$row->[8]="symb";
$csv->combine(@$row);
$csv->print(*STDOUT, $row);
while (my $row = $csv->getline( \*STDIN )) {
s/[\r\n]/ /g foreach (@$row);
$row->[8]=$symb{$row->[8]};
$csv->combine(@$row);
$csv->print(*STDOUT, $row);
}
Вышеприведённый текст сохраняем в виде текстового файла с именем filter.pl и выполняем команду
./filter.pl < 76.csv > 76-new.csv
5. Теперь с помощью программы gpsbabel несложно сгенерировать gpx файл
gpsbabel -i unicsv -f 76-new.csv -o gpx -F 76.gpx
или kml файл
gpsbabel -i unicsv -f 76-new.csv -o kml -F 76.kml