closePolygonParts

Закройте все звонки в многоугольнике с несколькими деталями

Синтаксис

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

Описание

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