DarkDiver | Дата: Четверг, 08.05.2014, 10:41 | Сообщение # 1 |
Полковник
Группа: Модераторы
Сообщений: 212
Репутация: 10
Статус: Offline
Откуда: Владивосток
| mpTypes - консольная программа-конвертер типов объектов для карт в польском формате, для перехода от одного набора типов к другому.
Использование программы:
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, то тип этого объекта меняется еще раз на 0x5. Это также создает определенные проблемы. В mpTypes тип объекта изменяется только один раз, в соответствии с правилом, которое в конфиге встречается первым.
Другие особенности алгоритма (по данным пунктам сравнение с mpUtilities не проводилось):
1) Если в конфиге по ошибке задано два правила для какого либо из типов, то используется то, которое идет выше. 2) Если исходное значение типа объекта содержится в секциях конфига перечисляющих перечень типов для удаления из карты ([DELPOLYLINE], [DELPOI], [DELPOLYGON]), то объект будет удален вне зависимости от того, есть ли касающиеся него правила в других секциях конфига. Т.о. секции удаления имеют наивысший приоритет. 3) Правила секций [CHNLIN2POL] и [CHNPOL2LIN] имеют более высокий приоритет, чем правила преобразования типов. 4) Правила из секции [DELROUTE]применяются к линии после изменения ее типа, если такое изменение прописано в секции [POLYLINE], т.е. в секции [DELROUTE]в таком случае должен быть прописан итоговой тип. Если тип линии не меняется, то правило применяется к исходному типу.
Страничка программы: http://gpspohod.ucoz.ru/publ....2-1-0-1
http://gpspohod.ucoz.ru В поход с GPS!
Сообщение отредактировал DarkDiver - Вторник, 07.10.2014, 13:04 |
|
| |