Добрый день. Помогите, пожалуйста, разобраться. При добавлении матрицы высот к карте, выдается ошибка (Карта и матрица имеют разные параметры проекции. Конвертировать матрицу?). Отвечаю да. Выдает следующую ошибку
Хотя именно эту матрицу я и добавляю к карте и файл этот есть.
При этом матрица открывается и высоты отдает. Вот свойство файла -rwxrwxrwx 1 user user 6130529 авг 3 19:26 region.MTW т.е. прав должно хватать.
Содержимое файла region.mtw.log Начало преобразования проекции матрицы -***/maps/100-1/region.mtw Ошибка создания файла - ***/maps/100-1/region.mtw Ошибка преобразования проекции матрицы - ***/maps/100-1/region.
Открытие матрицы делаю так my_QDMapView->VarMapMtrs->Append( mtwFileName.toLocal8Bit().data() );
Другие карты с матрицами открываются без ошибок. Подскажите, как починить, что конвертировала или в какую сторону ошибки искать?
Для исключения ошибок перекодировки при преобразовании WCHAR-строки в строку char рекомендуется использовать функцию UnicodeToString() (mapsyst.h). В данном случае код будет выглядеть следующим образом:
Для исключения ошибок перекодировки при преобразовании WCHAR-строки в строку char рекомендуется использовать функцию UnicodeToString() (mapsyst.h). В данном случае код будет выглядеть следующим образом:
Проверку провели указанного поведения на актуальном ГИС Конструктор версии 14 в Astra linux версии 1.6 следующим образом: - добавили следующий код в один из слотов примера myfirst:
- скопировали данные тестовые данные из каталога /usr/share/gisdesigner/Data/Планы городов/ в каталог /tmp/; - открыли карту /tmp/Noginsk_3857/Noginsk.sit и выполнили слот с добавленным кодом.
После подтверждения запроса на трансформирование матрица была успешно открыта. Пожалуйста, проверьте наличие прав на запись в каталог с матрицей высот, при необходимости модифицируйте указанный код или предоставьте тестовые данные, на которых воспроизводится данная проблема. Дополнительно уточните, пожалуйста, используемую версию продукта.
Спасибо за предоставленные данные - по результатам анализа хотели уточнить следующие моменты: - в процессе добавления переданной матрицы высот к карте у нас не возникает запрос преобразования - не могли бы Вы уточнить, это уже преобразованная матрица или исходная? - в переданной карте координаты хранятся в дискретах - это устаревший формат хранения координат: если есть возможность, рекомендуем выполнить экспорт карты в формат TXF с сохранением координат в метрах и после этого выполнить импорт. Данную процедуру можно выполнить в программе ГИС-вьюер, доступной для скачивания на нашем сайте (https://gisinfo.ru/download/download.htm#5).
Здравствуйте. Карта исходная т.к. в Астре так и не получилось ее трансформировать - всегда ошибка возникает. Перепроверил еще раз взяв из архива карту, предложение конвертировать возникает, ошибка сохраняется. Кстати да.. под виндовс ни в ГИС-Вьювер , ни в нашем софтес использованием Вашей конпоненты GIS tool kit Active Free 64 бита.. Запрос на конвертацию не возникает..
Скачал вьювер и не нашел кнопки экспорта. Но интересует именно чтобы под Астрой это все заработало. Может библиотеки so (от Панорамы) тоже дослать вам, которые у меня используются?
В ответном письме по почте выслали Вам карту, полученную после преобразования в метры. Преобразовать координаты из дискрет в метры можно на уровне функций (https://gisweb.ru/forum/messages/forum17/topic4450/message28690/4450#message28690) или с помощью программы ГИС-вьюер (Открыть карту и нажать "Файл - Сохранить как". Затем выбрать расширение dir и сохранить данные)
Данную карту и матрицу совместили с помощью переданного примера на ГИС Конструктор 14 для ОС Astra Linux SE с нашего сайта - вопроса о преобразовании не возникло, поскольку у них одинаковая проекция. Пожалуйста, попробуйте выполнить такие же действия на крайней версии ГИС Конструктор - https://gisinfo.ru/download/download_linux.htm#5.
Дополнительно просим Вас проверить наличие прав на каталог /maps/100-1/.
Дополнительно уточняем информацию по преобразованию формата хранения координат карты (например, из дискретов в метры): - данную операцию можно выполнить программно с помощью функции семейства MapSortingSitePro() (mapapi.h). При этом, если Вы выполняете преобразование из дискретов, то вызов функции необходимо выполнять в одной из предыдущих версий ГИС Конструктор, поддерживающих открытие карт в дискретах; - пример использования функции MapSortingSitePro() можно посмотреть в тестовом примере из состава SDK, доступного на нашем сайте (архив sdk14_linux.zip, файл mapacces/tests/test_map_sorting.cpp): https://gisinfo.ru/download/download_linux.htm#13
Код
// Сортировка отдельной карты документа
// mapname - сортируемая карта
// flags - Флажки обработки карты :
// 0 - сортировать все листы,
// 1 - только несортированные,
// 2 - сохранять файлы отката,
// 4 - повысить точность хранения, формат - мкм
// 16 - повысить точность хранения, формат - см
// 32 - повысить точность хранения, формат - мм
// 64 - повысить точность хранения, формат - радианы
// 128 - формировать мультиконтура для объектов с флагом мультиконтурный
// handle - идентификатор окна, которому посылаются сообщения WM_OBJECT и WM_ERROR,
// если не задан параметр hEvent
// hEvent - адрес функции обратного вызова для уведомления о проценте выполнения,
// если параметр не задан, то посылаются сообщения WM_OBJECT и WM_ERROR
// eventparam - параметр, передаваемый функции обратного вызова
// outpath - буфер для записи пути к папке, куда сохранили отсортированную карту,
// если задан этот параметр, то исходная карта не обновляется,
// папка создается автоматически в программе сортировки
// size - длина буфера в байтах
// format - управление форматом карты :
// 0 - не менять,
// 1 - установить формат SITX (на входе может быть SIT или MAP с одним листом),
// 2 - упаковать карту в формат SITZ\MAPZ, точность - см,
// -1 - установить формат SIT (на входе может быть SITX или MAP с одним листом),
// code - управление шифрованием карты :
// 0 - не менять,
// 1 - шифровать данные с помощью пароля из параметра password (формат SITX),
// -1 - снять шифрование данных
// password - пароль для шифрования данных, когда code = 1, или 0
// Если карта отсортирована успешно - возвращает 1
// Если карта уже отсортирована - возвращает 2
// Если оператор прервал операцию - возвращает -1
// Если карта не доступна на редактирование - возвращает -2
// При ошибке возвращает ноль
_MAPIMP long int _MAPAPI MapSortingWithEventPro(const WCHAR *mapname, long int flags,
HMESSAGE handle, EVENTCALL hEvent, void *eventparam,
WCHAR *outpath, long int size,
long int format, long int code,
const WCHAR *password);
_MAPIMP long int _MAPAPI MapSortingSitePro(HMAP hmap, HSITE hsite, long int flags,
HMESSAGE handle, long int format, long int code,
const WCHAR *password);
_MAPIMP long int _MAPAPI MapSortingWithEventUn(const WCHAR *mapname, long int flags,
HMESSAGE handle, EVENTCALL hEvent, void *eventparam,
WCHAR *outpath, long int size);