exponenta event banner

closePolygonParts

Замкните все кольца в многоугольнике из нескольких частей

Синтаксис

[xdata, ydata] = closePolygonParts(xdata, ydata)
[lat, lon] = closePolygonParts(lat, lon, angleunits)

Описание

[xdata, ydata] = closePolygonParts(xdata, ydata) гарантирует, что каждое кольцо в многопарте (NaN-separated) многоугольник «замкнут» повторением начальной точки в конце каждого кольца, если начальная и конечная точки не идентичны. Векторы координат xdata и ydata должны совпадать по размеру и иметь идентичные NaN местоположения.

[lat, lon] = closePolygonParts(lat, lon, angleunits) работает с данными широты-долготы и учитывает перенос долготы с периодом 360 если angleunits является 'degrees' и 2*pi если angleunits является 'radians'. Чтобы кольцо считалось замкнутым, широты его первой и последней вершин должны точно совпадать, но их долготы должны совпадать только по модулю с соответствующим периодом. Такие кольца возвращаются без изменений.

Примеры

свернуть все

Создайте два вектора плоских координат.

xOpen = [1 0 2 NaN 0.5 0.5 1 1];
yOpen = [0 1 2 NaN 0.8 1 1 0.8];

Создайте замкнутый многоугольник из этих координат.

[xClosed, yClosed] = closePolygonParts(xOpen,yOpen)
xClosed = 1×10

    1.0000         0    2.0000    1.0000       NaN    0.5000    0.5000    1.0000    1.0000    0.5000

yClosed = 1×10

         0    1.0000    2.0000         0       NaN    0.8000    1.0000    1.0000    0.8000    0.8000

Отображение всех переменных.

whos
  Name         Size            Bytes  Class     Attributes

  xClosed      1x10               80  double              
  xOpen        1x8                64  double              
  yClosed      1x10               80  double              
  yOpen        1x8                64  double              

Загрузка данных береговой линии из MAT-файла.

load coastlines

Построение двухкомпонентного многоугольника на основе данных береговой линии. Первое кольцо - Антарктида. Долгота его первой вершины равна -180, а долгота его последней вершины - 180. Второе кольцо - небольшой островок, с которого удалена последняя вершина, реплика первой вершины.

[latparts, lonparts] = polysplit(coastlat, coastlon);
latparts{2}(end) = [];
lonparts{2}(end) = [];
latparts(3:end) = [];
lonparts(3:end) = [];
[lat, lon] = polyjoin(latparts, lonparts);

Изучите, как closePolygonParts обрабатывает два кольца. В обоих случаях первая и последняя вершины различаются. Однако Антарктика остается неизменной, в то время как небольшой остров закрыт.

[latClosed, lonClosed] = closePolygonParts(lat, lon, 'degrees');
[latpartsClosed, lonpartsClosed] = polysplit(latClosed, lonClosed);
lonpartsClosed{1}(end) - lonpartsClosed{1}(1)  % Result is 360
ans = 360
lonpartsClosed{2}(end) - lonpartsClosed{2}(1)  % Result is 0
ans = 0
Представлен в R2006a