На главную... Продукты | Технологии | Классификаторы | Проекты | Скачать | Цены| Форум | Статьи | Обучение | Контакты

При переходе с 11 версии на 12 функция ImportFromAnySxfEx перестала создавать mpt файл из dir (на Astra Linux)

Поиск  Пользователи  Правила  Войти
Форум » Настольные приложения » GIS ToolKit, GIS ToolKit Active, ГИС Конструктор для Windows
Страницы: 1 2 След.
RSS
При переходе с 11 версии на 12 функция ImportFromAnySxfEx перестала создавать mpt файл из dir (на Astra Linux)
 
Добрый день!

Мы используем функцию ImportFromAnySxfEx для конвертирования dir (с набором sxf) в mpt.
При переходе на windows функция работает ожидаемо.
При переходе на Astra Linux SE 1.5 функция перестала создавать файл mpt.

Один и тот же код для windows/linux с одними и теми же картами отрабатывает на 11 версии успешною На 12 версии для windows так же успешно. А на 12 версии для астры - нет. Т.е. после успешного(т.е. функция вернула не ноль) импорта файла mpt нет на месте и поиск его по всему диску не дает результата (было предположение, что файл создается в другом месте).

Подскажите в какую сторону копать. Что изменилось?
Изменено: Николай Беспалов - 19.11.2020 10:40:33
 
Код функции является общим для всех платформ.
Сообщения об ошибках, если они есть, могут записываться в файл log.
 
При импортировании создается папка LOG рядом с dir файлом. Внутри log файлы от всех свежеполученных sit и в содержимом криминала нет. Для dir нет log файла, либо не там ищу.
Функция вернула "успех", файлы sxf превратились в sit. Файла mpt нет на месте.

По логам:
- и на windows и на linux содержимое идентично
- для некоторых листов говорится о несоответствии рамки и паспорта
- для некоторых листов говорится о недопустимых семантиках

НО! При идентичности логов, на windows файл mpt, после успешного импорта, оказывается на месте, а на linux - нет.

Повторюсь, на 11 версии работало и на windows и на linux.
 
Эксперимент 1:
Передать пустую строку ожидая получить путь до создаваемого файла
Код
ImportFromAnySxfEx(null, "Полный/путь/до/карты.dir", "Полный/путь/до/карты.rsc", "Пустая строка размером 1024", 1024, callback, null, 0)
На выходе получаем "Полный/путь/до/карты.mpt", но по этому пути файла нет

Эксперимент 2:
Передать полный путь до создаваемого файла ожидая получить идентичную строку
Код
ImportFromAnySxfEx(null, "Полный/путь/до/карты.dir", "Полный/путь/до/карты.rsc", "Полный/путь/до/карты.mpt", "Полный/путь/до/карты.mpt".size(), callback, null, 0)
На выходе получаем "Полный/путь/д". Конкретно ожидалось 79 байта, а получили 39

Эксперимент 3:
Передать полный путь до директории ожидая получить путь до создаваемого файла
Код
ImportFromAnySxfEx(null, "Полный/путь/до/карты.dir", "Полный/путь/до/карты.rsc", "Полный/путь/до/", "Полный/путь/до/".size(), callback, null, 0)
На выходе получаем "Полный/пут". Конкретно ожидалось 72 байта, а получили 36

Результаты навели на мысль попробовать версии функций с WCHAR. Попробовал. Безуспешно. На Windows работает.
 
Цитата
Николай Беспалов написал:
При импортировании создается папка LOG рядом с dir файлом. Внутри log файлы от всех свежеполученных sit и в содержимом криминала нет. Для dir нет log файла, либо не там ищу.Функция вернула "успех", файлы sxf превратились в sit. Файла mpt нет на месте.
Просьба уточнить полный номер версии программы, которую Вы используете.
 
Попробуйте функцию -
Код
 // Загрузить карту из файла SXF, TXF или DIR с использованием Select
 // с преобразованием топокарты к зоне документа
 // Файлы SXF и TXF могут хранить координаты в метрах, радианах или градусах
 // namedir - имя загружаемого файла типа DIR;
 // namemap - имя создаваемой карты
 //           или ноль или указатель на пустую строку (буфер размером 1024 символа
 //           c нулевым байтом равным нулю) или указатель на папку для размещения
 //           карты. Если namemap указывает на буфер достаточной длины (size),
 //           то в буфер записывается имя созданной карты;
 //           Для файла DIR тип общей карты - MPT (проект данных, включающий все
 //           открытые карты из DIR) или MAP (многолистовая карта);
 // size    - длина буфера, на который указывает переменная namemap или 0. Обычно длина
 //           равна 2048 байт;
 // handle  - идентификатор окна диалога, которому посылаются уведомительные
 //           сообщения (HWND для Windows, CALLBACK-Функция для Linux) или 0;
 // typesit  - тип создаваемых карт в проекте MPT при импорте DIR (1- SIT; -1- SITX)
 // password - пароль доступа к данным, из которого формируется 256-битный код
 //            для шифрования данных (при утрате данные не восстанавливаются) или 0
 // psize    - длина пароля в байтах или 0
 // crscode  - указатель на строку с кодом системы координат, к которой преобразуются
 //            данные или 0. Примеры строки: "EPSG:3857", "crslist:80070050"
 //            В первом случае преобразование выполняется в систему 3857 (проекция Меркатора на шаре),
 //            во втором - к параметрам, считанным из файла crslist.xml по коду 80070050,
 //            то есть, к некоторой пользовательской системе координат, описанной в файле crslist.xml.
 // callevent - адрес функции обратного вызова для получения уведомлений о проценте загруженных данных (см. maptype.h)
 // parm      - параметр, передаваемый в функцию обратного вызова (например, адрес класса обработки сообщений)
 // logfile   - путь к файлу журнала работы программы (может быть 0)
 // При ошибке возвращает ноль

_VECIMP long int _VECAPI ImportFromDirPro(const WCHAR* namedir, WCHAR* namemap, long int size,
                                          HMESSAGE handle, long int typesit, const WCHAR * password, long int psize,
                                          const char * crscode, EVENTSTATE callevent, void * parm, const WCHAR * logfile);

В ней можно и файл протокола задать.
 
Мы используем GIS Constructor Free 12.5.2

Попробовал ImportFromDirPro. namemap делал пустой, передавал полный путь - безуспешно(функция вернула успех, sit файлы на месте, mpt файла нет). На windows работает.

Содержимое log файла на windows:
Код
     00:54:01   Creating new map - O40.mp
     00:54:01   Common map classifier - 500T98G.RSC
     00:54:01   Load file - O401.sxf
     00:54:01   Map classifier - 500T98G.RSC
     00:54:01   Load file - O402.sxf
     00:54:01   Map classifier - 500T98G.RSC
     00:54:01   Load file - O403.sxf
     00:54:01   Map classifier - 500T98G.RSC
     00:54:01   Load file - O404.sxf
     00:54:01   Map classifier - 500T98G.RSC
     00:54:01   Creating the map - O402.sit
     00:54:01   Creating the map - O401.sit
     00:54:01   Creating the map - O403.sit
     00:54:01   Creating the map - O404.sit
     00:54:02   End of import from SXF - D:\Documents\gitlab.stc-spb.ru\tacticmaps\tmts\PanoramaRenderer\target\test-classes\dir\O40.DIR.v1601\O402.sxf
     00:54:02   End of import from SXF - D:\Documents\gitlab.stc-spb.ru\tacticmaps\tmts\PanoramaRenderer\target\test-classes\dir\O40.DIR.v1601\O401.sxf
     00:54:02   End of import from SXF - D:\Documents\gitlab.stc-spb.ru\tacticmaps\tmts\PanoramaRenderer\target\test-classes\dir\O40.DIR.v1601\O404.sxf
     00:54:02   End of import from SXF - D:\Documents\gitlab.stc-spb.ru\tacticmaps\tmts\PanoramaRenderer\target\test-classes\dir\O40.DIR.v1601\O403.sxf
     00:54:03   Dataset was appended to the project - O401.sit
     00:54:03   Dataset was appended to the project - O404.sit
     00:54:03   Dataset was appended to the project - O403.sit
     00:54:03   Total loaded files - 4
Содержимое log файла на астре:
Код
     21:38:59   Формирование района работ - O40.mpt
     21:38:59   Общий классификатор карты - 500T98G.RSC
     21:38:59   Обработка файла - /home/user/tmts/PanoramaRenderer/target/test-classes/dir/O40.DIR.v1601/O401.sxf
     21:38:59   Классификатор карты - 500T98G.RSC
>>>> 21:38:59   Параметры датума листа SXF в СК-42 не соответствуют ГОСТ Р 51794. Датум исправлен - O401.sxf
     21:38:59   Создается карта - 
     21:39:01   Завершение импорта из SXF - /home/user/tmts/PanoramaRenderer/target/test-classes/dir/O40.DIR.v1601/O401.sxf
     21:39:01   Обработка файла - /home/user/tmts/PanoramaRenderer/target/test-classes/dir/O40.DIR.v1601/O402.sxf
     21:39:01   Классификатор карты - 500T98G.RSC
>>>> 21:39:01   Параметры датума листа SXF в СК-42 не соответствуют ГОСТ Р 51794. Датум исправлен - O402.sxf
     21:39:01   Создается карта - 
     21:39:01   Завершение импорта из SXF - /home/user/tmts/PanoramaRenderer/target/test-classes/dir/O40.DIR.v1601/O402.sxf
     21:39:01   Обработка файла - /home/user/tmts/PanoramaRenderer/target/test-classes/dir/O40.DIR.v1601/O403.sxf
     21:39:01   Классификатор карты - 500T98G.RSC
>>>> 21:39:01   Параметры датума листа SXF в СК-42 не соответствуют ГОСТ Р 51794. Датум исправлен - O403.sxf
     21:39:01   Создается карта - 
     21:39:02   Завершение импорта из SXF - /home/user/tmts/PanoramaRenderer/target/test-classes/dir/O40.DIR.v1601/O403.sxf
     21:39:02   Обработка файла - /home/user/tmts/PanoramaRenderer/target/test-classes/dir/O40.DIR.v1601/O404.sxf
     21:39:02   Классификатор карты - 500T98G.RSC
>>>> 21:39:02   Параметры датума листа SXF в СК-42 не соответствуют ГОСТ Р 51794. Датум исправлен - O404.sxf
     21:39:02   Создается карта - 
     21:39:03   Завершение импорта из SXF - /home/user/tmts/PanoramaRenderer/target/test-classes/dir/O40.DIR.v1601/O404.sxf 
Изменено: Николай Беспалов - 21.11.2020 01:02:34
 
Можем предложить обновить ГИС Конструктор Free до версии 12.6.2, где такой проблемы нет.
Или можно сформировать mpt программно.
Открыть первую карту (mapOpenDataUn), добавить остальные (mapAppendDataUn) и сохранить проект (mapSaveProjectUn).
 
Мы используем сертифицированную для МО версию. Можете выслать таковую на мой email?
 
Она уже у Вас.
Тогда:
Открыть первую карту (mapOpenDataUn), добавить остальные (mapAppendDataUn) и сохранить проект (mapSaveProjectUn).
Страницы: 1 2 След.
Читают тему (гостей: 1)



© КБ Панорама, 1991-2024

Регистрируясь или авторизуясь на форуме, Вы соглашаетесь с Политикой конфиденциальности