В этом примере показано, как обрезать векторы для формирования линий и многоугольников с помощью maptriml
и maptrimp
функций. Нет ничего необычного в том, что векторные данные выходят за пределы представляющего интерес географической области. Например, вы можете иметь данные о береговой линии для всего мира, но заинтересованы в отображении только Австралии. В этой и других ситуациях можно хотеть исключить ненужные данные из рабочей области и из вычислений в порядок сохранения памяти или ускорения обработки и отображения. Линия данные и закрашенная фигура данные необходимо обрезать по-разному. Можно обрезать данные о линиях путем простого удаления точек за пределами необходимой области путем обрезки линий на карте системы координат или в какую-либо другую определенную область. Данные патча требуют более сложного метода, чтобы гарантировать, что объекты закрашенной фигуры правильно сформированы. Если вы хотите обрабатывать векторы как данные о линиях, maptriml
функция возвращает переменные, содержащие только те точки, которые находятся в заданной области. Если вместо этого необходимо сохранить формат многоугольника, используйте maptrimp
функция. Однако имейте в виду, что данные с обрезкой патчей обычно большие и более дорогие для вычисления.
Примечание. При рисовании карт функция отображения Mapping Toolbox автоматически обрезает векторные геоданные по области, заданной пределами системы координат (FLatLimit
и FLonLimit
map осей свойств) для азимутальных проекций или для кадра или карты пределов (MapLatLimit
и MapLonLimit
map axes properties) для неазимутальных проекций. Обрезка выполняется внутренне в стандартной программе отображения, сохраняя исходные данные в целости.
Загрузите coastlines
MAT-файл. Этот файл содержит данные для всего мира.
load coastlines
Определите необходимую область с центром на Австралии.
latlim = [-50 0]; lonlim = [105 160];
Использование maptriml
чтобы удалить все данные линии за пределами этих пределов, создавая векторы линии.
[linelat,linelon] = maptriml(coastlat,coastlon,latlim,lonlim);
Использование maptrimp
чтобы удалить все данные многоугольников за эти пределы, создавая многоугольники.
[polylat,polylon] = maptrimp(coastlat,coastlon,latlim,lonlim);
Исследуйте переменные, чтобы увидеть, сколько данных было уменьшено. Обрезанные данные на 10% больше исходного набора данных.
whos
Name Size Bytes Class Attributes coastlat 9865x1 78920 double coastlon 9865x1 78920 double latlim 1x2 16 double linelat 977x1 7816 double linelon 977x1 7816 double lonlim 1x2 16 double polylat 961x1 7688 double polylon 961x1 7688 double
Постройте график обрезанных векторов закрашенной фигуры с помощью проекции Миллера.
axesm('MapProjection', 'miller', 'Frame', 'on',... 'FlatLimit', latlim, 'FlonLimit', lonlim) patchesm(polylat, polylon, 'c')
Постройте график обрезанных векторов линий, чтобы увидеть, что они соответствуют закрашенным фигурам.
plotm(linelat, linelon, 'm')