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

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

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

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

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

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

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

Пример 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. Импорт векторных данных в проективную систему координат

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

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

roads = shaperead('boston_roads.shp');

Чтобы получить информацию о проективной системе координат, сначала верните информацию о файле shapefile как о структуре. Затем запросите 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. Отображение данных как в географических, так и в проективных системах координат

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

Прочтите растровое изображение с 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. The 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 включает материалы, авторские права на которые принадлежат Геоглаз, все права защищены. Геоглаз была объединена в корпорацию DigitalGlobe 29 января 2013 года. Для получения дополнительной информации о наборах данных используйте команды type boston.txt и type boston_ovr.txt.

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

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