exponenta event banner

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

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

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

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

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

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

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

Пример 1: Импорт растровых данных в проекционную систему координат

Географические растровые данные, содержащие координаты в проектируемой системе координат, могут храниться в различных форматах, включая стандартные форматы файлов, такие как GeoTIFF, Spatial Data Transfer Standard (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: Отображение векторных и растровых данных в проекционной системе координат

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

Преобразование координат растрового изображения из единиц US survey foot в метр.

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: Отображение данных как в географических, так и в проектируемых системах координат

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

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

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

Для отображения обзорного изображения и изображения GeoTIFF на одном и том же дисплее карты необходимо создать отображение карты с использованием структуры проекции Mapping Toolbox™, содержащей информацию о проекции данных в проекционной системе координат Massachusetts State Plane Mainland Zone system. Для отображения карты в этой системе можно использовать информацию о проекции, содержащуюся в файле 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, установив границы осей до пределов бостонского изображения, и добавьте небольшой буфер. Обратите внимание, что размер буфера (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 была объединена в корпорацию DigityGlobe 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.