Видимость угла обзора между двумя точками в ландшафте
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,
...
принимает больший радиус для распространения угла обзора. Это может составлять искривление пути прохождения сигнала из-за преломления в атмосфере. Например, радио-распространение в атмосфере обычно обрабатывается как распространение прямой линии на сфере с 4/3 радиус земли. В этом случае последними двумя аргументами был бы
alt2opt,actualradius,effectiveradius)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 степенями от наблюдателя, принимающего, что наблюдатель и цель оба на 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);
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)