Мы используем функцию ImportFromAnySxfEx для конвертирования dir (с набором sxf) в mpt. При переходе на windows функция работает ожидаемо. При переходе на Astra Linux SE 1.5 функция перестала создавать файл mpt.
Один и тот же код для windows/linux с одними и теми же картами отрабатывает на 11 версии успешною На 12 версии для windows так же успешно. А на 12 версии для астры - нет. Т.е. после успешного(т.е. функция вернула не ноль) импорта файла mpt нет на месте и поиск его по всему диску не дает результата (было предположение, что файл создается в другом месте).
Подскажите в какую сторону копать. Что изменилось?
При импортировании создается папка LOG рядом с dir файлом. Внутри log файлы от всех свежеполученных sit и в содержимом криминала нет. Для dir нет log файла, либо не там ищу. Функция вернула "успех", файлы sxf превратились в sit. Файла mpt нет на месте.
По логам: - и на windows и на linux содержимое идентично - для некоторых листов говорится о несоответствии рамки и паспорта - для некоторых листов говорится о недопустимых семантиках
НО! При идентичности логов, на windows файл mpt, после успешного импорта, оказывается на месте, а на linux - нет.
Повторюсь, на 11 версии работало и на windows и на linux.
Николай Беспалов написал: При импортировании создается папка 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);
Попробовал 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
Можем предложить обновить ГИС Конструктор Free до версии 12.6.2, где такой проблемы нет. Или можно сформировать mpt программно. Открыть первую карту (mapOpenDataUn), добавить остальные (mapAppendDataUn) и сохранить проект (mapSaveProjectUn).