Использование программы:
MPTypes.exe input.mp output.mp types-config.cfg
input.mp - исходный файл
output.mp - итоговый файл с преобразованными типами в соответствии с конфигурационным файлом.
types-config.cfg - конфигурационный файл (далее по тексту - конфиг)
Формат конфига совпадает с форматом конфига для mpUtilities. И состоит из нескольких секций:
[POI] - содержит правила преобразования типов точек.
[POLYLINE] - содержит правила преобразования типов линий.
[POLYGON] - содержит правила преобразования типов полигонов.
[CHNLIN2POL] - содержит правила преобразования линий в полигоны.
[CHNPOL2LIN] - содержит правила преобразования полигонов в линии.
[DELPOLYLINE] - типы линий, которые будут удалены.
[DELPOLYGON] - типы полигонов, которые будут удалены.
[DELPOI] - типы точек, которые будут удалены.
[DELROUTE] - типы линий, в которых будет удалена информация о роутинге.
По сравнению с программами mp2mp и mpUtilities, способными выполнять эту же задачу, в mpTypes имеется целый ряд преимуществ:
1) В отличие от mpUtilities, mpTypes - консольная программа, это позволяет использовать ее в пакетном режиме для обработки большого числа файлов.
2) В отличие от mp2mp, mpTypes не спотыкается обо все не известные ей ключи польского формата.
3) В отличие от mp2mp, в которой вопреки всякой логике название исходного файла прописано в конфиге, а заголовок карты зачем-то нужно передавать программе в качестве параметра отдельным файлом, в mpTypes все имена файлов (входной, выходной, конфиг) передаются в качестве параметров, а заголовок карты берется из исходной карты без изменений, что облегчает использование программы в пакетном режиме для обработки большого числа файлов.
4) В отличии от mp2mp и mpUtilities, mpTypes может обрабатывать карты очень большого размера, т.к. карта не загружается в память целиком, обработка идет по одному объекту, при этом оперативной памяти требуется столько, чтобы в нее поместился самый большой объект карты.
5) Допустим в конфиге есть правило 0x1=0x2. mpUtilities обработает по этому правилу все типы начинающиеся с 0x1, например типы 0x10, 0x10f05, 0x10e07 и т.п. - все будут преобразованы в 0x2. Это - баг mpUtilities. В mpTypes такой проблемы нет.
6) Допустим в карте есть объект 0x3, а в конфиге есть правило 0x3=0x4, в этом случае тип этого объекта меняется на 0x4,что логично и правильно. Но если ниже в конфиге есть еще одно правило 0x4=0x5, то mpUtilities меняет тип этого объекта еще раз на 0x5. Это также создает определенные проблемы. В mpTypes тип объекта изменяется только один раз, в соответствии с правилом, которое в конфиге встречается первым.
Другие особенности алгоритма (по данным пунктам сравнение с mpUtilities не проводилось):
1) Если в конфиге по ошибке задано два правила для какого либо из типов, то используется то, которое идет выше.
2) Если исходное значение типа объекта содержится в секциях конфига перечисляющих перечень типов для удаления из карты ([DELPOLYLINE], [DELPOI], [DELPOLYGON]), то объект будет удален вне зависимости от того, есть ли касающиеся него правила в других секциях конфига. Т.о. секции удаления имеют наивысший приоритет.
3) Правила секций [CHNLIN2POL] и [CHNPOL2LIN] имеют более высокий приоритет,
чем правила преобразования типов.
4) Правила из секции [DELROUTE] применяются к линии после изменения ее типа, если такое изменение прописано в секции [POLYLINE], т.е. в секции [DELROUTE] в таком случае должен быть прописан итоговой тип. Если тип линии не меняется, то правило применяется к исходному типу.
Скачать mpTypes
Обновлено 2 марта.2015 г.
Опубликовано 8 мая 2014 г.
Богатырев Евгений
http://gpspohod.ucoz.ru |