Этот пример показывает, как обрезать векторы, чтобы сформировать строки и полигоны с помощью функций maptrimp
и maptriml
. Для векторных данных весьма обычно расширить вне географической области в настоящее время интереса. Например, вы можете иметь данные о береговой линии для всего мира, но интересуетесь отображением Австралии только. В этом и других ситуациях, вы можете хотеть устранить ненужные данные из рабочей области и из вычислений в порядке сохранить память или ускорить обработку и отображение. Данные о строке и данные о закрашенной фигуре должны быть обрезаны по-другому. Можно обрезать данные о строке путем простого удаления точек вне видимой области путем усечения строк в кадре карты или в некоторую другую заданную область. Данные о закрашенной фигуре требуют, чтобы более сложный метод гарантировал, что объекты закрашенной фигуры правильно формируются. Если вы хотите обработать векторы как данные о строке, функция maptriml
возвращает переменные, содержащие только те точки, которые лежат в заданной области. Если, вместо этого, вы хотите сохранить формат полигона, используйте функцию maptrimp
. Следует иметь в виду, однако, что обрезанные закрашенной фигурой данные являются обычно больше и более дорогими, чтобы вычислить.
Примечание: При рисовании карт, функции отображения Mapping Toolbox автоматически обрезают векторные геоданные в область, заданную пределами кадра (FLatLimit
и свойства осей карты FLonLimit
) для азимутальных проекций, или структурировать или сопоставить пределы (MapLatLimit
и свойства осей карты MapLonLimit
) для неазимутальных проекций. Обрезка сделана внутренне в стандартной программе отображения, сохранив исходные данные в целости.
Загрузите MAT-файл coastlines
. Этот файл содержит данные для всего мира.
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')