Страница 1 из 1

Скрипты для СГ и не только

Добавлено: 25 май 2010, 22:24
vasyusya
Подсобный инструментарий для подготовки исходников для конвертации в СГ и не только. Скрипты на перле, поэтому нужен перл (strawberry perl, active perl или любой другой), запускаются из командной строки. Если кому-то сильно надо, и не получается, могу выполнить в виде екзешника.

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

1. 0brackets.pl. Заменяет в Label и StreetDesc круглые скобки на квадратные. Запуск
perl 0brackets.pl file.mp
Результат в file_bracket.mp

2. 0list_key.pl. Составляет сортированный список различных значений выбранного ключа. Полезно при работе с адреской - для выявления опечаток, а также для подготовки таблицы перебода для следующего скрипта. Запуск:
perl 0list_key.pl file.mp key [feature [type]]
Примеры
perl 0list_key.pltest.mp StretDesc
perl 0list_key.pl test.mp Label POI 0x6001
Рзультат в file_<key>.txt

3. 0translate_key.pl Производит контекстную замену значений выбранного ключа согласно таблице. Удобно для внесения массовых изменений, перевода, исправления неточностей. Таблица - текстовый (csv) файл, формат строк
старое значение;новое значение
или
старое значение;новое значение;что угодно
Запуск:
perl 0translate_key.pl file.mp tablelie key
Пример
perl 0translate_key.pl test.mp table.csv Label
в ключе Label заменит значения согласно таблице table.csv
Результат в file_translated.mp,
отчет о результатах в file_log.txt

4. 0str2label.pl Если в полилинии типа дороги есть ключ StreetDesc и его значение не совпадает с Label или Label отсутсвует, оно заполняется значением из StreetDesc. Запуск:
perl 0str2label.pl file.mp
Результат в file_fixed.mp
Отчет о выполненных заменах в file_log.txt

5. 0sanitize4cg.pl Удаляет все ключи, кроме тех, которые понимает конвертер в СГ. В частности, удаляет EndLevel, на неправильное заполнение которого конвертер реагирует очень болезненно, так что с многослойными картами запускать с осторожностью. Запуск
perl 0sanitize4cg.pl file.mp
результат в file_cg.mp

Итак, для подготовки одноуровневой карты для конвертации я делал:
1. провел анализ и ремонт адрески описанными средствами и скриптами 2, 3
2. с помощью ГМЕ разнес сджойненные объекты
3. с помощью 4 скрипта привел в соответствие Label и StreetDesc, получил файл file_fixed.mp. Проверил лог, если скрипт заменил, как надо, двигаюсь дальше, если нет - правлю руками и скриптом 3
4. Скриптом 1 получаю файл file_fixed_brackets.mp
5. Скриптом 5 делаю файл file_fixed_brackets_cg.mp, который скармливаю конвертору, который кушает все с удовольствием.

Поскольку шаги 3-5 делаются легко и быстро, после конвертации в СГ все обрезанные исходники удаляю, чтобы не плодить мусор. Сохраняю оригинальный файл и если надо таблицы, которыми что-то правил 3 скриптом.

Добавлено: 27 май 2010, 10:27
maxdddca
Спасибо. В виде ехе было бы конечно удобнее !

Добавлено: 30 май 2010, 20:27
vasyusya
Прикрутил гуй, собрал в exe, теперь можно без перла и без командной строки.

Еще раз кратко:
0brackets - заменяет круглые скобки на квадратные
0list_key - выдает сортированный список значений ключа
0translate_key - универсальный переводчик-исправлятор значений выбранного ключа
0str2label - устраняет неравенство StreetDesc и Label
0sanitize4cg - удаляет гамузом все данные из исходника, кроме выбранных полей. Список полей, которые оставлять, в конфиге (можно править текстовым редактором). Если этим кто-то будет пользоваться, сделаю удобнее.

Все программы в результате преобразования в exe заметно прибавили в весе, поэтому выложены не здесь, а на http://194.44.31.54/maps/scripts

Re: Скрипты для СГ и не только

Добавлено: 10 сен 2010, 10:22
Eclogyte
Выложите, пожалуйста, на фтп к экзешникам и исходные скрипты. Вложение в заглавном сообщении я не могу скачать.