УИК ГЕО (проект)

Материал из Справочника наблюдателя
Перейти к:навигация, поиск

УИК ГЕО — проект направленный на создание базы геоданных по расположению УИКов на территории России. Результат работы доступен на страничке экспорта 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