viewshed

Области, видимые от точки на сетке вертикального изменения ландшафта

Синтаксис

[vis,R] = viewshed(Z,R,lat1,lon1)
viewshed(Z,R,lat1,lon1,observerAltitude)
viewshed(Z,R,lat1,lon1,observerAltitude,targetAltitude)
viewshed(Z,R,lat1,lon1,observerAltitude,targetAltitude, ...
  observerAltitudeOption)
viewshed(Z,R,lat1,lon1,observerAltitude,targetAltitude, ...
  observerAltidueOption,targetAltitudeOption)
viewshed(Z,R,lat1,lon1,observerAltitude,targetAltitude, ...
  observerAltitudeOption,targetAltitudeOption,actualRadius)
viewshed(Z,R,lat1,lon1,observerAltitude,targetAltitude, ...
  observerAltitudeOption,targetAltitudeOption, ...
  actualRadius,effectiveRadius)

Описание

[vis,R] = viewshed(Z,R,lat1,lon1) вычисляет области, видимые из точки на цифровой сетке вертикального изменения. Z обычная сетка данных, содержащая вертикальные изменения в модулях метров. Местоположение наблюдателя обеспечивается как скалярная широта и долгота в модулях степеней. Сетка видимости vis содержит 1s в поверхностных районах, видимых от местоположения наблюдателя и 0s, где угол обзора затенен ландшафтом. 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. Все углы находятся в модулях степеней.

viewshed(Z,R,lat1,lon1,observerAltitude) размещает наблюдателя на заданной высоте в метрах выше поверхности. Это эквивалентно помещению наблюдателя на башне. Если не использовано, наблюдатель принят, чтобы быть на поверхности.

viewshed(Z,R,lat1,lon1,observerAltitude,targetAltitude) проверки на видимость цели указывают заданное расстояние выше ландшафта. Это эквивалентно помещению целевых точек на башнях, которые не затрудняют представление. Если не использовано, целевые точки приняты, чтобы быть на поверхности.

viewshed(Z,R,lat1,lon1,observerAltitude,targetAltitude, ...
  observerAltitudeOption)
средства управления, является ли наблюдатель на относительной или абсолютной высоте. Если observerAltitudeOption 'AGL', затем observerAltitude исчисляется в метрах над уровнем земли. Если observerAltitudeOption 'MSL', observerAltitude интерпретирован как высота выше нуля или средний уровень моря. Если не использовано, 'AGL' принят.

viewshed(Z,R,lat1,lon1,observerAltitude,targetAltitude, ...
  observerAltidueOption,targetAltitudeOption)
средства управления, являются ли целевые точки на относительной или абсолютной высоте. Если целевой высотной опцией является 'AGL', targetAltitude исчисляется в метрах над уровнем земли. Если targetAltitudeOption 'MSL', targetAltitude интерпретирован как высота выше нуля или средний уровень моря. Если не использовано, 'AGL' принят.

viewshed(Z,R,lat1,lon1,observerAltitude,targetAltitude, ...
  observerAltitudeOption,targetAltitudeOption,actualRadius)
делает вычисление видимости на сфере с заданным радиусом. Если не использовано, радиус земли в метрах принят. Высоты, вертикальные изменения и радиус должны быть в тех же модулях. Эта форма вызова является самой полезной для расчетов на телах кроме Земли.

viewshed(Z,R,lat1,lon1,observerAltitude,targetAltitude, ...
  observerAltitudeOption,targetAltitudeOption, ...
  actualRadius,effectiveRadius)
принимает больший радиус для распространения угла обзора. Это может составлять искривление пути прохождения сигнала из-за преломления в атмосфере. Например, радио-распространение в атмосфере обычно обрабатывается как распространение прямой линии на сфере с 4/3 радиус Земли. В этом случае последними двумя аргументами был бы R_e и 4/3*R_e, где R_e радиус земли. Используйте Inf для плоской Земли viewshed вычисления. Высоты, вертикальные изменения и радиусы должны быть в тех же модулях.

Примеры

свернуть все

Вычислите видимость для точки на карте peaks. Добавьте подробную информацию для вычисления угла обзора между двумя точками от los2 .

Создайте пиковую карту и постройте видимость.

Z = 500*peaks(100);
refvec = [1000 0 0];
[lat1,lon1,lat2,lon2] = deal(-0.027,0.05,-0.093,0.042);
     
[visgrid,visleg] = viewshed(Z,refvec,lat1,lon1,100);
[vis,visprofile,dist,zi,lattrk,lontrk] ...
   = los2(Z,refvec,lat1,lon1,lat2,lon2,100);

axesm('globe','geoid',earthRadius('meters'))
meshm(visgrid,visleg,size(Z),Z); 
axis tight
camposm(-10,-10,1e6)
camupm(0,0)
colormap(flipud(summer(2))) 
brighten(0.75)
shading interp 
camlight
h = lcolorbar({'obscured','visible'});
h.Position = [.875 .45 .02 .1];

plot3m(lattrk([1;end]),lontrk([1; end]), ...
   zi([1; end])+[100; 0],'r','linewidth',2)
plotm(lattrk(~visprofile),lontrk(~visprofile), ...
   zi(~visprofile),'r.','markersize',10)
plotm(lattrk(visprofile),lontrk(visprofile), ...
   zi(visprofile),'g.','markersize',10)

Вычислите площадь поверхности, видимую радаром от самолета, летящего на 3 000 метров над Желтым морем. Примите, что распространение радиоволны в атмосфере может быть смоделировано как прямые линии на 4/3 Земле радиуса. Этот пример также вычисляет область, видимую к плоскости выше его на уровне 5 000 метров.

Загрузите данные о вертикальном изменении и географический объект ссылки ячеек для корейского полуострова, вычислите viewshed и отобразите его.

load korea5c
korea5c(korea5c<0) = -1;
figure
worldmap(korea5c,korea5cR)
setm(gca,'geoid',[1 0])
da = daspect;
pba = pbaspect;
da(3) = 7.5*pba(3)/da(3);
daspect(da);
demcmap(korea5c)
camlight(90,5);
camlight(0,5);
lighting gouraud
material([0.25 0.8 0])
lat = 34.0931; lon = 125.6578; 
altobs = 3000; alttarg = 0;
plotm(lat,lon,'wo')
Re = earthRadius('meters');
[vmap,vmapl] = viewshed( ...
   korea5c,korea5cR,lat,lon,altobs,alttarg, ...
   'MSL','AGL',Re,4/3*Re);
meshm(vmap,vmapl,size(korea5c),korea5c)

Отобразите видимые области, столь же синие и затененные области как красный, и драпируйте цвета видимости на карте вертикального изменения, с помощью освещающий, чтобы произвести поверхностную топографию. Радар самолета видит определенный радиус на поверхности океана, но отмечает, как некоторые океанские области затенены островом Чеджу - Делают. Также некоторые горные долины ближе, чем океанский горизонт затенены, в то время как некоторые горные верхние части еще дальше отображаются.

caxis auto; colormap([1 0 0; 0 0 1])
lighting gouraud; 
axis off

Теперь вычислите область, что радарная плоскость, летящая на высоте 3 000 метров, может иметь угол обзора к другому самолету, летящему выше ее на уровне 5 000 метров. Отметьте, как область намного больше, но что некоторые ребра области уменьшаются затенением из Чеджу - Делают и горы на корейском полуострове.

[vmap,vmapl] = viewshed(korea5c,korea5cR,lat,lon,3000,5000, ...
               'MSL','MSL',Re,4/3*Re);
clmo surface
meshm(vmap,vmapl,size(korea5c),korea5c)
lighting gouraud

Советы

Наблюдатель должен быть расположен в пределах долготы широты сетки вертикального изменения. Если наблюдатель расположен вне сетки, существует недостаточная информация, чтобы вычислить viewshed. В этом случае viewshed выдает предупреждение и устанавливает все элементы vis обнулять.

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

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