主要内容

Unprojecting数字高程模型(DEM)

这个例子展示了如何将一个美国地质调查局民主党转换成常规的经度网格有类似的空间分辨率。美国地质调查局(USGS) 30米数字高程模型(民主党)正则网格(栅格数据),使用UTM坐标系统。可能需要在应用程序中使用这些民主党reprojecting和重采样。您可以轻松地应用这里显示的方法,除了UTM投影地图坐标系统和其他民主党和大多数类型的常规数据网格。

步骤1:导入民主党及其元数据

这个示例使用的美国地质调查局的民主党四边形7.5弧分广场位于新罕布什尔州的怀特山脉,美国。导入数据和地图细胞使用的参考对象readgeoraster函数。得到额外的元数据使用georasterinfo函数。

(Z, R) = readgeoraster (“MtWashington-ft.grd”,“OutputType”,“双”);信息= georasterinfo (“MtWashington-ft.grd”);

缺失的数据替换为值。

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

步骤2:获得投影信息

得到的信息投影坐标参考系统通过查询ProjectedCRS属性的引用对象。结果是一个projcrs对象。然后,得到的椭球坐标参考系统。

p = R.ProjectedCRS;椭球= p.GeographicCRS.Spheroid
椭球= referenceEllipsoid定义属性:代码:7008姓名:“克拉克1866年”LengthUnit:“计”SemimajorAxis: 6378206.4 SemiminorAxis: 6356583.8 InverseFlattening: 294.978698213898离心率:0.0822718542230038和附加属性:压扁ThirdFlattening MeanRadius SurfaceArea体积

步骤3:确定使用哪个UTM区和构造一个地图

的名字财产的projcrs对象,您可以告诉,DEM网格统一横轴墨卡托(UTM)坐标系统。

p.Name
ans = "北半球UTM区19日"

首先找到UTM区,在UTM坐标定位民主党的中心。然后,将坐标转换为经度。

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

发现民主党通过使用UTM区utmzone函数。

utmZone = utmZone (latCenter lonCenter)
utmZone = ' 19 t '

创建一个使用区和椭球体axesm的地图。

图axesm (“设备”,“区域”utmZone,“大地水准面”椭球)轴gridm mlabelplabelframem

注意:如果您可以直观地把新罕布什尔州的近似位置世界地图,然后你可以证实这一结果utmzoneuiGUI。

utmzoneui (actualZone)

步骤4:在地图上显示原来的民主党

使用mapshow(而不是geoshowmeshm)在地图上显示民主党,因为数据在地图(x - y)坐标网格。

mapshow (Z, R,“DisplayType”,“texturemap”)demcmap (Z)

民主党涵盖的一小部分这样的地图,它可能很难看到(44 - 44度北和72和71度西),因为地图限制将覆盖整个UTM区。你可以重置他们(以及地图网格和标签参数)仔细地看。

setm (gca),“MapLatLimit”(44.2 - 44.4),“MapLonLimit”甘氨胆酸,[-71.4 - -71.2])setm (,“MLabelLocation”,0.05,“MLabelRound”甘氨胆酸,2)setm (,“PLabelLocation”,0.05,“PLabelRound”甘氨胆酸,2)setm (,“PLineLocation”,0.025,“MLineLocation”,0.025)

当它被认为在这个规模较大,狭窄的楔形区域统一颜色的边缘出现网格。这些地方Z包含NaN值,这表明缺乏实际数据。默认情况下他们收到第一个颜色的颜色表,在本例中是深绿色的。这些null数据区域出现,因为尽管民主党在UTM坐标网格,定义其数据限制经度四边形。每个楔形的窄角对应的非零的“网格赤纬”UTM坐标系统在这个区域的一部分。(x的等值线运行精确南北只有沿着中央子午线的区域。在其他地方,他们遵循一个轻微的角度相对于当地的经脉。)

步骤5:定义输出经度网格

下一步是定义一组均匀间隔的网格点的经度覆盖区域内的民主党大约在同一空间分辨率与原始数据集。

首先,您需要确定纬度变化输入民主党(即行之间。30米),向北移动。

rng = R.CellExtentInWorldY;%的米,与p.LengthUnit一致latcrad =函数(latCenter);% latCenter弧度度纬度变化百分比dLat = rad2deg (meridianfwd (rng latcrad,椭球)- latcrad)
dLat = 2.6998 e-04

实际的间距可以圆略定义网格间距用于输出(经度)网格。

gridSpacing = 1/4000;%换句话说,4000样本/学位

设置输出的程度(经度)网格,首先发现的民主党UTM地图坐标。

xCorners = R。XWorldLimits ([1 1 2 2]) ' yCorners = R。YWorldLimits ([1 2 2 1])”
xCorners = 310380 310380 320730 320730 yCorners = 4901880 4916040 4901880 4901880

然后把角落经度。在地图上显示经度角(通过UTM投影)检查结果是合理的。

[latCorners, lonCorners] = projinv (p xCorners yCorners) hCorners = geoshow (latCorners lonCorners,“DisplayType”,“多边形”,“FaceColor”,“没有”,“EdgeColor”,“红色”);
latCorners = 44.2474 44.3748 44.3774 44.2500 lonCorners = -71.3749 -71.3801 -71.2502 -71.2454

接下来,向外圆定义输出经度四边形完全包含民主党和与网格间距的倍数。

latSouth = gridSpacing *地板(min (latCorners) / gridSpacing) lonWest = gridSpacing *地板(min (lonCorners) / gridSpacing) latNorth = gridSpacing *装天花板(max (latCorners) / gridSpacing) lonEast = gridSpacing *装天花板(max (lonCorners) / gridSpacing) qlatlim = [latSouth latNorth);qlonlim = [lonWest lonEast];dlat = 100 * gridSpacing;dlon = 100 * gridSpacing;[latquad, lonquad] = outlinegeoquad (qlatlim、qlonlim dlat, dlon);hquad = geoshow (latquad lonquad,“DisplayType”,“多边形”,“FaceColor”,“没有”,“EdgeColor”,“蓝”);snapnow;
latSouth = 44.2473 lonWest = -71.3803 latNorth lonEast = -71.2452 = 44.3775

最后,构造一个地理为输出网格光栅引用对象。它支持万博1manbetx经度之间的转换和行和列下标。在这种情况下,使用一个世界文件矩阵,W,使网格间距的精确规格。小数点后显示W与更多的通过暂时改变默认的显示格式。

currentFormat =格式;%因为R2021a格式longGW = [gridSpacing 0 lonWest + gridSpacing / 2;0 gridSpacing latSouth + gridSpacing / 2)格式(currentFormat)
-71.380125 W = 0.00025 0 0 0.00025 44.247375
nRows =圆((latNorth - latSouth) / gridSpacing) nCols =圆(wrapTo360 (lonEast - lonWest) / gridSpacing)
nRows = 521 nCols = 540
Rlatlon = georasterref (W (nRows nCols)“细胞”);Rlatlon。GeographicCRS = p.GeographicCRS
Rlatlon = GeographicCellsReference属性:LatitudeLimits: [44.24725 - 44.3775] LongitudeLimits: [-71.38025 - -71.24525] RasterSize: 540年[521]RasterInterpretation:“细胞”ColumnsStartFrom:“南”RowsStartFrom:“西方”CellExtentInLatitude: 1/4000 CellExtentInLongitude: 1/4000 RasterExtentInLatitude: 0.13025 RasterExtentInLongitude: 0.135 XIntrinsicLimits: [0.5 - 540.5] YIntrinsicLimits: [0.5 - 521.5] CoordinateSystemType:“地理”GeographicCRS: [1 x1 geocrs] AngleUnit:“度”

Rlatlon完全定义了每个单元的数量和位置在输出网格。

第六步:每个输出网格点位置映射到UTM x - y

最后,你就可以利用地图投影,将它应用于输出网格中的每个点的位置。首先计算这些点的纬度和经度,存储在二维数组中。

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

然后应用投影每一对经度,UTM数组x - y位置有相同的形状和大小经度数组。

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

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

第七步:重新取样原民主党

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

的值在这个阶段,从经度网格投影到UTM坐标系统映射变得明显:它意味着重新采样可以发生在常规的x - y网格,interp2适用。相反的方法,unprojecting每个(X, Y)点经度,看起来更直观,但会导致不规则数组的点插入——一个更加困难的任务,需要使用更昂贵griddata函数或一些粗糙的等效。

(行,关口)= ndgrid (1: M, 1: N);(X, Y) = intrinsicToWorld (R,关口,行);方法=双线性的;extrapval =南;Zlatlon = interp2 (X, Y, Z, XI,咦,方法,extrapval);

在投影轴使用查看结果geoshow将re-project飞。注意,它填补了蓝色矩形,与纬度和经度。(相比之下,红色矩形轮廓最初的民主党,x和y与UTM)。还要注意NaN-filled区域网格的边缘。这些区域的边界出现轻微起伏、在一个栅格间距,在插值由于舍入效应。把红色四边形和蓝色四边形,以确保他们不被光栅显示。

geoshow (Zlatlon Rlatlon,“DisplayType”,“texturemap”)uistack ([hCorners hquad),“高级”)

学分

MtWashington-ft。研磨(和支持文件)万博1manbetx:

美国地质调查局(USGS) 7.5分钟的数字高程模型(DEM)太。华盛顿四边形,米的海拔高度。http://edc.usgs.gov/s manbetx 845products/elevation/dem.html
有关更多信息,运行:
> >类型MtWashington-ft.txt

另请参阅

||||