exponenta event banner

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 является логическим вектором, содержащим значение true (logical(1)), где промежуточные точки являются видимыми и ложными (logical(0)) в противном случае. dist - расстояние вдоль траектории (в метрах или единицах радиуса). H содержит профиль рельефа относительно вертикального опорного элемента вдоль траектории. lattrk и lontrk - широты и долготы точек вдоль траектории. Для векторных входов los2 прибыль visprofile, dist, H, lattrk, и lontrk в виде массивов ячеек, с одной ячейкой на элемент lat1,lon1и т.д.

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

Примеры

свернуть все

Определите линию визирования для двух точек. Отображение профиля видимости в 2-D и 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, что означает, что точка не видна с пика.

Для отображения профиля видимости в 2-D вызовите 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 градусов от наблюдателя, предполагая, что наблюдатель и цель находятся на высоте 1000 км над Землей.

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