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

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

Поиск  Пользователи  Правила  Войти
Форум » Настольные приложения » GIS ToolKit, GIS ToolKit Active, ГИС Конструктор для Windows
Страницы: Пред. 1 2 3 4 След.
RSS
Построение зон видимости
 
Добый день. При заполнении структуры TBUILDZONEVISIBILITY инициализирую параметр DeltaObservation. И чем он выше тем меньше точек видится из исходной точки что наверное неверно. как объяснить этот феномен?
 
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 =10;
   visParm.StyleRst = 1;
   visParm.ColorRst = col; //0xFFFF00;



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;
   visParm.StyleRst = 1;
   visParm.ColorRst = col; //0xFFFF00;


При 100м точек видимости меньше
 
visParm.DeltaObservation =-10;  А при задании отрицательных значаний все точки видятся. Код как в примере zone_visibility. Карта взята Ногинска с матрицей высот. В чем ошибка использования?
 
Добрый день.
Разаработка ведется в ОС 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);
   }

}
 

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

Проверили работу функции mapVisibilityZoneUn на текущей версии ГИС Конструктор 14 - на карте Ногинска из состава инсталляции (/usr/share/gisdesigner/examples/Data/Планы городов/Noginsk).

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

При увеличении значения параметра DeltaObservation наблюдатель «поднимается» над точкой местности, соответственно, обзор становится больше, а количество заштрихованных точек в построенной зоне видимости — меньше. При установке в параметре DeltaObservation отрицательных значений область видимости полностью заштрихована, что означает полное отсутствие видимости.

Для инвертирования штриховки области видимости можно установить в параметр Inversion структуры TBUILDZONEVISIBILITY значение 1.

 
Цитата
Владислав Костылев написал:
Разаработка ведется в ОС Astra Linux 64 bit, gisdesigner12.3.1при установке гисдизайнера из deb пакета пример находится по адресу /usr/share/gisdesigner/examples/zone_visibleвот фрагмент кода
Параметр DeltaObservation - это приращение для всех наблюдаемых из центра сектора точек (то есть проверяемых точек рельефа сектора).
Если мы увеличиваем DeltaObservation, то поверхность вокруг центра сектора PointCenter как бы "поднимается" на величину увеличения. Поэтому точки поверхности становятся не видны.

Если задаём отрицательное значение DeltaObservation, то поверхность вокруг центра как бы "опускается"
и становится больше видимых точек рельефа.

Параметр DeltaHight (Высота наблюдения) - это приращение для центра сектора PointCenter.
Другими словами это высота над поверхностью, с которой
мы смотрим вокруг. Например, DeltaHight = 10 метров (смотрим с 3-его этажа дома)
DeltaHight = 30 метров (смотрим с 9-го этажа дома),
DeltaHight = 2 метра (смотрим с высоты человеческого роста).
 
Добрый день. Спасибо за комменты. Не подскажете еще про  функцию обратную  mapAppendAnyData. Требуется удалить слой и нужна к примеру mapDeleteAnyDatа. Кто может выполнять рольэтой функции в mapapi?
 
Здравствуйте!
Для закрытия слоя карты можно воспользоваться функциями, названия которых начинаются с "mapClose": mapCloseSiteForMap (sitapi.h), mapCloseMtrForMap (mtrapi.h), mapCloseRstForMap (rstapi.h) и т.п.
 
Код
  // Закрыть пользовательскую карту в заданном районе работ
  // hMap - идентификатор открытой карты
  // hSite - идентификатор открытой пользовательской карты
  // Если hSite == 0, закрываются все данные обстановки
  // При ошибке возвращает ноль


_MAPIMP long int _MAPAPI mapCloseSiteForMap(HMAP hMap, HSITE hSite);


  // Закрыть матричные данные в заданном районе работ
  // hMap -  идентификатор открытых данных
  // number - номер матрицы в списке открытых матриц
  // Если number == 0, закрываются все матричные данные
  // При ошибке возвращает ноль


_MAPIMP long int _MAPAPI mapCloseMtrForMap(HMAP hMap, long int number);



  // Закрыть растровые данные в заданном районе работ
  // hMap   - идентификатор открытых данных
  // number - номер растрового файла в цепочке
  // Если number равен 0, закрываются все растровые данные
  // При ошибке возвращает ноль


_MAPIMP long int _MAPAPI mapCloseRstForMap(HMAP hMap, long int number);
 
Доброе  утро. Подскажите пожалуйста про параметр  VisionRst в  структуре TBUILDZONEVISIBILITY. При уловии что я строю зону видимости с помощью mapVisibilityZoneUp и она мне дает видимость из одной точки те один растровый файл. Про какое пересечение идет речь в maptype.h если строится зона из одной точки а не из нескольких.
 
Цитата
Владислав Костылев написал:
Доброе  утро. Подскажите пожалуйста про параметр  VisionRst в  структуре TBUILDZONEVISIBILITY. При уловии что я строю зону видимости с помощью mapVisibilityZoneUp и она мне дает видимость из одной точки те один растровый файл. Про какое пересечение идет речь в maptype.h если строится зона из одной точки а не из нескольких
Добрый день!
На одной растровой карте можно построить несколько секторов.
Для областей пересечения секторов существуют режимы:
- видимость со всех точек VisionRst = 0;
- видимость, хотя бы, с одной точки VisionRst = 1.
В режиме Видимость со всех точек видимыми (прозрачными) в зоне пересечения секторов считаются участки, видимые со всех точек наблюдения.
В режиме Видимость хотя бы с одной точки видимыми (прозрачными) считаются участки в зоне пересечения секторов, видимые, хотя бы, с одной точки наблюдения.
Страницы: Пред. 1 2 3 4 След.
Читают тему (гостей: 1)



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

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