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

Проблема с построением матрицы глубин в Astra Linux

Поиск  Пользователи  Правила  Войти
Форум » Linux » Средства разработки ГИС-приложений для Linux
Страницы: 1
RSS
Проблема с построением матрицы глубин в Astra Linux, Проблема с mapBuildMtwDepth
 
Здравствуйте!

Функция mapBuildMtwDepth возвращает ошибку 60040(IDS_PARM ОШИБКА ВХОДНЫХ ПАРАМЕТРОВ). На этих же данных в Windows все отрабатывает без ошибок.
Что может приводить к возврату ошибки IDS_PARM? Какие входные параметры проверить?

BUILDMTW формирую так:
Скрытый текст
 
Здравствуйте!

Для проведения тестирования не могли бы Вы уточнить следующую информацию:
- версия операционной системы;
- версия используемого продукта;
- возможно ли предоставить данные для воспроизведения данного поведения.


 
Система:
hostnamectl:
...
 Operating System: Astra Linux (Smolensk 1.6)
           Kernel: Linux 4.15.3-1-generic
     Architecture: x86-64

Версия Панорамы:
gisdesigner free версия 13.1.1.41

libqdmapacces.so 7,67 Мб от 07.04.2020 16:13:35

Из maptype.h:
// Версия библиотеки MapAccess
#define MAPACCESSVERSION  20181214

// Версия интерфейса MAPAPI
#define MAPAPIVERSION  0x0120700


Карту отправил на почту, для BMTW неё:

BMTW.BeginX = 4.50308e+06
BMTW.BeginY = 7.02928e+06
BMTW.Width = 734596
BMTW.Height = 542156
BMTW.ElemSizeMeters = 300
BMTW.ElemSizeBytes = 4
BMTW.UserType = 1213485124
BMTW.Method = 1
BMTW.LimitMatrixFrame = 2
BMTW.SurfaceSquare3DObject = 1  
 
Здравствуйте!

По указанным параметрам выполнили тестирование с помощью открытия mpt проекта и выполнение приведенного кода ниже:
Код
HMAP mapHandle = ui.DMapView1->GetMapHandle();

double x1 = mapGetMapX1(mapHandle);
double y1 = mapGetMapY1(mapHandle);
double x2 = mapGetMapX2(mapHandle);
double y2 = mapGetMapY2(mapHandle);

BUILDMTW BMTW;
memset(&BMTW,0,sizeof(BUILDMTW));
BMTW.StructSize = sizeof(BUILDMTW);
BMTW.BeginX = x1; // Прямоугольные координаты начала
BMTW.BeginY = y1; // (юго - западного угла) матрицы в метрах
BMTW.Width = y2 - y1; // Ширина матрицы в метрах
BMTW.Height = x2 - x1; // Высота матрицы в метрах
BMTW.ElemSizeMeters = 300;
BMTW.ElemSizeBytes = 4;
BMTW.Unit = 0;
BMTW.ReliefType = 0;
BMTW.UserType = LABEL_MTW_DEPTH;
BMTW.HeightSuper = 0;
BMTW.Method = 1;
BMTW.Extremum = 0;
BMTW.Border = 0;
BMTW.LimitMatrixFrame = 2;
BMTW.NotUse3DMetric = 0;
BMTW.SurfaceSquare3DObject = 1;
BMTW.AltitudeMarksNet = 0;
BMTW.LimitMatrixByFramesOfSheets = 0;

long errorcode = 0;
int ret = mapBuildMtwDepth(mapHandle, mapHandle, WTEXT("/tmp/test.mtw"), &BMTW, MessageHandle, &errorcode);

Матрица глубин была успешно построена.
При необходимости модифицируйте указанный пример для воспроизведения некорректного поведения.
 
Попробовал. В таком виде происходит падение после вызова функции mapBuildMtwDepth. Отличие вместо MessageHandle я передаю nullptr.
Библиотеку с mapBuildMtwDepth линкую статически.
 
Поведение повторили, исправление войдет в следующую версию ГИС Конструктор.
В качестве временного решения можно передать указатель на существующую функцию обработки сообщений.Пример реализации функции можно посмотреть в исходных текстах библиотеки компонентов (qdmwina.cpp) или можно воспользоваться следующей заглушкой:
Код
long int MessageHandler(long int mapViewWindow, long int code, long int wp, long int lp, long int typemsg)
{
  return 0;
}

 
Благодарю. Так работает.
Страницы: 1
Читают тему (гостей: 1)



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

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