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

Александр Горбунов (Все сообщения пользователя)

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

Страницы: Пред. 1 2 3 4 5 6 7 8 9 10 11 ... 38 След.
Площадь зоны видимости
 
Запросить цвет элемента растра (пикселя) можно функцией
 // Определение цвета точки растра по прямоугольным координатам точки
 // (в метрах)
 // hMap       - идентификатор открытой векторной карты
 // number     - номер файла в цепочке
 // x,y        - координаты точки в метрах в системе координат растра
 // color      - цвет элемента
 // При ошибке возвращает ноль

_MAPIMP long int _MAPAPI mapGetRstPlanePointColor(HMAP hMap, long int number,
                                                 COLORREF *color, double x, double y);
Площадь зоны видимости
 
mapapiold.h
Площадь зоны видимости
 
Можно при вызове построения зоны видимости
mclBuildZoneVisibilityUn(HMAP hmap, TASKPARMEX *parm, WCHAR * namersw, TBUILDZONEVISIBILITY *zonevisibility);
задавать разные имена файлов растрового изображения (параметр namersw), а затем вычислять площади для каждого
построенного растра.
                                       
// Вычисление площади построенной зоны видимости (для каждого построенного растра)

// Функция построения зоны видимости mclBuildZoneVisibility возвращает номер созданного растра в цепочке
TBUILDZONEVISIBILITY parm;
int number = mclBuildZoneVisibility(... parm);
if (number == 0)
 return 0;

// Размеры созданного растра в элементах (пикселах)
int rstHeight = mapGetRstHeight(hMap, number);
int rstWidth = mapGetRstWidth(hMap, number);

// Размер элемента растра в метрах на местности
double metinelem;
mapGetRstMeterInElement(hMap, number, &metinelem);

// Площадь элемента
double elemsquare = metinelem * metinelem;

// Площадь зоны
double zonesquare = 0;

for (int str = 0; str < rstHeight; str ++)
for (int col = 0; col < rstWidth; col ++)
{
  long int value;

  // Получаем значение элемента
  mapGetRstPoint(hMap, number, &value, str, col);

  if (value == parm.ColorRst)
    zonesquare += elemsquare;
}

// Получили площадь зоны "zonesquare"
Площадь зоны видимости
 
// Вычисление площади построенной зоны видимости

// Функция построения зоны видимости mclBuildZoneVisibility возвращает номер созданного растра в цепочке
TBUILDZONEVISIBILITY parm;
int number = mclBuildZoneVisibility(... parm);
if (number == 0)
 return 0;

// Размеры созданного растра в элементах (пикселах)
int rstHeight = mapGetRstHeight(hMap, number);
int rstWidth = mapGetRstWidth(hMap, number);

// Размер элемента растра в метрах на местности
double metinelem;
mapGetRstMeterInElement(hMap, number, &metinelem);

// Площадь элемента
double elemsquare = metinelem * metinelem;

// Площадь зоны
double zonesquare = 0;

for (int str = 0; str < rstHeight; str ++)
for (int col = 0; col < rstWidth; col ++)
{
  long int value;

  // Получаем значение элемента
  mapGetRstPoint(hMap, number, &value, str, col);

  if (value == parm.ColorRst)
    zonesquare += elemsquare;
}

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

int rstHeight = mapGetRstHeight(hMap, number); // number - номер растра построенной зоны в цепочке от mclBuildZoneVisibility
int rstWidth = mapGetRstWidth(hMap, number);

double metinelem;
mapGetRstMeterInElement(hMap, number, &metinelem);

double elemsquare = metinelem * metinelem;

double zonesquare = 0; // Площадь зоны

for (int str = 0; str < rstHeight; str ++)
 for (int col = 0; col < rstWidth; col ++)
 {
   long int value;
   mapGetRstPoint(hMap, number, &value, str, col);

   if (value == ColorRst)
     zonesquare += elemsquare;
 }
Как адекватно построить зоны обнаружения для нескольких точек
 
Задать цвет создаваемого растра можно параметром

int         ColorRst;         // Цвет растра

структуры TBUILDZONEVISIBILITY
Высоты на Азовском море
 
Можно попробовать задать параметр buildMtw.HeightSuper = 2 (заносить минимальную высоту),
чтобы высоты горизонталей не "портили" нулевую высоту моря.

 int HeightSuper;         // Флаг занесения высоты в элемент при создании матрицы
                          // высот MTW по векторной карте функцией mapBuildMtw и при попадании
                          // в элемент более одного объекта с абсолютной высотой :
                          //  0 - заносить среднюю высоту
                          //  1 - заносить максимальную высоту
                          //  2 - заносить минимальную высоту
Изменено: Александр Горбунов - 26.10.2023 17:33:59
Работа с TIN моделью через GIS API, Создание TIN моделеей и получения информации по построенной модели
 

Создание TIN-модели по векторной карте

Одним из вариантов представления цифровой модели рельефа местности является TIN (Triangulated Irregular Network). TIN-модель представляет собой многогранную поверхность – нерегулярную сеть треугольников, вершинами которых являются исходные опорные точки, а также точки метрики структурных линий и площадей заполнения.

Исходные 3D-точки задают общую форму моделируемой поверхности и являются основными данными для построения TIN-модели.

TIN-модель даёт возможность использовать переменную плотность исходных точек в зависимости от изменений рельефа, что позволяет создать эффективную и точную модель поверхности. В построении TIN-модели используются также и другие пространственные объекты, уточняющие структуру рельефа – хребты, линии водотока, водные поверхности с постоянной высотой. Пространственные 3D объекты могут иметь также и искусственное происхождение, например – автомагистрали.

Работа с TIN моделью через GIS API, Создание TIN моделеей и получения информации по построенной модели
 
Может быть мы обсуждаем немного разные понятия ?
Работа с TIN моделью через GIS API, Создание TIN моделеей и получения информации по построенной модели
 
Построение TIN по карте использует семантику "Абсолютная высота" или 3D-метрику объектов карты. Высоты из матрицы (mtw) были как-то перенесены в объекты карты ?  Если да, то как ?
Наш с Вами продолжительный диалог по поводу данных для построения TIN вызван Вашими конкретными вопросами про треугольники (запрос треугольника № 140).
Поэтому нам хотелось бы по возможности точно воспроизвести исходные данные для построения TIN. Иначе есть вероятность, что ошибку не получится повторить и исправить.
Страницы: Пред. 1 2 3 4 5 6 7 8 9 10 11 ... 38 След.



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

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