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

Процент выполнения процесса построения матрицы высот

Поиск  Пользователи  Правила  Войти
Форум » Linux » Средства разработки ГИС-приложений для Linux
Страницы: 1
RSS
Процент выполнения процесса построения матрицы высот
 
ГИС Конструктор 14.0.1.21 (AstraLinux)
Помогите разобраться с выводом процента выполнения процесса построения матрицы высот.
Создаю матрицу по номенклатурному листу масштаба 1:100 000, например, с такими настройками:
Код
BUILDMTW buildMtw;
memset(&buildMtw, 0, sizeof(buildMtw));
buildMtw.StructSize = sizeof(buildMtw);
buildMtw.NotCheckDiskFreeSpace = 1;
buildMtw.BeginX = mapBorder.X1;
buildMtw.BeginY = mapBorder.Y1;
buildMtw.Width = mapBorder.Y2 - mapBorder.Y1;
buildMtw.Height = mapBorder.X2 - mapBorder.X1;
buildMtw.ElemSizeMeters = 50.0;
buildMtw.ElemSizeBytes = 4;
buildMtw.Unit = 0;          // метры
buildMtw.ReliefType = 0;    // тип матрицы высот - абсолютные высоты
buildMtw.UserType = 0;      // тип создаваемой матрицы
buildMtw.Scale = 0;         // будет заменено на масштаб векторной карты - источника
buildMtw.HeightSuper = 1;   // при попадании нескольких объектов заносить максимальную высоту
buildMtw.FastBuilding = 1;  // средневзвешенная интерполяция по 8 направлениям, без формирования локальных экстремумов
buildMtw.Method = 0;        // метод построения определяется параметром FastBuilding
buildMtw.Extremum = 0;      // локальные экстремумы не формировать
buildMtw.Border = 0;        // использовать замкнутый объект для ограничения матрицы
buildMtw.LimitMatrixFrame = 2;  // габариты матрицы ограничиваются габаритами области расположения объектов с абсолютной высотой
buildMtw.NotUse3DMetric = 0;               // трехмерная метрика используется
buildMtw.SurfaceSquare3DObject = 0;        // не строить поверхность по его трехмерной метрике
buildMtw.AltitudeMarksNet = 0;             // флаг дополнительной обработки высотных точек
buildMtw.LimitMatrixByFramesOfSheets = 1;  // ограничивать матрицу рамками листов
buildMtw.ElemSizeMetersX = 0;


mapBuildMtwUn(mapHandle, mtwName.utf16(), NULL, &buildMtw, (HWND)ProcessMTW);


Сообщения о ходе процесса вывожу через "(HWND)ProcessMTW":
Код
long MainWidget::ProcessMTW(long hwnd, long code,  WPARAM wParam, LPARAM lParam, long typemsg)
{
    QCoreApplication::processEvents();

    switch (code) {
    case 0x0581:
        qDebug() << "wParam =" << wParam << "lParam =" << lParam;
        break;
    case WM_ERROR:
        qDebug() << "Error";
        break;
    default:
        break;
    }
    return 0;
}

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

В итоге, какие-то проценты получаю. Однако, эти данные скачут то в "lParam", то в "wParam". Допускаю, что порядок переменных (WPARAM и LPARAM), на самом деле, должен быть наоборот. Однако, это на вывод никак не влияет.

Еще, должны проходить сообщения о номере этапа построения матрицы. Видимо, они у меня перемешиваются с процентами.
Пример вывода в функцию обратного вызова "ProcessMTW(...)" ниже, под спойлером:

Скрытый текст

ВОПРОСЫ:
1. Почему скачут значения в "WPARAM" и "LPARAM"?
2. Как правильно должна выглядеть функция обратного вызова для получения процента выполнения процесса построения матрицы высот?
 
Цитата
Александр Р. написал:
long MainWidget::ProcessMTW(long hwnd, long code,  WPARAM wParam, LPARAM lParam, long typemsg)
Немного не так...

long int MessageHandlerMtw(HWND hwnd, long int type, long int zero, WPARAM value, LPARAM lp)
{
 if(type == 0x0581) {
    if(NeedBreak) {
      return 0x0581;
    } else
     SetProgress(value)
 }
return 0;
}
 
Да, что-то поломали - раньше работало по моему варианту...
 
Добрый день!

Спасибо за информацию - внесли исправления в текущую версию ГИС Конструктор, в ближайшее время обновим инсталляцию.
 

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

 На сайте доступна обновленная версия ГИС Конструктор, в которой исправлен вывод процентов при построении матрицы высот.
Страницы: 1
Читают тему (гостей: 1)



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

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