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

Карта и матрица имеют разные параметры проекции

Поиск  Пользователи  Правила  Войти
Форум » Linux » Средства разработки ГИС-приложений для Linux
Страницы: 1
RSS
Карта и матрица имеют разные параметры проекции, Ошика конвертирования
 
Добрый день. Помогите, пожалуйста, разобраться.
При добавлении матрицы высот к карте, выдается ошибка (Карта и матрица имеют разные параметры проекции. Конвертировать матрицу?).
Отвечаю да. Выдает следующую ошибку

Хотя именно эту матрицу я и добавляю к карте и файл этот есть.

При этом матрица открывается и высоты отдает.
Вот свойство файла -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() );

Другие карты с матрицами открываются без ошибок.
Подскажите, как починить, что конвертировала или в какую сторону ошибки искать?
Изменено: Денис Вицко - 05.08.2022 10:36:39 (исправил вставку картинок)
 
Добрый день!

Для исключения ошибок перекодировки при преобразовании WCHAR-строки в строку char рекомендуется использовать функцию UnicodeToString() (mapsyst.h).
В данном случае код будет выглядеть следующим образом:
Код
char mtwFileNameString[MAX_PATH_LONG]; mtwFileNameString[0] = 0;
UnicodeToString(mtwFileName.utf16(), mtwFileNameString, sizeof(mtwFileNameString));
 
Цитата
Александр Савелов написал:
Добрый день!

Для исключения ошибок перекодировки при преобразовании WCHAR-строки в строку char рекомендуется использовать функцию UnicodeToString() (mapsyst.h).
В данном случае код будет выглядеть следующим образом:
Код
 char mtwFileNameString[MAX_PATH_LONG]; mtwFileNameString[0] = 0;
UnicodeToString(mtwFileName.utf16(), mtwFileNameString, sizeof(mtwFileNameString)); 
Попробовал Ваш вариант - ошибка та же.. т.е. не в преобразовании дело...
 

Здравствуйте!

Проверку провели указанного поведения на актуальном ГИС Конструктор версии 14 в Astra linux версии 1.6 следующим образом:
- добавили следующий код в один из слотов примера myfirst:

Код
QString mtwFileName = QString("/tmp/Noginsk_SK42/noginsk.mtw");
char mtwFileNameString[MAX_PATH_LONG]; mtwFileNameString[0] = 0;
UnicodeToString(mtwFileName.utf16(), mtwFileNameString, sizeof(mtwFileNameString));
ui.DMapView1->VarMapMtrs->Append(mtwFileNameString);

- скопировали данные тестовые данные из каталога /usr/share/gisdesigner/Data/Планы городов/ в каталог /tmp/;
- открыли карту /tmp/Noginsk_3857/Noginsk.sit и выполнили слот с добавленным кодом.

После подтверждения запроса на трансформирование матрица была успешно открыта.
Пожалуйста, проверьте наличие прав на запись в каталог с матрицей высот, при необходимости модифицируйте указанный код или предоставьте тестовые данные, на которых воспроизводится данная проблема.
Дополнительно уточните, пожалуйста, используемую версию продукта.

 
Добрый день.
Версия конструктора 12
Сделал тестовый проект и отправил вместе с картой на ящик panorama@gisinfo.ru  
 
Добрый день!

Спасибо за предоставленные данные - по результатам анализа хотели уточнить следующие моменты:
- в процессе добавления переданной матрицы высот к карте у нас не возникает запрос преобразования - не могли бы Вы уточнить, это уже преобразованная матрица или исходная?
- в переданной карте координаты хранятся в дискретах - это устаревший формат хранения координат: если есть возможность, рекомендуем выполнить экспорт карты в формат TXF с сохранением координат в метрах и после этого выполнить импорт. Данную процедуру можно выполнить в программе ГИС-вьюер, доступной для скачивания на нашем сайте (https://gisinfo.ru/download/download.htm#5).
 
Здравствуйте.
Карта исходная т.к. в Астре так и не получилось ее трансформировать - всегда ошибка возникает. Перепроверил еще раз взяв из архива карту, предложение конвертировать возникает, ошибка сохраняется.
Кстати да.. под виндовс ни в ГИС-Вьювер , ни в нашем софтес использованием Вашей конпоненты GIS tool kit Active Free 64 бита.. Запрос на конвертацию не возникает..

Скачал вьювер и не нашел кнопки экспорта.
Но интересует именно чтобы под Астрой это все заработало. Может библиотеки so (от Панорамы) тоже дослать вам, которые у меня используются?
Изменено: Валерий Валериевич - 16.08.2022 00:06:43
 
Поставил дизайнер 14 версии.. при открытии карты из того же примера. Возникает ошибка

После того как пересохранил карту во вьювере.. получилось несколько файлов .. M35.SXF, M36.SXF...

При открытии карты region.SXF возникает ошибка: Ошибка входных данных


В принципе как вам удобнее.. можем рассматривать 12ю версию, либо можем перейти на обсуждение 14й. Но помогите пожалуйста
Изменено: George - 16.08.2022 10:03:17
 
Здравствуйте!

В ответном письме по почте выслали Вам карту, полученную после преобразования в метры. Преобразовать координаты из дискрет в метры можно на уровне функций (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);
Страницы: 1
Читают тему (гостей: 1)



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

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