Функция создает бинарную матрицу качеств (т.е. значение элемента может быть равно 1 или 0). 1 будет, если расстояние от центра элемента до первой точки какого-то объекта из hselect меньше parm->Radius и существует прямая видимость на местности между этими двумя точками. Для определения видимости перед вызовом функции необходимо добавить матрицу высот на данную территорию.
Дмитрий Т написал: Какие объекты должны быть добавлены в HSIT для построения матрицы видимости? Какие требования к объектам (их метрикам)?
Параметр HSITE был оставлен для совместимости, он устаревший. Параметр HSITE надо задать равным HMAP.
Объекты карты не используются при построении матрицы видимости.
Как Вам написали выше, для определения видимости используется матрица высот. Она должна быть открыта в составе района работ (в HMAP).
Если надо выполнять построение зон видимости с учетом объектов векторной карты (их габаритов и высот), то они должны быть учтены в исходной матрице высот. К сожалению, пока только так. Функции, которая строила бы зоны видимости по рельефу и одновременно с учетом относительных высот объектов векторной карты, в настоящее время нет.
Может быть такой вариант. Пункты наблюдения создать на отдельной пользовательской карте *.sit. Добавить эту пользовательскую карту к основной (map) , запросить HSITE добавленного sit-а по номеру = 1 и подать HSITE вторым параметром mtrBuildVisibleMtq (чтобы не удалять пункты с основной карты, а просто закрыть HSITE).
Результат построения матрицы на картинке. Расстояние между двумя точками info1 info2 5000(5 км). Предельный радиус видимости 100000(100 км). Высота info1 3000(3 км). Высота по матрице в точке построения ~250 м. Как могла получиться такая маленькая зона видимости? Или что я делаю не так?
Пусть не учитываются относительные высоты объектов, берутся только координаты из метрик объектов. Даже с вершины горы не видно ничего! На изображении построенная матрица BUILDVISIBLE: Radius = 100000, ElemSize = 50;
Полагаю, mtrBuildVisibleMtq работает не правильно.