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;
[lati, loni] = bufferm(latr, lonr, 0.3*bufwidth, 'in');
geoshow(lati, loni, 'DisplayType', 'polygon', ...
   'FaceColor', 'magenta')
title('Interior Buffer Zone')

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

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');

Советы

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

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

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