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

Владислав Костылев (Все сообщения пользователя)

Поиск  Пользователи  Правила  Войти
Форум » Пользователи » Владислав Костылев
Выбрать дату в календареВыбрать дату в календаре

Страницы: 1 2 3 4 5 6 След.
Построение зон видимости
 
[QUOTE]Для построения зон видимости нужно предварительно по векторной карте
создать матрицу высот с суммарным типом рельефа - функцией 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);
}[/QUOTE]
Спасибо. Код определенно учел некоторые параметры но... Высота леса получилась фиксрованная и не соотетствует картинке на карте. Высота зданий не увидел что учитывается. Проверял на гиспанораме 14 карта г. Луга. К сожалению в ваших бесплатных картах Ногинска и Подольска есть карта высот но нет самих лесов  и не видно этого приращения. На видео что я присылаю показан характерный переход учета растительности см. курсор и внизу скачек высот. Полагаю что скачек высот неправильный.

[URL=https://disk.yandex.ru/i/uUwcQxKg5qPnrw]https://disk.yandex.ru/i/uUwcQxKg5qPnrw[/URL]
Построение зон видимости
 
[QUOTE]Мы такую ситуацию повторить не можем.
Проверяем на библиотеках версии 14.
Поделитесь данными - проверим.[/QUOTE]
проверил на ногинске
1. координаты точки наблюдения 6183027,81   7461339,95
2. дистанция 18 км высота 10м азимут 0

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

[IMG]https://i.postimg.cc/j5ZRChNP/noginsk-0.png[/IMG]

VisionRst=1

[IMG]https://i.postimg.cc/nrrpmQY5/noginsk-1.png[/IMG]


3. проверено panorama 12
Изменено: Денис Вицко - 17.01.2023 10:13:04
Построение зон видимости
 
[QUOTE]Тип матрицы = Суммарные высоты" задаётся параметром:
struct BUILDMTW
int ReliefType; // Тип матрицы высот MTW
// 0 - абсолютные высоты,
// 1 - суммарные высоты (абсолютные + относительные),
// 2 - относительные высоты
Этот параметр задаётся при создании матрицы высот.
Создание матрицы выполняет функция mapBuildMtwUn[/QUOTE]
По всей видимости задание одного этого параметра не является достаточным условием для функции 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 или не будет задаваться полностью?
     
Построение зон видимости
 
[QUOTE]Добрый день!
Для построения зон видимости, матрицу высот нужно строить в режиме "Тип матрицы = Суммарные высоте". При этом относительные высоты объектов с семантикой "относительная высота" (растительность, кварталы, здания и т.п.) будут учитываться при построении матрицы. Относительные высоты этих объектов добавляются к рельефу, построенному по абсолютным высотам (по объектам с семантикой "абсолютная высота").[/QUOTE]
я открываю матрицу высот функцией mapAppendAnyData. Какие параметры надо задавать чтобы получить [QUOTE]Тип матрицы = Суммарные высоте
[/QUOTE]
Построение зон видимости
 
И еще один вопрос кроме предыдущего вопроса. Учитывается ли высота леса в задаче видимости. Если да то как. В наших задачах требуется кроме рельефа поверхности учитывать высоту леса или зданий.
Построение зон видимости
 
[URL=https://disk.yandex.ru/i/m7zh8aY14-Jttg]https://disk.yandex.ru/i/m7zh8aY14-Jttg[/URL] и [URL=https://disk.yandex.ru/i/ZVJuOlgmb7Zhqg]https://disk.yandex.ru/i/ZVJuOlgmb7Zhqg[/URL] исли картинки не подгружаются
Построение зон видимости
 
Добрый день. Вопрос заключался не в этом. Если я использую один сектор то при инициализации этого параметра я получаю разные значения полей
те TBUILDZONEVISIBILITY.VisionRst=0; и TBUILDZONEVISIBILITY.VisionRst=1;
[IMG]https://i.postimg.cc/R06GcPz6/2022-11-17-083532975.png[/IMG]
[IMG]https://i.postimg.cc/0ygNkj2T/2022-11-17-083656434.png[/IMG]

для рисунка 1 и 2 соответственно хотя точка наблюдения осталась одно и в первом и во втором случае

Изменено: Денис Вицко - 17.11.2022 08:38:38 (исправил вставку картинок)
Построение зон видимости
 
Доброе  утро. Подскажите пожалуйста про параметр  VisionRst в  структуре TBUILDZONEVISIBILITY. При уловии что я строю зону видимости с помощью mapVisibilityZoneUp и она мне дает видимость из одной точки те один растровый файл. Про какое пересечение идет речь в maptype.h если строится зона из одной точки а не из нескольких.
Построение зон видимости
 
Добрый день. Спасибо за комменты. Не подскажете еще про  функцию обратную  mapAppendAnyData. Требуется удалить слой и нужна к примеру mapDeleteAnyDatа. Кто может выполнять рольэтой функции в mapapi?
Построение зон видимости
 
Добрый день.
Разаработка ведется в ОС Astra Linux 64 bit, gisdesigner12.3.1
при установке гисдизайнера из deb пакета пример находится по адресу /usr/share/gisdesigner/examples/zone_visible
вот фрагмент кода

void MainForm1::setZone(HMAP hMap, int num, double xP, double yP, double angle)
{
   QString rswName = QString::number(num)+ QString("_.rsw");
   int col = 0xFF0000;

   switch (num) {
   case 1:
       col=0XFF0000;
       break;

   case 2:
       col=0xFFFF00;
       break;

   case 3:
       col=0x0000FF;
       break;

   default:
       break;
   }

   DOUBLEPOINT visPoint;
   visPoint.x = xP;
   visPoint.y = yP;

   TBUILDZONEVISIBILITY visParm;
   memset(&visParm, 0, sizeof(visParm));
   visParm.PointCenter = visPoint;
   visParm.RadiusMeter = 10000;
   visParm.Azimuth = angle/180.0*M_PI;
   visParm.Angle = M_PI_4;
   visParm.DeltaObservation =100;  //изменяем этот Параметр от минимального -10  до 100 !!!!!!!!!! поведение зоны видимости ???????

   visParm.StyleRst = 1;
   visParm.ColorRst = col; //0xFFFF00;

   long int res = mapVisibilityZoneUn(hMap, rswName.utf16(), &visParm);
   if (res == 0)
       return;

   if (res != 0)
   {
     mapAppendAnyData(hMap, rswName.utf16());
     mapSetRstViewOrder(hMap, num, 1);  // See before map
     mapSetRstView(hMap, num, 3);
   }

}
Страницы: 1 2 3 4 5 6 След.



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

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