Создание отображений карты с данными в спроектированной системе координат

Этот пример иллюстрирует, как импортировать и отобразить географические данные, которые содержат координаты в спроектированной системе координат.

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

  • Импортируйте определенный растр и векторные наборы данных

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

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

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

Пример 1: импортируйте растровые данные в спроектированной системе координат

Географические растровые данные, которые содержат координаты в спроектированной системе координат, могут храниться во множестве различных форматов, включая стандартные форматы файлов, такие как GeoTIFF, Пространственный стандарт передачи данных (SDTS), NetCDF, HDF4 или HDF5. Этот пример иллюстрирует импортирующие данные из файла GeoTIFF. Данные в файле содержат координаты в спроектированной системе координат Зоны плановой проекции штата Массачусеттс системы координат карты.

Координаты изображения в файле GeoTIFF, boston.tif, находятся в спроектированной системе координат. Можно определить это при помощи geotiffinfo функционируйте и исследуйте PCS и Projection значения полей.

info = geotiffinfo('boston.tif');
disp(info.PCS)
NAD83 / Massachusetts Mainland
disp(info.Projection)
SPCS83 Massachusetts Mainland zone (meters)

Единица длины координат задана UOMLength поле в info структура.

disp(info.UOMLength)
US survey foot

Чтобы импортировать изображение и пространственный объект привязки, используйте geotiffread.

[boston, R] = geotiffread('boston.tif');

Пример 2: отобразите растровые данные в спроектированной системе координат

Можно отобразить изображение на обычном MATLAB оси с помощью mapshow, который отображает изображение и устанавливает пределы осей к пределам, заданным объектом привязки, R. Координаты, как упомянуто выше, находятся в US survey foot и относительно источника на юго-запад карты, которая является, почему числа являются большими. Координаты всегда положительны в зоне.

mapshow(boston, R)
axis image
title('Boston')

Пример 3: импортируйте векторные данные в спроектированной системе координат

Географические векторные данные, которые содержат координаты в спроектированной системе координат, могут храниться в файлах форм. Этот пример иллюстрирует, как импортировать векторные данные в спроектированной системе координат из файла форм, boston_roads.shp. В общем случае файлы форм содержат информацию о проекции во вспомогательном .prj файле. Этот файл не включен с программным обеспечением Mapping Toolbox™ для boston_roads. Однако можно определить систему координат из boston_roads.txt файл, который включен с программным обеспечением Mapping Toolbox™, которое утверждает, "Все данные, распределенные MassGIS, указаны к данной величине NAD83, системе координат Зоны плановой проекции штата Массачусеттс. Модули исчисляются в метрах".

Импортируйте векторные данные о линии от boston_roads.shp файл включен с программным обеспечением Mapping Toolbox™.

roads = shaperead('boston_roads');

Пример 4: вектор отображения и растровые данные в спроектированной системе координат

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

Преобразуйте координаты растрового изображения от модулей ноги обзора США к метру.

R.XWorldLimits = R.XWorldLimits * unitsratio('m','sf');
R.YWorldLimits = R.YWorldLimits * unitsratio('m','sf');

Отобразите растровое изображение и векторные данные с помощью mapshow.

figure
mapshow(boston, R)
mapshow(roads)
title('Boston and Roads')

Пример 5: Отобразите Данные и в Географических и в Спроектированных Системах координат

У вас могут быть географические данные, координаты которых находятся в широте и долготе и других данных, координаты которых находятся в спроектированной системе координат. Можно отобразить эти наборы данных в том же отображении карты. Этот пример иллюстрирует, как отобразить данные в географической системе координат (широта и долгота) с данными в спроектированной системе координат карты (система координат Зоны плановой проекции штата Массачусеттс).

Считайте растровое изображение с worldfile, координаты которого находятся в широте и долготе. Используйте imread считать изображение и worldfileread считать worldfile и создать пространственный объект привязки.

filename = 'boston_ovr.jpg';
overview = imread(filename);
overviewR = worldfileread(getworldfilename(filename), 'geographic', size(overview));

Чтобы отобразить изображение обзора и GeoTIFF отображают в том же отображении карты, необходимо создать отображение карты с помощью структуры проекции Mapping Toolbox™, содержащей информацию о проекции для данных в спроектированной системе координат, системе координат Зоны плановой проекции штата Массачусеттс. Чтобы заставить карту отобразиться в этой системе, можно использовать информацию о проекции, содержавшуюся в файле GeoTIFF. Используйте geotiff2mstruct функционируйте, чтобы создать структуру проекции Mapping Toolbox™ от содержимого информационной структуры GeoTIFF. geotiff2mstruct функция возвращает проекцию в модулях метров. Используйте структуру проекции, чтобы задать параметры проекции для отображения карты.

mstruct = geotiff2mstruct(info);

Используйте пределы широты и долготы Бостонского изображения обзора.

latlim = overviewR.LatitudeLimits;
lonlim = overviewR.LongitudeLimits;

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

figure('Renderer', 'opengl')
ax = axesm(mstruct, 'Grid', 'on',...
    'GColor', [.9 .9 .9], ...
    'MapLatlimit', latlim, 'MapLonLimit', lonlim, ...
    'ParallelLabel', 'on', 'PLabelLocation', .025, 'PlabelMeridian', 'west', ...
    'MeridianLabel', 'on', 'MlabelLocation', .05, 'MLabelParallel', 'south', ...
    'MLabelRound', -2, 'PLabelRound', -2, ...
    'PLineVisible', 'on', 'PLineLocation', .025, ...
    'MLineVisible', 'on', 'MlineLocation', .05);
geoshow(overview, overviewR)
axis off
tightmap
title({'Boston and Surrounding Region', 'Geographic Coordinates'})

Поскольку координаты изображения GeoTIFF находятся в спроектированной системе координат, используют mapshow накладывать более подробное Бостонское изображение на отображение. Постройте контуры Бостонского изображения красного цвета.

mapshow(boston, R)
plot(R.XWorldLimits([1 1 2 2 1]), R.YWorldLimits([1 2 2 1 1]), 'Color', 'red')
title({'Boston and Surrounding Region', 'Geographic and Projected Coordinates'})

Масштабируйте в географическую область изображения GeoTIFF путем установления пределов осей к пределам Бостона, отображают и добавляют маленький буфер. Обратите внимание на то, что buffer size (delta) выражается в метрах.

delta = 1000;
xLimits = R.XWorldLimits + [-delta delta];
yLimits = R.YWorldLimits + [-delta delta];
xlim(ax,xLimits)
ylim(ax,yLimits)
setm(ax, 'Grid', 'off');

Можно наложить дорожные векторы на отображение карты. Используйте спецификацию символа, чтобы дать каждый класс дороги его собственный цвет.

roadColors = makesymbolspec('Line',...
    {'CLASS', 2, 'Color', 'k'}, ...
    {'CLASS', 3, 'Color', 'g'},...
    {'CLASS', 4, 'Color', 'magenta'}, ...
    {'CLASS', 5, 'Color', 'cyan'}, ...
    {'CLASS', 6, 'Color', 'b'},...
    {'Default',  'Color', 'k'});
mapshow(roads, 'SymbolSpec', roadColors)
title({'Boston and Surrounding Region','Including Boston Roads'})

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

placenames = gpxread('boston_placenames')
placenames = 
 13x1 geopoint vector with properties:

 Collection properties:
       Geometry: 'point'
       Metadata: [1x1 struct]
 Feature properties:
       Latitude: [1x13 double]
      Longitude: [1x13 double]
           Name: {1x13 cell}
    Description: {1x13 cell}

Наложите топонимы на карту и увеличьте размер маркера, измените маркеры в круги и установите их ребро и столкнитесь с цветами к желтому.

geoshow(placenames, 'Marker','o', 'MarkerSize', 6, ...
    'MarkerEdgeColor', 'y', 'MarkerFaceColor','y')
title({'Boston and Surrounding Region','Including Boston Roads and Placenames'})

Информация о наборе данных

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

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