Этот пример показывает, как использовать Mapping Toolbox, чтобы создать мировую карту. Картографические данные могут быть пространными, комплексными, и трудными к процессу. Функции Mapping Toolbox обрабатывают многие детали загрузки и отображения картографических данных, и используют встроенные структуры данных, которые упрощают хранение данных. Пространственные данные относятся к местоположению описания данных, форме и пространственным отношениям. Картографические данные являются пространственными данными, на которые в некотором роде геоссылаются или связывают к определенным местоположениям на, под, или выше поверхности планеты.
Создайте пустую карту оси, готовые содержать данные по вашему выбору. Функциональный worldmap
автоматически выбирает разумный выбор для вашей проекции карты и координатных пределов. Чтобы отобразить мировую карту, функция выбрала проекцию Robinson, сосредоточенную на главном меридиане и экваторе (широта на 0 °, долгота на 0 °).
worldmap world
Импортируйте мировые данные о береговой линии с низкой разрешающей способностью. Данные о береговой линии являются набором дискретных вершин, которые, когда соединено в данном распоряжении, аппроксимируют береговые линии континентов, крупнейших островов и внутренних морей. Широты вершины и долготы хранятся как векторы в MAT-файле. Загрузите MAT-файл и просмотрите переменные в рабочей области.
load coastlines
whos
Name Size Bytes Class Attributes coastlat 9865x1 78920 double coastlon 9865x1 78920 double
Определите, сколько отдельных элементов находится в векторах данных береговой линии. Даже при том, что существует только один вектор широт, coastlat
, и один вектор долгот, coastlon
, каждого из этих векторов содержит много отличных полигонов, формируя береговые линии миров. Эти векторы используют разделители NaN и терминаторы строки NaN, чтобы разделить каждый вектор на несколько частей.
[latcells, loncells] = polysplit(coastlat, coastlon); numel(latcells)
ans = 241
Отобразите данные о береговой линии на графике по осям карты с помощью функции plotm
. plotm
является географическим эквивалентом функции plot
MATLAB. Это принимает координаты в широте и долготе, преобразовывает их к X и Y через заданную проекцию карты и отображает их в оси вращения. В этом примере worldmap
использует проекцию Робинсона.
plotm(coastlat, coastlon)
Создайте новую карту оси для того, чтобы отобразить данные на графике по Европе. На этот раз задайте возвращаемый аргумент для функции worldmap
, чтобы получить указатель на оси фигуры. Объект осей, на котором отображены данные о карте, называется картой осями. В дополнение к графическим свойствам, характерным для любого объекта осей MATLAB, объект осей карты содержит дополнительные свойства, покрывающие тип проекции карты, параметры проекции, пределы карты, и т.д. getm
и функции setm
и другие позволяют вам получать доступ и изменять эти свойства.
h = worldmap('Europe');
Определите, какую проекцию карты worldmap
использует.
getm(h,'MapProjection')
ans = 'eqdconic'
Добавьте данные в карту Европы при помощи функции geoshow
, чтобы импортировать и отобразить несколько файлов форм в папке toolbox/map/mapdata
. Отметьте, как функция geoshow
может отобразить данные на графике непосредственно из файлов на карту оси без первого импорта его в рабочую область. Чтобы изменить цвет маркера, используйте свойство MarkerEdgeColor
и, для некоторых маркеров, свойства MarkerFaceColor
.
geoshow('landareas.shp', 'FaceColor', [0.15 0.5 0.15]) geoshow('worldlakes.shp', 'FaceColor', 'cyan') geoshow('worldrivers.shp', 'Color', 'blue') geoshow('worldcities.shp', 'Marker', '.',... 'MarkerEdgeColor', 'magenta')
Поместите метку в карту, чтобы идентифицировать Средиземное море.
labelLat = 35;
labelLon = 14;
textm(labelLat, labelLon, 'Mediterranean Sea')