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

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

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

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

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

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

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

Пример 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

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

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

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

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

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

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

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

Импортируйте векторные данные о линии от boston_roads.shp файл.

roads = shaperead('boston_roads.shp');

Чтобы получить информацию о спроектированной системе координат, сначала возвратите информацию о файле форм как структура. Затем запросите CoordinateReferenceSystem поле .

roadsInfo = shapeinfo('boston_roads.shp');
roadsInfo.CoordinateReferenceSystem
ans = 
  projcrs with properties:

                    Name: "NAD83 / Massachusetts Mainland"
           GeographicCRS: [1×1 geocrs]
        ProjectionMethod: "Lambert Conic Conformal (2SP)"
              LengthUnit: "meter"
    ProjectionParameters: [1×1 map.crs.ProjectionParameters]

Пример 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 = 
 13×1 geopoint vector with properties:

 Collection properties:
       Geometry: 'point'
       Metadata: [1×1 struct]
 Feature properties:
       Latitude: [42.3501 42.3515 42.3598 42.3584 42.3529 42.3626 42.3668 42.3668 42.3668 42.3557 42.3557 42.3562 42.3459]
      Longitude: [-71.0870 -71.0926 -71.0662 -71.0598 -71.0662 -71.0789 -71.0995 -71.0564 -71.0801 -71.0662 -71.0495 -71.0662 -71.0564]
           Name: {''BACK BAY''  'BACK BAY FENS'  'BEACON HILL'  'BOSTON'  'BOSTON NECK'  'BROAD CANAL'  'CAMBRIDGE'  'COPPS HILL'  ''EAST CAMBRIDGE''  'FLAGSTAFF HILL'  'FORT POINT CHANNEL'  'FROG POND'  'SOUTH BAY'}
    Description: {'PPL-SUBDVSN'  'MARSH'  'HILL'  'PPL'  'PENINSULA'  'CANAL'  'PPL'  'HILL'  'PPL-SUBDVSN'  'HILL'  'CHANNEL'  'LAKE'  'INLET'}

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

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.

Для просмотра документации необходимо авторизоваться на сайте