主要内容

用投影坐标参考系中的数据创建地图显示

此示例说明如何导入和显示包含投影坐标参考系统中的坐标的地理数据。

特别地,这个例子说明了如何

  • 导入特定的栅格和矢量数据集

  • 创建可视化数据的地图显示

  • 在地图显示中显示多个数据集

  • 在单一地图显示中显示具有地理坐标和投影坐标参考系统坐标的多个数据集

例1:在投影坐标参考系中导入光栅数据

包含投影坐标参考系统中的坐标的地理光栅数据可以以各种不同的格式存储,包括标准文件格式,如GeoTIFF、空间数据传输标准(SDTS)、NetCDF、HDF4或HDF5。这个示例演示了从GeoTIFF文件导入数据。文件中的数据包含投影地图坐标参考系统中的坐标马萨诸塞州平面大陆区坐标系

GeoTIFF文件中图像的坐标,boston.tif,都在投影坐标参考系中。可以通过使用geotiffinfo函数和检查个人电脑而且投影字段值。

信息= geotiffinfo(“boston.tif”);disp (info.PCS)
NAD83 /马萨诸塞州大陆
disp (info.Projection)
SPCS83马萨诸塞州大陆区(米)

坐标的长度单位由UOMLength信息结构。

disp (info.UOMLength)
美国测量尺

要导入图像和空间引用对象,使用readgeoraster

[波士顿,R] = readgeoraster)“boston.tif”);

例2:在投影坐标参考系中显示光栅数据

您可以显示图像在一个规则的MATLAB轴使用mapshow,显示图像并将坐标轴限制设置为引用对象定义的限制,R.如上所述,坐标在美国测量尺相对于地图西南部的一个原点,这就是为什么这些数字很大。区域内的坐标总是正的。

mapshow(波士顿,R)轴图像标题(“波士顿”

例3:在投影坐标系中导入矢量数据

包含投影坐标参考系统中的坐标的地理矢量数据可以存储在shapefile中。这个例子演示了如何从shapefile导入投影坐标参考系统中的矢量数据,boston_roads.shp

中导入矢量线数据boston_roads.shp文件作为地理空间表。

道路= readgeotable(“boston_roads.shp”);

形状表的变量包含有关线形状的信息。查询形状的投影坐标参考系。

roads.Shape.ProjectedCRS
ans =项目与属性:名称:“NAD83 /马萨诸塞州大陆”地理crs: [1×1 geocrs]投影方法:“兰伯特圆锥共形(2SP)”长度单元:"meter"投影参数:[1×1 map.crs.ProjectionParameters]

例4:在投影坐标参考系中显示矢量和光栅数据

本例中的矢量和栅格数据位于同一个投影坐标参考系统中。然而,矢量数据以米为长度单位,而栅格数据以测量英尺为长度单位。将栅格数据转换为米的长度单位,并在相同的轴上显示数据。

将栅格图像的坐标从单位美国测量英尺转换为米。

R.XWorldLimits = R.XWorldLimits * unitsratio(“米”“科幻小说”);R.YWorldLimits = R.YWorldLimits * unitsratio(“米”“科幻小说”);

显示光栅图像和矢量数据使用mapshow

图mapshow(波士顿,R) mapshow(道路)标题(《波士顿与道路》

例5:在地理坐标系和投影坐标系中显示数据

您可能拥有地理数据,其坐标是纬度和经度,以及其他数据,其坐标是投影坐标参考系统。您可以在同一个地图显示中显示这些数据集。此示例说明如何使用投影地图坐标参考系统(马萨诸塞州平面大陆区坐标系统)中的数据显示地理坐标参考系统(纬度和经度)中的数据。

读取一个坐标为经度和纬度的worldfile的光栅图像。使用imread读取图像和worldfileread读取世界文件并构造一个空间引用对象。

文件名=“boston_ovr.jpg”;概述= imread(文件名);overviewR = worldfileread(getworldfilename(filename),“地理”、大小(概述));

若要在同一地图显示器中显示概览图像和GeoTIFF图像,需要使用Mapping Toolbox™投影结构创建地图显示器,该结构包含投影坐标参考系统中数据的投影信息,马萨诸塞州平面大陆区坐标系.要在此系统中显示地图,可以使用GeoTIFF文件中包含的投影信息。使用geotiff2mstruct函数构造映射工具箱™投影结构,从GeoTIFF信息结构的内容。的geotiff2mstruct函数返回以米为单位的投影。使用投影结构定义地图显示的投影参数。

Mstruct = geotiff2mstruct(info);

使用波士顿概览图像的纬度和经度限制。

latlim = overview . latitudelimits;lonlim = overviewr . longitude elimits;

使用存储在地图投影结构中的投影信息创建地图显示,并设置地图纬度和经度限制。在地图轴上显示地理数据。geoshow投影纬度和经度坐标。

图(渲染器的opengl的) ax = axesm(mstruct,“网格”“上”...“GColor”,(。9 .9 .9],...“MapLatlimit”latlim,“MapLonLimit”lonlim,...“ParallelLabel”“上”“PLabelLocation”.025,“PlabelMeridian”“西方”...“MeridianLabel”“上”“MlabelLocation”, 0。“MLabelParallel”“南”...“MLabelRound”2,“PLabelRound”2,...“PLineVisible”“上”“PLineLocation”.025,...“MLineVisible”“上”“MlineLocation”, . 05);geoshow(overview, overviewR)轴tightmap标题({“波士顿及周边地区”“地理坐标”})

由于GeoTIFF图像的坐标位于投影坐标参考系统中,因此使用mapshow将更详细的波士顿图像覆盖到显示器上。用红色标出波士顿图像的边界。

地图显示(波士顿,右)XWorldLimits([1 1 2 2 1]), R.YWorldLimits([1 2 2 1 1]),“颜色”“红色”)标题({“波士顿及周边地区”“地理及投影坐标”})

将轴限制设置为Boston图像的限制,并添加一个小缓冲区,从而放大到GeoTIFF图像的地理区域。请注意,缓冲区大小(δ)以米为单位。

Delta = 1000;xLimits = R.XWorldLimits + [-delta delta];yworldlimits = R.YWorldLimits + [-delta delta];ylim(ax,yLimits) setm(ax, xLimits)“网格”“关闭”);

您可以将道路矢量叠加到地图显示上。使用一个符号规范给每一类道路它自己的颜色。

roadColors = makesymbolspec(“行”...“类”2,“颜色”“k”},...“类”3,“颜色”‘g’},...“类”4“颜色”“红色”},...“类”5,“颜色”“青色”},...“类”6“颜色”“b”},...“默认”“颜色”“k”});mapshow(道路、“SymbolSpec”, roadColors) title({“波士顿及周边地区”“包括波士顿路”})

还可以覆盖来自存储在GPX文件中的GPS的数据。导入点地理矢量数据boston_placenames.gpx映射工具箱™软件中包含的文件。该文件包含美国马萨诸塞州波士顿部分地区的地理点特征的经纬度坐标。

Placenames = readgeotable(“boston_placenames.gpx”);

将地名覆盖到地图上,并增加标记的大小,将标记更改为圆形,并将其边缘和面色设置为黄色。

geoshow(地名,“标记”“o”“MarkerSize”6...“MarkerEdgeColor”“y”“MarkerFaceColor”“y”)标题({“波士顿及周边地区”“包括波士顿道路和地名”})

数据集信息

的文件boston.tif而且boston_ovr.jpg包含的资料版权归GeoEye所有,版权所有。GeoEye于2013年1月29日并入DigitalGlobe公司。有关数据集的更多信息,请使用命令类型boston.txt而且类型boston_ovr.txt

的文件boston_roads.shp而且boston_placenames.gpx来自马萨诸塞州联邦地理信息局(MassGIS),技术和安全服务执行办公室。有关数据集的更多信息,请使用命令类型boston_roads.txt而且类型boston_placenames_gpx.txt