Создайте свою первую мировую карту

Этот пример показывает, как использовать 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')