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