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

Построение зон видимости

Поиск  Пользователи  Правила  Войти
Форум » Настольные приложения » GIS ToolKit, GIS ToolKit Active, ГИС Конструктор для Windows
Страницы: Пред. 1 2 3 4
RSS
Построение зон видимости
 
Цитата
Мы такую ситуацию повторить не можем.
Проверяем на библиотеках версии 14.
Поделитесь данными - проверим.
проверил на ногинске
1. координаты точки наблюдения 6183027,81   7461339,95
2. дистанция 18 км высота 10м азимут 0

с параметром VisionRst=0



VisionRst=1




3. проверено panorama 12
Изменено: Денис Вицко - 17.01.2023 10:13:04
 
Цитата
Владислав Костылев написал:
3. проверено panorama 12
На 12 версию техническая поддержка закончена.
Рекомендуем работать в актуальной 14 версии. Все изменения вошли и будут входить только в нее.
 
Цитата
Владислав Костылев написал:
Цитата
Тип матрицы = Суммарные высоты" задаётся параметром:
struct BUILDMTW
int ReliefType; // Тип матрицы высот MTW
// 0 - абсолютные высоты,
// 1 - суммарные высоты (абсолютные + относительные),
// 2 - относительные высоты
Этот параметр задаётся при создании матрицы высот.
Создание матрицы выполняет функция mapBuildMtwUn
По всей видимости задание одного этого параметра не является достаточным условием для функции mapBuildMtw.
1. А имменно какую mtrname надо задавать при открытой матрице высот?
2. Остальные значения я понимаю можно взять как filtername =0 handle=0?
3. по заполнению структуры BULDMTW возникло наибольшее количество вопросов
3.1. mtrparam.StructSize= sizeof(BUILDMTW);
      mtrparam.ReliefType=1;
      mtrparam.ElemSizeBytes=4; эти параметры как будто бы обязательные при задании структуры BUILDMTW для функции mapBUILDMtw
3.2. требуется ли задавать прямоугольные координаты для структуры BUILDMTW при наличии матрицы выстот и необходимости учитывать везде по карте учитывать рельеф лес и зданий совместно с рельефом местности.
3.3. требуется ли задавать единицу измерения высоты
3.4. UserType; как инициализировать этот параметр
3.5. int Scale; нужно ли его инициализировать если векторная карта не создается а уже загружена из mtw файла
3.6. int HeightSuper=1; его надо так инициализировать чтобы получать суммарную высоту объекта и рельефа
3.7. int Method=3; или 1 или 2 для плоских объектов
3.8. int Extremum=1 ?
3.9. int LimitMatrixFrame; нужна ли инициализация этого поля при созданной матрице высот
3.10. HOBJ Border; откуда берется объект
3.11. int NotUse3DMetric=0; если не использовать трехмерную графику наверное ноль?
3.12. int SurfaceSquare3DObject=0; если не использовать трехмерную графику наверное ноль?
3.13. int AltitudeMarksNet; как метод будет влиять на построение высот =высота объекта+высота рельефа
3.14. int LimitMatrixByFramesOfSheets; ноль?
3.15. double   ElemSizeMetersX; будет ли выполнено построение если значение будет равно 0 или не будет задаваться полностью?

Ответы на эти и другие вопросы уже даны в версии 14.
Например, в описании структуры:
Код
// ПАРАМЕТРЫ СОЗДАНИЯ МАТРИЦЫ ВЫСОТ(MTW), МАТРИЦЫ КАЧЕСТВ(MTQ), РАСТРА КАЧЕСТВ(RSW)
// Для функций mapCreateMtw, mapCreateMtq, mapBuildRsw должны быть заданы:
// StructSize, BeginX,BeginY,Width,Height,ElemSizeMeters,ElemSizeBytes,Scale.
// Для функции mapCreateMtw также должны быть заданы: Unit, ReliefType.
typedef struct BUILDMTW
{
  int StructSize;          // Размер данной структуры : sizeof (BUILDMTW)

  int NotCheckDiskFreeSpace;  // Флаг - не проверять наличие свободного места на диске
                              // при создании файла матрицы :
                              //   0 - проверять наличие свободного места
                              //   1 - не проверять наличие свободного места

  double   BeginX;         // Прямоугольные координаты начала
  double   BeginY;         // (юго-западного угла) матрицы в метрах

  double   Width;          // Ширина матрицы в метрах
  double   Height;         // Высота матрицы в метрах

  double   ElemSizeMeters; // Размер стороны элементарного участка
                           // в метрах на местности по горизонтали (Y)

  int ElemSizeBytes;       // Pазмер элемента матрицы в байтах
                           // (допустимые значения : 1,2,4,8)
                           // При создании матрицы высот MTW по векторной карте функцией mapBuildMtw или
                           // при создании растра качеств RSW по векторной карте функцией mapBuildRsw
                           // значение данного поля должно быть равно 4
                           // (при этом после построения растра будет выполнена оптимизация и
                           // размер выходного элемента растра будет равен 1);
                           // Значение 1 соответствует типу "unsigned char" (код отсутствия данных = 0)
                           // Значение 2 соответствует типу "short int" (код отсутствия данных = -32767)
                           // Значение 4 соответствует типу "long int" (код отсутствия данных = -32767000)
                           // Значение 8 соответствует типу "double" (код отсутствия данных = -32767000)

  int Unit;                // Eдиница измерения высоты матрицы высот MTW
                           // (0 - метры, 1 - дециметры,
                           //  2 - сантиметры, 3 - миллиметры )

  int ReliefType;          // Тип матрицы высот MTW
                           //   0 - абсолютные высоты,
                           //   1 - суммарные высоты (абсолютные + относительные),
                           //   2 - относительные высоты

  int UserType;            // Тип создаваемой матрицы:
                           //  0 - матрица высот или качеств,
                           //  LABEL_MTW_DEPTH - матрица глубин,
                           //  RSW_QUALITY - растр качеств

  int Scale;               // Знаменатель масштаба создаваемой
                           // матричной карты (при создании матрицы высот MTW
                           // по векторной карте функцией mapBuildMtw значение
                           // данного поля будет заменено на знаменатель
                           // масштаба векторной карты)

  int HeightSuper;         // Флаг занесения высоты в элемент при создании матрицы
                           // высот MTW по векторной карте функцией mapBuildMtw и при попадании
                           // в элемент более одного объекта с абсолютной высотой :
                           //  0 - заносить среднюю высоту
                           //  1 - заносить максимальную высоту
                           //  2 - заносить минимальную высоту

  int FastBuilding;        // УСТАРЕВШЕЕ ПОЛЕ
                           // Режим создания матрицы (при Method = 0) :
                           //  0 - средневзвешенная интерполяция по 16 направлениям,
                           //    без формирования локальных экстремумов
                           //  1 - средневзвешенная интерполяция по 8 направлениям,
                           //    без формирования локальных экстремумов
                           //  2 - средневзвешенная интерполяция по 16 направлениям,
                           //    с формированием локальных экстремумов
                           //  3 - средневзвешенная интерполяция по 8 направлениям,
                           //    с формированием локальных экстремумов

 int Method;               // Метод построения поверхности при создании матрицы высот MTW
                           // по векторной карте функцией mapBuildMtw :
                           //  0 - метод не определён
                           //  1 - средневзвешенная интерполяция по 16 направлениям,
                           //      дальность сканирования при интерполяции = 128 элементов
                           //  2 - средневзвешенная интерполяция по 8 направлениям,
                           //      дальность сканирования при интерполяции = 128 элементов
                           //  3 - средневзвешенная интерполяция по 16 направлениям,
                           //      дальность сканирования при интерполяции = 256 элементов
                           //  8 - линейная интерполяция по сетке треугольников
                           //     (в методе используются только точечные объекты)
                           //  16 - плоская поверхность с нулевой высотой
                           //       для матрицы относительных высот (ReliefType = 2)

  int Extremum;       // Флаг формирования локальных экстремумов
                      //
                      // функцией mapBuildMtw (при Method = 1,2,3) :
                      //  0 - локальные экстремумы не формируются
                      //  1 - локальные экстремумы формируются

#ifdef _M_X64
  int Free;           // Выравнивание
#endif // _M_X64

  HOBJ Border;        // Идентификатор замкнутого объекта при создании
                      // матрицы высот MTW по векторной карте функцией mapBuildMtw.
                      // По данному объекту устанавливается рамка создаваемой матрицы
                      // (если объект расположен вне габаритов матрицы,
                      // определяемых значениями полей BeginX, BeginY, Width, Height
                      // данной структуры, то рамка не устанавливается)

  int LimitMatrixFrame;
                      // Флаг ограничения габаритов при создании матрицы MTW
                      // по векторной карте функцией mapBuildMtw при Method = 1,2,3,8
                      // (габариты матрицы определяются значениями полей
                      // BeginX, BeginY, Width, Height данной структуры) :
                      //  0 - ограничение не выполняется
                      //  1 - габариты матрицы ограничиваются
                      //      габаритами района
                      //  2 - габариты матрицы ограничиваются
                      //      габаритами области расположения
                      //      объектов с абсолютной высотой


  int NotUse3DMetric;
                      // Флаг - не использовать трехмерную метрику объектов
                      // при создании матрицы MTW по векторной карте функцией mapBuildMtw:
                      //  0 - трехмерная метрика используется
                      //  1 - трехмерная метрика не используется

  int SurfaceSquare3DObject;
                      // Флаг при создании матрицы MTW по векторной карте функцией mapBuildMtw -
                      // строить поверхность внутри площадного
                      // объекта по его трехмерной метрике :
                      //  0 - не строить поверхность
                      //  1 - строить поверхность
                      // Если параметр NotUse3DMetric равен 1,
                      // то поверхность не строится

  int AltitudeMarksNet;
                      // Флаг дополнительной обработки высотных точек при
                      // создании матрицы MTW по векторной карте функцией mapBuildMtw для
                      // средневзвешенной интерполяции (Method = 1,2,3) :
                      //  0 - для каждой высотной точки выполняется построение и
                      //      занесение в матрицу лучей влияния высоты (луч влияния
                      //      высоты - 3D-отрезок,выходящий из точки по одному из
                      //      16 радиальных направлений; высоты элементов отрезка
                      //      определяются высотой точки и высотой, найденной при
                      //      сканировании матрицы из точки по данному направлению.
                      //      Лучи влияния высоты компенсируют промахи мимо точки
                      //      с абсолютной высотой при поиске значащих высот в процессе
                      //      вычисления незаполненых элементов матрицы.
                      //  1 - по набору высотных точек создается триангуляция,
                      //      ребра триангуляции (или части ребер) заносятся в матрицу
                      //      в виде 3D-отрезков (если ребро не пересекает объекты
                      //      с абсолютной высотой, то оно выводится целиком,
                      //      если пересекает, то выводится часть ребра, ограниченная
                      //      его вершиной и точкой пересечения с объектом);
                      //  2 - дополнительная обработка высотных точек не выполняется,
                      //      высота точки заносится в один элемент матрицы,
                      //      обычно применяется при построении поверхности
                      //      по набору отметок высот

  int LimitMatrixByFramesOfSheets;
                      // Флаг ограничения матрицы рамками листов при создании
                      // матрицы MTW по векторной карте функцией mapBuildMtw (для Method = 1,2,3,8):
                      //  0 - ограничение матрицы не выполняется,
                      //      информативные элементы могут располагаться
                      //      вне рамок листов
                      //  1 - ограничение матрицы выполняется,
                      //      информативные элементы располагаются
                      //      только внутри габаритов рамок листов

  double   ElemSizeMetersX; // Размер стороны элементарного участка
                            // в метрах на местности по вертикали (X) или 0

  char Reserve[12];   // Должны быть нули
}
  BUILDMTW;

Мы проверяем только в версии 14.
 
Цитата
Владислав Костылев написал:
По всей видимости задание одного этого параметра не является достаточным условием для функции mapBuildMtw. 1. А имменно какую mtrname надо задавать при открытой матрице высот?
Для построения зон видимости нужно предварительно по векторной карте
создать матрицу высот с суммарным типом рельефа - функцией mapBuildMtwUn.

Суммарный тип рельефа: сначала строится поверхность по объектам с семантикой "абсолютная высота",
затем к высотам построенной "абсолютной" поверхности добавляются высоты объектов с семантикой "относительная высота".

Пример создания матрицы высот

// Открыть векторную карту
HMAP hMap = mapOpenMap("D:\\Data\\Noginsk\\noginsk.sit", 0);

if (hMap == 0)
{
  ShowMessage("hMap == 0");
  return;
}

double X1 = mapGetMapX1(hMap);
double X2 = mapGetMapX2(hMap);

double Y1 = mapGetMapY1(hMap);
double Y2 = mapGetMapY2(hMap);

// Заполнение структуры параметров создаваемой матрицы
//  (задаём обязательные параметры)

BUILDMTW MtrParm;
memset(&MtrParm, 0, sizeof(MtrParm));

MtrParm.StructSize = sizeof(MtrParm);

MtrParm.BeginX = X1; // Начало матрицы  (юго-западный угол)
MtrParm.BeginY = Y1;

MtrParm.Width  = Y2 - MtrParm.BeginY; // Размеры матрицы
MtrParm.Height = X2 - MtrParm.BeginX;

MtrParm.ElemSizeMeters = 50; // Размер элемента в метрах
MtrParm.ElemSizeBytes = 4;   // Размер элемента в байтах

// Единица измерения высоты (миллиметры)
MtrParm.Unit = 3;

// Тип результирующего рельефа - суммарные высоты (абсолютные + относительные)
MtrParm.ReliefType = 1;

// Заносить в матрицу максимальную высоту (важно для зон видимости)
MtrParm.HeightSuper = 1;

// Средневзвешенная интерполяция по 8 направлениям
// (наиболее быстрый метод вычисления незаполненных из карты элементов)
MtrParm.Method = 2;

int rc = mapBuildMtwUn(hMap, L"mtwfile.mtw", 0, &MtrParm, Handle);

if (rc)
  MessageBox(0, "Создание матрицы", "Выполнено", ID_OK);
else
  MessageBox(0, "Создание матрицы", "Не выполнено", ID_OK);

// Закрыть векторную карту
mapCloseData(hMap);
}
 
Цитата
Для построения зон видимости нужно предварительно по векторной карте
создать матрицу высот с суммарным типом рельефа - функцией mapBuildMtwUn.

Суммарный тип рельефа: сначала строится поверхность по объектам с семантикой "абсолютная высота",
затем к высотам построенной "абсолютной" поверхности добавляются высоты объектов с семантикой "относительная высота".

Пример создания матрицы высот

// Открыть векторную карту
HMAP hMap = mapOpenMap("D:\\Data\\Noginsk\\noginsk.sit", 0);

if (hMap == 0)
{
  ShowMessage("hMap == 0");
  return;
}

double X1 = mapGetMapX1(hMap);
double X2 = mapGetMapX2(hMap);

double Y1 = mapGetMapY1(hMap);
double Y2 = mapGetMapY2(hMap);

// Заполнение структуры параметров создаваемой матрицы
//  (задаём обязательные параметры)

BUILDMTW MtrParm;
memset(&MtrParm, 0, sizeof(MtrParm));

MtrParm.StructSize = sizeof(MtrParm);

MtrParm.BeginX = X1; // Начало матрицы  (юго-западный угол)
MtrParm.BeginY = Y1;

MtrParm.Width  = Y2 - MtrParm.BeginY; // Размеры матрицы
MtrParm.Height = X2 - MtrParm.BeginX;

MtrParm.ElemSizeMeters = 50; // Размер элемента в метрах
MtrParm.ElemSizeBytes = 4;   // Размер элемента в байтах

// Единица измерения высоты (миллиметры)
MtrParm.Unit = 3;

// Тип результирующего рельефа - суммарные высоты (абсолютные + относительные)
MtrParm.ReliefType = 1;

// Заносить в матрицу максимальную высоту (важно для зон видимости)
MtrParm.HeightSuper = 1;

// Средневзвешенная интерполяция по 8 направлениям
// (наиболее быстрый метод вычисления незаполненных из карты элементов)
MtrParm.Method = 2;

int rc = mapBuildMtwUn(hMap, L"mtwfile.mtw", 0, &MtrParm, Handle);

if (rc)
  MessageBox(0, "Создание матрицы", "Выполнено", ID_OK);
else
  MessageBox(0, "Создание матрицы", "Не выполнено", ID_OK);

// Закрыть векторную карту
mapCloseData(hMap);
}
Спасибо. Код определенно учел некоторые параметры но... Высота леса получилась фиксрованная и не соотетствует картинке на карте. Высота зданий не увидел что учитывается. Проверял на гиспанораме 14 карта г. Луга. К сожалению в ваших бесплатных картах Ногинска и Подольска есть карта высот но нет самих лесов  и не видно этого приращения. На видео что я присылаю показан характерный переход учета растительности см. курсор и внизу скачек высот. Полагаю что скачек высот неправильный.

https://disk.yandex.ru/i/uUwcQxKg5qPnrw
 
Цитата
Владислав Костылев написал:
Высота леса получилась фиксированная и не соответствует картинке на карте. Высота зданий не увидел что учитывается. Проверял на гис панораме 14 карта г. Луга. К сожалению в ваших бесплатных картах Ногинска и Подольска есть карта высот но нет самих лесов  и не видно этого приращения. На видео что я присылаю показан характерный переход учета растительности см. курсор и внизу скачек высот. Полагаю что скачек высот неправильный.
Добрый день!

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

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

Трехмерная метрика объектов карты будет участвовать в построении матрицы, если задан режим "Использовать высоты из трехмерной метрики объектов".

При создании матрицы может использоваться служебный текстовый файл с расширением IMH, который определяет объектовый состав информации НЛ района, участвующей  в  процессе  создания  матрицы  высот.

Более подробную информацию можно почитать в заделе помощи - https://help14.gisserver.ru/russian/panorama/index.html?buildmtr.html


Карта "Подольска" содержит объекты типа "Леса густые высокие", но для этих объектов не заполнена семантика относительной высоты. Матрица, которая идет в комплекте с этим примером, содержит лишь абсолютные высоты.
Для учета суммарных высот (абсолютная + относительная) необходимо заполнить значения семантики для объектов "Леса густые высокие"
С уважением, Демиденко Р.А.
 
Приветсвую!
При использовании функции построения зоны видимости есть возможность отключить появление диалога ввода параметров? если я параметры уже передал в функцию, зачем открывать диалог?
Есть возможность несколько зон видимости "оконтурить" общей зоной? каков алгоритм и набор функций?
 
Добрый день!

Построение зоны видимости по матрице высот в виде растрового изображения (не вызывает диалог), может вызываться многократно для нескольких точек наблюдения:
Цитата
// Построение зоны видимости по матрице высот в виде растрового изображения
// hmap - идентификатор открытой векторной карты
// rstname - полное имя растра
// zoneparm - параметры построения зоны (см.maptype.h)
// hpaint - контекст поддержки многопоточного вызова (см. mapCreatePaintControl)
// flags - флаги режимов (1 - запретить нанесение границы зоны на растр)
// Построение производится при наличии открытой матрицы высот
// Результат записывается в файл namerst
// Возвращает номер растра в цепочке
// При ошибке возвращает ноль

_MAPIMP long int _MAPAPI mapVisibilityZonePro(HMAP hmap, const WCHAR * rstname,
                                             TBUILDZONEVISIBILITY * zoneparm, HPAINT hPaint, long int flags);

// ПАРАМЕТРЫ ПОСТРОЕНИЯ ЗОНЫ ВИДИМОСТИ
typedef struct TBUILDZONEVISIBILITY
{
 DOUBLEPOINT PointCenter;      // Исходная точка
 double      RadiusMeter;      // Расстояние (в метрах на местности)
 double      Azimuth;          // Дирекционный угол (в радианах)
 double      Angle;            // Угол обзора (в радианах)
                               // При Azimuth = 0, Angle = 2*M_PI (360 градусов) строится круговая зона
 double      DeltaHight;       // Высота наблюдения (в метрах)
 double      DeltaObservation; // Приращение наблюдаемой точки (в метрах)
 int         VisionRst;        // Видимость зон пересечения: 0 - со всех точек, 1 - хотя бы с одной
 int         StyleRst;         // Степень видимости растра: 0-прозрачный, 1-полупрозрачный, 2-заполненный
 int         ColorRst;         // Цвет растра
 int         Inversion;        // Инверсия видимости
}
 TBUILDZONEVISIBILITY;

Для "оконтуривания" полученного растра (т.е. получения векторных площадных объектов на карте) можно воспользоваться функцией mtrRstToVector:

Цитата
// Преобразование растра в вектор
// hmap       - основная карта
// hsit       - векторная карта в которую пишутся объекты
// rstnum     - номер исходного растра, добавленного к карте
// isfilter   - признак фильтрации точек, лежащих на одной прямой (0..1)
// hselect    - содержит созданные объекты (если = 0, то не заполняется)
// classes    - распознаваемые классы
// classcount - количество классов
// border     - объект, ограничивающий область преобразования растра в вектор
// iscuthole  - признак вырезания подобъектов
//              если = 0, то внутренний объект всегда имеет больший номер (Key), чем внешний
// handle     - идентификатор окна диалога, которому посылается cообщение 0x0581
//              в wParam - процент выполненной обработки
//              в lParam - адрес строки с названием выполняемого этапа
//              Если процесс должен быть принудительно завершен, в ответ
//              должно вернуться значение 0x0581.
// fcallback  - функция обратного вызова для сообщения статуса выполнения (процентов),
//              это функция типа EVENTCALL (см. описание в maptype.h), первым параметром
//              в нее будет возвращено значение eventparam, вторым - код сообщения
//              (0x0581),
//              в третьем параметре  - процент выполненной обработки
//              в чевертом параметре - адрес строки с названием выполняемого этапа
//              Если процесс должен быть принудительно завершен, в ответ
//              должно вернуться значение 0x0581.
// eventparam - параметр, передаваемый в функцию обратного вызова для идентификации
//              отклика на вызывающей стороне.
// Если handle (или fcallback) равно нулю - сообщения не посылаются
// Текст передается в кодировке Unicode (UTF16)
// В случае ошибки возвращает 0

long int MTREXPORT mtrRstToVector(HMAP hmap, HSITE hsit, long int rstnum, long int isfilter,
                                 HSELECT hselect, MTRCLASS *classes, long int classcount, HOBJ border,
                                 long int iscuthole, HMESSAGE handle);

long int MTREXPORT mtrRstToVectorCallBack(HMAP hmap, HSITE hsit, long int rstnum, long int isfilter,
                                 HSELECT hselect, MTRCLASS *classes, long int classcount, HOBJ border,
                                 long int iscuthole, EVENTCALL fcallback, void *eventparam);


Построение зоны видимости в виде матрицы качеств с учетом объектов векторной карты (не вызывает диалог):
Цитата

// Параметры вызова задачи построения матрицы зон видимости

typedef struct BUILDVISIBLE
{
 double    Radius;   // предельный радиус видимости
 double    ElemSize; // размер элемента создаваемой матрицы в метрах
 COLORREF  Color;    // цвет, которым показывается элементы, с которых видны точки
 int       Reserved[63];
}
 BUILDVISIBLE;

// Построение матрицы видимости
// hmap    - основная карта
// hsite    - векторная карта с объектами, по которым строится матрица плотности
// mtqname - имя создаваемой матрицы
// hselect - объекты, по которым строится матрица (если = 0, то все объекты карты)
// parm    - параметры построения
// hwnd    - окно, которому посылаются сообщения WM_PROGRESSBAR с процентом
//           обработки в WPARAM (если = 0, то сообщения не посылаются)
// При ошибке возвращает 0

long int MTREXPORT mtrBuildVisibleMtq(HMAP hmap, HSITE hsite, const WCHAR *mtqname,
                                     HSELECT hselect, BUILDVISIBLE *parm, HMESSAGE hwnd);


Для "оконтуривания" полученной матрицы (т.е. получения векторных площадных объектов на карте) можно воспользоваться функцией mtrMtqToVector
Цитата
// Преобразование матрицы качеств в вектор
// hmap       - основная карта
// hsit       - векторная карта в которую пишутся объекты
// mtqnum     - номер исходной матрицы качеств, добавленной к карте
// isfilter   - признак фильтрации точек, лежащих на одной прямой (0..1)
// hselect    - содержит созданные объекты (если = 0, то не заполняется)
// classes    - распознаваемые классы
// classcount - количество классов
// border     - объект, ограничивающий область преобразования матрицы в вектор
// iscuthole  - признак вырезания подобъектов
//              если = 0, то внутренний объект всегда имеет больший номер (Key), чем внешний
// handle     - идентификатор окна диалога, которому посылается cообщение 0x0581
//              в wParam - процент выполненной обработки
//              в lParam - адрес строки с названием выполняемого этапа
//              Если процесс должен быть принудительно завершен, в ответ
//              должно вернуться значение 0x0581.
// fcallback  - функция обратного вызова для сообщения статуса выполнения (процентов),
//              это функция типа EVENTCALL (см. описание в maptype.h), первым параметром
//              в нее будет возвращено значение eventparam, вторым - код сообщения
//              (0x0581),
//              в третьем параметре  - процент выполненной обработки
//              в чевертом параметре - адрес строки с названием выполняемого этапа
//              Если процесс должен быть принудительно завершен, в ответ
//              должно вернуться значение 0x0581.
// eventparam - параметр, передаваемый в функцию обратного вызова для идентификации
//              отклика на вызывающей стороне.
// Если handle (или fcallback) равно нулю - сообщения не посылаются.
// Текст передается в кодировке Unicode (UTF16).
// В случае ошибки возвращает 0.
long int MTREXPORT mtrMtqToVector(HMAP hmap, HSITE hsit, long int mtqnum, long int isfilter,
                                 HSELECT hselect, MTRCLASS *classes, long int classcount, HOBJ border,
                                 long int iscuthole, HMESSAGE handle);

long int MTREXPORT mtrMtqToVectorCallBack(HMAP hmap, HSITE hsit, long int mtqnum, long int isfilter,
                                 HSELECT hselect, MTRCLASS *classes, long int classcount, HOBJ border,
                                 long int iscuthole, EVENTCALL fcallback, void *eventparam);
Страницы: Пред. 1 2 3 4
Читают тему (гостей: 1)



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

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