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 возвращает visprofile, dist, H, lattrk и lontrk как массивы ячеек, с одной ячейкой на элемент lat1,lon1, и т.д.

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

Примеры

Найдите угол повышения степеней точки 90 от наблюдателя

Найдите угол повышения точки 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'
                   AngleUnit: 'degree'


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

Определите угол обзора

Z = 500*peaks(100);
refvec = [1000 0 0];
[lat1, lon1, lat2, lon2] = deal(-0.027, 0.05, -0.093, 0.042);
los2(Z,refvec,lat1,lon1,lat2,lon2,100);

figure;
axesm('globe','geoid',earthRadius('meters'))
meshm(Z, refvec, size(Z), Z); axis tight
camposm(-10,-10,1e6); camupm(0,0)
demcmap('inc', Z, 1000); shading interp; camlight
[vis,visprofile,dist,h,lattrk,lontrk] = ... 
los2(Z,refvec,lat1,lon1,lat2,lon2,100);
plot3m(lattrk([1;end]),lontrk([1; end]),...
h([1; end])+[100; 0],'r','linewidth',2)
plotm(lattrk(~visprofile),lontrk(~visprofile),...
h(~visprofile),'r.','markersize',10)
plotm(lattrk(visprofile),lontrk(visprofile),...
h(visprofile),'g.','markersize',10)

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

|

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