主要内容

取消注入数字高度模型(DEM)

此示例显示如何将USGS DEM转换为具有可比空间分辨率的常规纬度经度网格。U.S.地质调查(USGS)30米数字高度模型(DEM)是使用UTM坐标系的常规网格(光栅数据)。在申请中使用此类DEM可能需要重新采样和重新采样它们。您可以随时应用此方法显示,以投影除UTM之外的地图坐标系和其他DEM和大多数类型的常规数据网格。

首先,将输出显示格式设置为以便输出显示更多的小数点。获取当前输出格式,以便在示例结束时恢复它。

currentFormat = get (0,'格式');格式

第1步:导入DEM及其元数据

此示例使用USGS DEM for Quadrangle 7.5弧分钟广场,位于美国新罕布什尔州新罕布什尔州的白色山脉。使用该数据导入数据和地图单元格引用对象ReadgeOraster.函数。使用额外的元数据使用GeorasterInfo.函数。

[z,r] = ReadgeOraster('mtwashington-ft.grd'“OutputType”'双倍的');Info = GeorasterInfo('mtwashington-ft.grd');

用替换丢失的数据值。

m = info.MissingDataIndicator;Z = standardizeMissing (Z, m);

第2步:获取投影信息

的方法获取投影坐标参考系统的信息Projectedcrs.参考对象的属性。结果是一个projcrs.目的。然后,获得坐标参考系统的椭圆体。

p = R.ProjectedCRS;椭球= p.GeographicCRS.Spheroid
eltipsoid =参考性质,带有定义性质:代码:7008名称:'Clarke 1866'LughtUnit:'Meter'SemimaJoraxis:6378206.4半月星:6356583.8 Inverseflattenten:294.978698213898偏心率:0.0822718542230038和额外的特性:扁平化三角形致命的Surfacearea体积

第3步:确定要使用的UTM区域并构建地图轴

的名字财产的财产projcrs.对象,你可以看出DEM是在通用横向墨卡托(UTM)坐标系统中网格化的。

p.Name
ans =“UTM区19,Northern Hemisphere”

要查找UTM区域,请先定位UTM坐标中的DEM的中心。然后,将坐标转换为纬度 - 经度。

[M, N] =大小(Z);xCenterIntrinsic = (1 + N)/2;yCenterIntrinsic = (1 + M)/2;[xCenter, yCenter] = intrinsicToWorld (R, xCenterIntrinsic, yCenterIntrinsic);[latCenter, lonCenter] = projinv (p xCenter yCenter)
lonCenter = -71.3126432693478

的方法查找DEM的UTM区域Utmzone.函数。

Utmzone = Utmzone(LatCenter,Loncenter)
utmZone = ' 19 t '

使用区域和椭球创建地图轴。

图axesm (“设备”'区'utmZone,'Geoid',椭圆形)轴离开gridm mlabel.plabel.framem

注意:如果你能在世界地图上目测到新罕布什尔州的大致位置,那么你可以用Utmzoneui.GUI。

Utmzoneui(实际Zone)

步骤4:在地图轴线上显示原始DEM

Mapshow.(而不是geoshow或者meshm)以在地图坐标轴上显示DEM,因为数据以地图(x-y)坐标网格化。

Mapshow(z,r,'显示类型''texturemap') demcmap (Z)

该DEM涵盖了这一地图的这样的一小部分,可能很难看到(在44到44度北部和72度到71度West中),因为地图限制被设定为覆盖整个UTM区域。您可以重置它们(以及地图网格和标签参数)以仔细看看。

setm(gca,'maplatlimit'(44.2 - 44.4),“MapLonLimit”,[ -  71.4 -71.2] setm(gca,“MLabelLocation”, 0.05,“MLabelRound”,-2)setm(gca,'plabellocation', 0.05,'plabelround',-2)setm(gca,'plinelocation', 0.025,“MLineLocation”, 0.025)

当以这种较大的尺度观察时,沿着栅格的边缘出现窄的楔形区域。这些是哪里Z包含值NaN,表示没有实际数据。默认情况下,它们会收到彩色表中的第一个颜色,在这种情况下,在这种情况下是深绿色的。出现了这些空数据区域,因为虽然DEM以UTM坐标网格网格包装,但其数据限制由纬度经度全栅格定义。每个楔形的窄角度对应于该区域的这部分utm坐标系的非零“网格偏降”。(恒定X行仅沿着区域中央经络沿着南北奔跑。在其他地方,它们相对于当地经络相对于略微的角度。)

第5步:定义输出纬度 - 经度网格

下一步是定义纬度 - 经度中的定期间隔的网格点集,其覆盖在DEM内的区域与原始数据集相同的空间分辨率。

首先,您需要确定输入DEM中的行之间的纬度如何变化(即,通过向北移动30米)。

rng = R.CellExtentInWorldY;%以米,与p.lengthUnit一致LATCRAD = DEG2RAD(拉脱中心);% latCenter(弧度)纬度的百分比变化,以学位lat = rad2deg(meridianfwd(latcrad,rng,椭球体)- latcrad)
dLat = 0.000269984939366415

实际的间距可以稍微四舍五入,以定义用于输出(经度-纬度)网格的网格间距。

GridSpacing = 1/4000;换句话说,每度4000个样本

要设置输出(纬度-经度)网格的范围,首先在UTM地图坐标中找到DEM的角。

[1 1 2 2])'
Xcorners = 310380 310380 320730 320730 ycorners = 4901880 4916040 4901880

然后将角落转换为纬度经度。在地图上显示纬度 - 经度角(通过UTM投影)以检查结果是合理的。

[Latcorners,Loncorners] = Projinv(P,Xcorners,Ycorners)Hcorners = Geoshow(Latcorners,Loncorners,'显示类型'“多边形”'facecholor'“没有”“EdgeColor”“红色”);
lonCorners = -71.3749065609587 -71.3800513603087 -71.2502438233865 -71.2453790282992

接下来,向外舍入以定义一个完全包围DEM的输出纬度 - 经度四边形,并用网格间距的倍数对准。

latSouth = gridSpacing * floor(min(latCorners)/gridSpacing) lonWest = gridSpacing * floor(min(lonCorners)/gridSpacing) latNorth = gridSpacing * cell (max(latCorners)/gridSpacing) lonEast = gridSpacing * cell (max(latCorners)/gridSpacing) qlatlim = [latSouth latNorth];qlonlim = [lonWest lonEast];dlat = 100 * gridSpacing;dlon = 100 * gridSpacing;[latquad, lonquad] = outlinegeoquad(qlatlim, qlonlim, dlat, dlon);lquad, lonquad,'显示类型'“多边形”'facecholor'“没有”“EdgeColor”'蓝色');snapnow;
latSouth = 44.24725 lonWest = -71.38025

最后,构造用于输出网格的地理栅格引用对象。它支持金宝app纬度 - 经度和行和列下标之间的转换。在这种情况下,使用世界文件矩阵W,可以精确指定网格间距。

W = [网格化0 LONWEST + GridSpacing / 2;0 gridSpacing latSouth + gridSpacing/2]
W = 0.00025 0 -71.380125 0 0.00025 44.247375
nrows = round((latnorth  -  latsouth)/ gridspacing)ncols = round(wrapto360(lonease  -  lonwest)/ gridspacing)
nRows = 521 nCols = 540
Rlatlon = georasterref(W,[nRows nCols], ' ', ' '),“细胞”);rlatlon.geachcts = p.geographics.
Rlatlon = GeographicCellsReference与属性:LatitudeLimits:44.24725 44.3775] LongitudeLimits:-71.38025 -71.24525] RasterSize:[521 540] RasterInterpretation: '细胞' ColumnsStartFrom: '南' RowsStartFrom: '西方' CellExtentInLatitude:1/4000 CellExtentInLongitude:1 /4000 RASTEREXTENTINLATICE:0.13025 RASTEREXTENTINLONGE:0.135 XintRinsiclimits:[0.5 540.5]金林林利:[0.5 521.5] COOLINATESYSTEMTYPE:'地理'地理(地理):[1x1 GeOcrs] AnallUnit:'学位'

rlatlon.完全定义输出网格中每个单元格的数量和位置。

步骤6:将每个输出网格点位置映射到UTM x-y

最后,您已准备好使用地图投影,将其应用于输出网格中的每个点的位置。首先计算存储在2-D阵列中的那些点的纬度和长度。

[rows,cols] = ndgrid(1:nRows, 1:nCols);(纬度、经度)= intrinsicToGeographic (Rlatlon关口,行);

然后将投影应用于每个纬度对对,具有与纬度度量阵列相同的形状和大小的UTM X-Y位置阵列。

[XI, YI] = projfwd (p,纬度,经度);

在这一点上,习(i, j)yi(我,j)指定输出网格的第i行和第j列对应的网格点的UTM坐标。

第7步:重新取决于原始DEM

最后一步是使用matlabinterp2.函数执行双线性重采样。

在这个阶段,从经纬度网格投影到UTM地图坐标系统的值变得明显:这意味着重采样可以在常规的X-Y网格中进行,使interp2.适用的。反向方法,将每个(x,y)指向纬度经度,可能似乎更直观,但它会导致要插值的不规则点数 - 更难的任务,要求使用更昂贵的昂贵griddata.函数或类似的函数。

(行,关口)= ndgrid (1: M, 1: N);(X, Y) = intrinsicToWorld (R,关口,行);方法=双线性的;extrapval = nan;zlatlon = Interp2(x,y,z,xi,yi,方法,utripval);

使用投影轴的结果使用geoshow,它将在飞行中重新投入。请注意,它填充了蓝色矩形,这与纬度和经度线对齐。(相比之下,概述原始DEM的红色矩形,与UTM X和Y对齐。)还注意到沿网格边缘的纳米填充的区域。由于在插值期间的圆截止效应,这些区域的边界在单个网格间距的水平上显得略微锯齿。将红色四边形和蓝色四边形移动到顶部,以确保它们不会被光栅显示隐藏。

geoshow (Zlatlon Rlatlon,'显示类型''texturemap')Uistack([Hcorners HQuad],“高级”

恢复原始输出显示格式。

格式(CurrentFormat)

学分

mtwashington-ft.grd(和支持文件金宝app):

美国地质调查(USGS)7.5分钟的数字海拔模型(DEM)为MT.华盛顿四边形,高涨米。http://edc.usgs.gov/下载188bet金宝搏products/elevation/dem.html.
有关更多信息,请运行:
>>型mtwashington-ft.txt

另请参阅

||||