exponenta event banner

Создание отображений карты с географическими данными

Существует множество наборов геопространственных данных, содержащих данные с координатами в широте и долготе в единицах градусов. В этом примере показано, как импортировать географические данные с координатами в широте и долготе, отображать географические данные в отображении карты и настраивать отображение.

В частности, этот пример иллюстрирует, как

  • Импорт определенных наборов географических векторных и растровых данных

  • Создание отображения карты и визуализация данных

  • Отображение нескольких наборов данных в одном отображении карты

  • Настройка отображения карты с линейкой масштаба и стрелкой на север

  • Настройка отображения карты с помощью карты вставки

Пример 1: Импорт данных географического вектора полигона

Данные географических векторов могут храниться в различных форматах, например форматах shapefile и GPS Exchange (GPX). В этом примере выполняется импорт данных географического вектора многоугольника из файла формы. Вершины в файле формы могут находиться либо в географических координатах (широта и долгота), либо в спроецированной системе координат.

Прочтите границы штатов США из usastatehi.shp файл, включенный в программное обеспечение Mapping Toolbox™. Границы штата находятся на широте и долготе.

states = shaperead('usastatehi.shp', 'UseGeoCoords', true);

Пример 2: Отображение данных географического вектора полигона

Отображение данных географического вектора многоугольника на осях карты. Поскольку географическая протяженность находится в США, можно использовать usamap для настройки осей карты. Использовать geoshow для проецирования и отображения географических данных на осях карты. Отображение цвета океана на заднем плане путем задания цвета лица рамки.

figure
ax = usamap('conus');
oceanColor = [0.3010 0.7450 0.9330];
landColor = [0.9290 0.6940 0.1250];
setm(ax, 'FFaceColor', oceanColor)
geoshow(states,'FaceColor',landColor)
title({ ...
    'Conterminous USA State Boundaries', ...
    'Polygon Geographic Vector Data'})

Пример 3: Импорт данных географических векторов точек и линий

Импорт данных географических векторов точек из boston_placenames.gpx файл, включенный в программное обеспечение Mapping Toolbox™. Файл содержит координаты широты и долготы географических точек в части Бостона, штат Массачусетс, США. Использовать gpxread для чтения файла GPX и возврата geopoint вектор.

placenames = gpxread('boston_placenames.gpx');

Импорт данных вектора линии из sample_route.gpx файл, включенный в программное обеспечение Mapping Toolbox™. Файл содержит координаты широты и долготы для маршрута GPS от международного аэропорта Бостон Логан до The MathWorks, Inc в Натике Массачусетс, США. Использовать gpxread для чтения файла GPX и возврата geopoint вектор.

route = gpxread('sample_route.gpx');

Пример 4: Отображение данных точек и линий географических векторов

Отображение данных географических векторов в осях карты, центрированных вокруг штата Массачусетс, с использованием данных из границ штата и файлов GPX. Координаты всех этих наборов данных находятся в широте и долготе.

Найдите границу штата Массачусетс.

stateName = 'Massachusetts';
ma = states(strcmp({states.Name},stateName));

Использовать usamap для настройки осей карты для региона, окружающего Массачусетс. Раскрасьте океан, задав цвет лица кадра. Отображение границ штатов и выделение Массачусетса с помощью geoshow для отображения географических данных на осях карты. Поскольку маршрут GPX является набором точек, хранящихся в geopoint вектор, введите координаты широты и долготы в geoshow для отображения маршрута в виде линии.

figure
ax = usamap('ma');
maColor = [0.4660 0.6740 0.1880];
setm(ax, 'FFaceColor', oceanColor)
geoshow(states,'FaceColor',landColor)
geoshow(ma, 'FaceColor', maColor)
geoshow(placenames);
geoshow(route.Latitude, route.Longitude);
title({'Massachusetts and Surrounding Region', 'Placenames and Route'})

Пример 5: Установка пределов широты и долготы на основе объема данных

Увеличьте масштаб карты, рассчитав новые пределы широты и долготы для карты, используя масштаб имен плаценаций и данных маршрута. Увеличьте пределы на 0,05 градуса.

lat = [route.Latitude placenames.Latitude];
lon = [route.Longitude placenames.Longitude];
latlim = [min(lat) max(lat)];
lonlim = [min(lon) max(lon)];
[latlim, lonlim] = bufgeoquad(latlim, lonlim, .05, .05);

Создайте карту осей с новыми пределами и просмотрите географические данные.

figure
ax = usamap(latlim, lonlim);
setm(ax, 'FFaceColor', oceanColor)
geoshow(ma,'FaceColor',maColor)
geoshow(placenames)
geoshow(route.Latitude, route.Longitude)
title('Closeup of Placenames and Route')

Пример 6: Импорт географических растровых данных

Географические растровые данные могут храниться в различных форматах, например в форматах GeoTIFF, Esri Grid, DTED и ENVI. Для чтения данных в этих форматах используйте readgeoraster функция.

Чтобы прочитать изображение, связанное с мирским файлом, используйте imread и worldfileread вместо этого выполняет функции. Использовать imread для чтения изображения и worldfileread для чтения файла мира и построения объекта пространственной ссылки. Для этого примера импортируйте данные для региона, окружающего Бостон, штат Массачусетс. Координаты изображения - в широте и долготе.

filename = 'boston_ovr.jpg';
RGB = imread(filename);
R = worldfileread(getworldfilename(filename), 'geographic', size(RGB));

Пример 7: Отображение географических растровых данных

Отображение изображения RGB на осях карты. Границы карты устанавливаются в пределы, определенные пространственным ссылочным объектом, R. Координаты данных выражены в широте и долготе.

figure
ax = usamap(RGB, R);
setm(ax, ...
    'MLabelLocation',.05, 'PLabelLocation',.05, ...
    'MLabelRound',-2, 'PLabelRound',-2)
geoshow(RGB, R)
title('Boston Overview')

Пример 8: Отображение географических векторных и растровых данных

Растровые и векторные данные можно отображать в одном отображении карты. Поскольку координаты всех этих наборов данных находятся в широте и долготе, используйте geoshow для отображения их в одном отображении карты. Установите новые ограничения на основе пределов маршрута, имен плаценаций и обзорного изображения.

lat = [route.Latitude  placenames.Latitude  R.LatitudeLimits];
lon = [route.Longitude placenames.Longitude R.LongitudeLimits];
latlim = [min(lat) max(lat)];
lonlim = [min(lon) max(lon)];
figure
ax = usamap(latlim, lonlim);
setm(ax, 'GColor','k', ...
    'PLabelLocation',.05, 'PLineLocation',.05)
geoshow(RGB, R)
geoshow(ma.Lat, ma.Lon, ...
    'LineWidth', 2, 'Color', 'y')
geoshow(placenames)
geoshow(route.Latitude, route.Longitude)
title('Boston Overview and Geographic Vector Data')

Пример 9: Настройка отображения карты с помощью масштабной линейки

Настройте отображение карты, включив линейку масштаба. Масштабная линейка - это графический объект, который показывает расстояния на земле при правильном размере проекции. В этом примере показано, как построить линейку масштаба, отображающую горизонтальные расстояния в международных милях.

Вычислите пределы широты и долготы Массачусетса и увеличьте их на 0,05 градуса с помощью bufgeoquad функция.

latlim = [min(ma.Lat),  max(ma.Lat)];
lonlim = [min(ma.Lon), max(ma.Lon)];
[latlim, lonlim] = bufgeoquad(latlim, lonlim, .05, .05);

Отображение на карте границы состояния, местоимений, маршрута и обзорного изображения.

figure
ax = usamap(latlim, lonlim);
setm(ax, 'FFaceColor', oceanColor)
geoshow(states,'FaceColor', landColor)
geoshow(ma, 'LineWidth', 1.5, 'FaceColor', maColor)
geoshow(RGB, R)
geoshow(placenames)
geoshow(route.Latitude, route.Longitude)
titleText = 'Massachusetts and Surrounding Region';
title(titleText)

Вставка масштабной линейки. Расположение масштабной линейки можно определить с помощью команды ginput как показано ниже:

[xLoc,yLoc] = ginput(1);

Ранее выбранное расположение задается ниже.

xLoc = -127800;
yLoc = 5014700;
scaleruler('Units', 'mi', 'RulerStyle', 'patches',  ...
    'XLoc', xLoc, 'YLoc', yLoc);
title({titleText, 'with Scale Ruler'})

Пример 10: Настройка отображения карты со стрелкой на север

Настройте карту, добавив стрелку на север. Стрелка на север - это графический элемент, указывающий на географический Северный полюс.

Используйте значения широты и долготы для позиционирования стрелки на север.

northArrowLat =  42.5;
northArrowLon = -70.25;
northarrow('Latitude', northArrowLat, 'Longitude', northArrowLon);
title({titleText, 'with Scale Ruler and North Arrow'})

Пример 11: Настройка отображения карты с помощью карты вставки

Настройте карту, добавив карту вставки. Карта вставки представляет собой небольшую карту в пределах большой карты, которая позволяет визуализировать большую географическую область основной карты. Создайте карту для окружающей области как карту вставки. Используйте axes содержит и позиционирует карту вставки. На карте вставки:

  • Отображение границ состояния для окружающей области

  • Постройте красную рамку, чтобы показать протяженность основной карты

h2 = axes('Position', [.15 .6 .2 .2], 'Visible', 'off');
usamap({'PA','ME'})
plabel off; mlabel off
setm(h2, 'FFaceColor', 'w'); 
geoshow(states, 'FaceColor', [0.9 0.9 0.9], 'Parent', h2)
plotm(latlim([1 2 2 1 1]), lonlim([2 2 1 1 2]), ...
    'Color', 'red', 'LineWidth', 2)
title(ax, {titleText, 'with Scale Ruler, North Arrow, and Inset Map'})

Сведения о наборе данных

Файл boston_placenames.gpx из Бюро географической информации (MassGIS), Содружество Массачусетса, Административная канцелярия служб технологии и безопасности. Для получения дополнительной информации о наборах данных используйте команду type boston_placenames_gpx.txt.

Файл boston_ovr.jpg включает в себя материалы, авторские права на которые принадлежат GeoEye, все права защищены. GeoEye была объединена в корпорацию DigityGlobe 29 января 2013 года. Для получения дополнительной информации о наборе данных используйте команду type boston_ovr.txt.

См. также

| | | | |