los2

Видимость угла обзора между двумя точками в ландшафте

Синтаксис

vis = los2(Z,R,lat1,lon1,lat2,lon2)
vis = los2(Z,R,lat1,lon1,lat2,lon2,alt1)
vis = los2(Z,R,lat1,lon1,lat2,lon2,alt1,alt2)
vis = los2(Z,R,lat1,lon1,lat2,lon2,alt1,alt2,alt1opt)
vis = los2(Z,R,lat1,lon1,lat2,lon2,alt1,alt2,alt1opt,alt2opt)
vis = los2(Z,R,lat1,lon1,lat2,lon2,alt1,alt2,alt1opt, ...
  alt2opt,actualradius)
vis = los2(Z,R,lat1,lon1,lat2,lon2,alt1,alt2,alt1opt, ...
  alt2opt,actualradius,effectiveradius)
[vis,visprofile,dist,H,lattrk,lontrk] = los2(...)
los2(...)

Описание

los2 вычисляет взаимную видимость между двумя точками на отображенной цифровой карте вертикального изменения. los2 использует текущий объект, если это - обычная сетка данных или первая обычная сетка данных, найденная на текущей системе координат. zdata сетки используется для профиля. Цветные данные используются в отсутствие данных в z. Две точки выбраны путем нажатия на карту. Результат отображен на новом рисунке. Маркеры указывают на видимые и затененные точки вдоль профиля. Профиль показывают в Декартовой системе координат с источником в местоположении наблюдателя. Отображенный z скоординируйте составляет вертикальное изменение ландшафта и искривление тела.

vis = los2(Z,R,lat1,lon1,lat2,lon2) вычисляет взаимную видимость между парами точек на цифровой карте вертикального изменения. Вертикальные изменения обеспечиваются как обычная сетка данных Z содержа вертикальные изменения в модулях метров. Две точки обеспечиваются как векторы из широт и долгот в модулях степеней. Получившаяся логическая переменная vis равно тому, когда две точки отображаются друг другу и нулю, когда угол обзора затенен ландшафтом. Если какой-либо из входных параметров пуст, los2 попытки собрать данные из текущей системы координат. С одним или несколькими выходными аргументами не создаются никакие фигуры, и только данные возвращены.

R может быть географический объект растровой привязки, вектор ссылки или матрица привязки. Если R географический объект растровой привязки, его RasterSize свойство должно быть сопоставимо с size(Z).

Если R вектор ссылки, это должно быть 1 3 с элементами:

[cells/degree northern_latitude_limit western_longitude_limit]

Если R матрица привязки, это должно быть 3 2 и преобразовать растровые индексы строки и столбца к или от географических координат согласно:

[lon lat] = [row col 1] * R

Если R матрица привязки, она должна задать (невращательный, нескошенный) отношение, в котором каждый столбец сетки данных падает вдоль меридиана и каждой строки падения вдоль параллели. Интерполяция ближайшего соседа используется по умолчанию. NaN возвращен для точек вне пределов сетки или для который lat или lon содержите NaN. Все углы находятся в модулях степеней.

vis = los2(Z,R,lat1,lon1,lat2,lon2,alt1) помещает первую точку на заданной высоте в метрах выше поверхности (на башне, например). Это эквивалентно помещению точки на башне. Если не использовано, точка 1 принята, чтобы быть на поверхности. alt1 может быть или скаляр или вектор с той же длиной как lat1, lon1, lat2, и lon2.

vis = los2(Z,R,lat1,lon1,lat2,lon2,alt1,alt2) места обе точки в заданные высоты в метрах выше поверхности. alt2 может быть или скаляр или вектор с той же длиной как lat1, lon1, lat2, и lon2. Если alt2 не использован, точка 2 принята, чтобы быть на поверхности.

vis = los2(Z,R,lat1,lon1,lat2,lon2,alt1,alt2,alt1opt) управляет интерпретацией alt1 как любой относительная высота (alt1opt равняется 'AGL', значение по умолчанию) или абсолютная высота (alt1opt равняется 'MSL'). Если высотной опцией является 'AGL', alt1 интерпретирован как высота точки 1 в метрах выше ландшафта (“над уровнем земли”). Если alt1opt 'MSL', alt1 интерпретирован как высота выше нуля (“средний уровень моря”).

vis = los2(Z,R,lat1,lon1,lat2,lon2,alt1,alt2,alt1opt,alt2opt) управляет интерпретацией ALT2.

vis = los2(Z,R,lat1,lon1,lat2,lon2,alt1,alt2,alt1opt, ...
  alt2opt,actualradius)
делает вычисление видимости на сфере с заданным радиусом. Если не использовано, радиус земли в метрах принят. Высоты, вертикальные изменения и радиус должны быть в тех же модулях. Эта форма вызова является самой полезной для расчетов на телах кроме земли.

vis = los2(Z,R,lat1,lon1,lat2,lon2,alt1,alt2,alt1opt, ...
  alt2opt,actualradius,effectiveradius)
принимает больший радиус для распространения угла обзора. Это может составлять искривление пути прохождения сигнала из-за преломления в атмосфере. Например, радио-распространение в атмосфере обычно обрабатывается как распространение прямой линии на сфере с 4/3 радиус земли. В этом случае последними двумя аргументами был бы R_e и 4/3*R_e, где R_e радиус земли. Используйте Inf как эффективный радиус для плоских наземных вычислений видимости. Высоты, вертикальные изменения и радиусы должны быть в тех же модулях.

[vis,visprofile,dist,H,lattrk,lontrk] = los2(...), для скалярных входных параметров (lat1, lon1, и т.д.), возвращает векторы из точек вдоль пути между двумя точками. visprofile логический вектор, содержащий верный (logical(1)) где промежуточные точки отображаются и являются ложными (logical(0)) в противном случае. dist расстояние вдоль пути (в метрах или модулях радиуса). H содержит профиль ландшафта относительно вертикальной данной величины вдоль пути. lattrk и lontrk широты и долготы точек вдоль пути. Для векторных входных параметров los2 возвращает visprofiledist , H, lattrk, и lontrk как массивы ячеек, с одной ячейкой на элемент lat1,lon1, и т.д.

los2(...), без выходных аргументов, отображает профиль видимости между двумя точками на новом рисунке.

Примеры

свернуть все

Определите угол обзора для двух точек. Отобразите профиль видимости в 2D и 3-D.

Импортируйте данные о ландшафте для области вокруг Южного Пика Валуна в Колорадо. Подготовьте данные к анализу путем определения выходного типа как 'double'.

[Z,R] = readgeoraster("n39_w106_3arc_v2.dt1","OutputType","double");

Задайте координаты Южного Пика Валуна и соседней точки. Определите, отображается ли соседняя точка от местоположения на 100 метров выше пика путем присвоения результата los2 к переменной.

latPeak = 39.95384;
lonPeak = -105.29916;
latNearby = 39.96955;
lonNearby = -105.29867;
vis = los2(Z,R,latPeak,lonPeak,latNearby,lonNearby,100)
vis = logical
   0

Значение vis 0, что означает, что точка не отображается от пика.

Чтобы отобразить профиль видимости в 2D, вызовите los2 без выходного аргумента.

los2(Z,R,latPeak,lonPeak,latNearby,lonNearby,100)

Чтобы отобразить профиль видимости в 3-D, возвратите информацию о видимости о точках между координатами, которые вы задали. Выходные параметры lattrk и lontrk содержите координаты точек. Выход visprofile содержит логические значения, указывающие, отображаются ли точки.

[~,visprofile,~,~,lattrk,lontrk] = los2(Z,R,latPeak,lonPeak,latNearby,lonNearby,100);

Создайте географический земной шар, который включает пользовательский ландшафт для области вокруг Южного Пика Валуна.

addCustomTerrain("southboulder","n39_w106_3arc_v2.dt1")
uif = uifigure;
g = geoglobe(uif,"Terrain","southboulder");

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

hold(g,"on")
geoplot3(g,[latPeak latNearby],[lonPeak lonNearby],[100 0],"m","LineWidth",2, ...
    "HeightReference","terrain")

Постройте промежуточные точки. Используйте пурпурные маркеры для точек, которые не являются видимыми и зелеными маркерами для точек, которые отображаются. Постройте каждое значение на 10 метров выше ландшафта, таким образом, маркеры не затенены ландшафтом.

geoplot3(g,lattrk(~visprofile),lontrk(~visprofile),10, ...
    "mo","MarkerSize",2,"LineWidth",2,"HeightReference","terrain")
geoplot3(g,lattrk(visprofile),lontrk(visprofile),10,"go", ...
    "MarkerSize",2,"LineWidth",2,"HeightReference","terrain")

Настройте представление путем установки положения камеры, тангажа, крена и заголовка.

campos(g,39.9519,-105.3039,2.9424e+03)
campitch(g,-31.7850)
camroll(g,0.3603)
camheading(g,36.5618)

Закройте фигуру, содержащую географический земной шар, и удалите пользовательский ландшафт.

close(uif)
removeCustomTerrain("southboulder")

Найдите угол возвышения точки 90 степенями от наблюдателя, принимающего, что наблюдатель и цель оба на 1 000 км выше Земли.

lat1 = 0; 
lon1 = 0; 
alt1 = 1000*1000;
lat2 = 0; 
lon2 = 90; 
alt2 = 1000*1000;
[az, elev, r] = geodetic2aer(lat2,lon2,alt2,lat1,lon1,alt1,referenceEllipsoid('grs 80'))
az = 90
elev = -45
r = 1.0434e+07

Визуально проверяйте результат с помощью los2 функция угла обзора. Создайте сетку данных нулей, чтобы представлять поверхность Земли. los2 функция без выходных аргументов создает фигуру, отображающую геометрию.

Z = zeros(181,361);
R = georefpostings([-90 90],[-180 180], size(Z))
R = 
  GeographicPostingsReference with properties:

              LatitudeLimits: [-90 90]
             LongitudeLimits: [-180 180]
                  RasterSize: [181 361]
        RasterInterpretation: 'postings'
            ColumnsStartFrom: 'south'
               RowsStartFrom: 'west'
     SampleSpacingInLatitude: 1
    SampleSpacingInLongitude: 1
      RasterExtentInLatitude: 180
     RasterExtentInLongitude: 360
            XIntrinsicLimits: [1 361]
            YIntrinsicLimits: [1 181]
        CoordinateSystemType: 'geographic'
               GeographicCRS: []
                   AngleUnit: 'degree'


los2(Z,R,lat1,lon1,lat2,lon2,alt1,alt1); 

Figure contains an axes. The axes contains 5 objects of type line. These objects represent Terrain, Line of Sight, Visible, Obscured, Observer.

Смотрите также

|

Представлено до R2006a