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