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

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

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

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

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

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

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

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

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

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

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:

Copyright GeoEye

Includes material copyrighted by GeoEye, all rights reserved.

(GeoEye was merged into the DigitalGlobe corporation January 29th,

2013.)

For more information, run:

>> type boston.txt

>> type boston_ovr.txt

boston_roads.shp, boston_placenames.gpx:

Office of Geographic and Environmental Information (MassGIS),

Commonwealth of Massachusetts Executive Office of Environmental Affairs

http://www.state.ma.us/mgis

For more information, run:

>> type boston_roads.txt

>> type boston_placenames_gpx.txt