exponenta event banner

bufferm

Буферные зоны для многоугольников широты и долготы

Синтаксис

[latb,lonb] = bufferm(lat,lon,bufwidth)
[latb,lonb] = bufferm(lat,lon,bufwidth,direction)
[latb,lonb] = bufferm(lat,lon,bufwidth,direction,npts)

Описание

[latb,lonb] = bufferm(lat,lon,bufwidth) вычисляет буферную зону вокруг линии или многоугольника. Если векторы lat и lon, в единицах градусов, определите линию, затем latb и lonb определите многоугольник, содержащий все точки, находящиеся на определенном расстоянии, bufwidth, линии. bufwidth - скаляр, заданный в градусах дуги вдоль поверхности. Если векторы lat и lon определить многоугольник, затем latb и lonb определить область, которая содержит все точки снаружи многоугольника, которые находятся внутри bufwidth многоугольника.

[latb,lonb] = bufferm(lat,lon,bufwidth,direction) где direction указывает, находится ли буферная зона внутри ('in') или снаружи ('out') многоугольника. Третий вариант, 'outPlusInterior', возвращает объединение внешнего буфера (как будет вычислено с помощью 'out') с внутренней частью многоугольника. Если вы не поставляете direction значение, bufferm использование 'out' по умолчанию и возвращает буферную зону вне полигона. Если вы поставляете 'in' в качестве direction значение, bufferm возвращает буферную зону внутри полигона. Если вокруг линии находится буферная зона, 'out' является единственным допустимым вариантом.

[latb,lonb] = bufferm(lat,lon,bufwidth,direction,npts) управляет количеством точек, используемых для построения окружностей вокруг вершин многоугольника. Большее количество точек создает более плавные буферы, но требует больше времени. Если npts опущено, используется 13 точек на круг.

Примеры

свернуть все

Отображение упрощенной версии пяти полигонов, представляющих Великие озера.

load conus
tol = 0.05;
[latr, lonr] = reducem(gtlakelat, gtlakelon, tol);
figure('Color','w')
ax = usamap({'MN','NY'});
setm(ax,'MLabelLocation',5)
geoshow(latr, lonr, 'DisplayType', 'polygon', ...
   'FaceColor', 'blue')
title('Great Lakes')

Задайте ширину буфера и отобразите буферную зону за пределами озер.

figure;
bufwidth = 1;  
[latb, lonb] = bufferm(latr, lonr, bufwidth);
geoshow(latb, lonb, 'DisplayType', 'polygon', ...
   'FaceColor', 'yellow')
title('Exterior Buffer Zone')

Figure contains an axes. The axes with title Exterior Buffer Zone contains an object of type patch.

Отображение буферной зоны внутри полигона.

figure;
[lati, loni] = bufferm(latr, lonr, 0.3*bufwidth, 'in');
geoshow(lati, loni, 'DisplayType', 'polygon', ...
   'FaceColor', 'magenta')
title('Interior Buffer Zone')

Figure contains an axes. The axes with title Interior Buffer Zone contains an object of type patch.

Отображение Великих озер с внутренними и внешними буферными зонами на фоне соседних государств.

figure('Color','w')
ax = usamap({'MN','NY'});
setm(ax,'MLabelLocation',5)
geoshow(latb, lonb, 'DisplayType', 'polygon', 'FaceColor', 'yellow')
geoshow(latr, lonr, 'DisplayType', 'polygon', 'FaceColor', 'blue')
geoshow(lati, loni, 'DisplayType', 'polygon', 'FaceColor', 'magenta')
geoshow(uslat, uslon)
geoshow(statelat, statelon)
title('Great Lakes and Buffer Zones with Neighboring States')

Используйте 'outPlusInterior' вариант.

bufWidth = 0.5; 
[latz, lonz] = bufferm(latr, lonr, bufWidth,'outPlusInterior'); 
figure 
geoshow(latz,lonz,'DisplayType','polygon','FaceColor','yellow') 
title('Exterior Buffer Zone including Polygon Interior');

Figure contains an axes. The axes with title Exterior Buffer Zone including Polygon Interior contains an object of type patch.

Совет

Закрыть все полигоны перед их обработкой с помощью bufferm. Если многоугольник не замкнут, bufferm предполагает, что это линия.

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