裁剪DEM高程数据方法

对DEM高程数据(tif文件)方法较多,现将使用的方法进行总结,内容主要包括三个方面:

1、使用ARCGIS裁剪

2、使用globalmapper裁剪

3、使用MATLAB裁剪

1、使用ARCGIS裁剪

Arcgis将一幅影像裁剪成一幅或多幅,此时可以应用ArcGIS中的工具箱ArcToolbox进行相关裁剪操作,ArcToolbox提供了许多可以应用的工具。

1)裁剪工具提取

总的步骤为:“数据管理工具”——“栅格”——“栅格处理”——"裁剪"工具
①"输出范围"项可以选择一个矢量要素,选择之后下面的最小外包矩形数值将自动填写;
②勾选"使用输入要素裁剪几何(可选)"则不会沿着外包矩形裁剪,而是沿着面要素周长裁剪,面要素以外则变为NoData,更多干货敬请关注:水经注GIS 故此操作会提升像素深度;
③"NoData值(可选)"与"保持裁剪范围(可选)"两项对于一般操作来说不经常用到。

arcgis怎么把dem转高程点_arcgis

2)按矩形提取工具提取

总的步骤为:“空间分析(Spatial Analyst工具)”——“提取分析”——“按矩形提取"工具
此种方法相对容易理解,功能也相对简单,可以提取矩形内的区域或矩形外的区域。但需提前建立一个有关于“面”shapefile的矢量文件,此文件需将在被裁剪的tif文件中进行选择框选裁剪范围,此时的shp就是将被裁剪的范围,但ARCGIS的裁剪工具手动框选存在一定的误差,如果精确裁剪到某一具体的像素值(行或列),此时的裁剪工具相对会体现出精度不足的问题。

arcgis怎么把dem转高程点_arcgis_02

3)按掩膜提取工具提取

总的步骤为"空间分析(Spatial Analyst工具)”——“提取分析”——"按掩膜提取"工具
掩膜在制图中是一种遮盖工具,用于处理要素在显示上的冲突,最典型的应用就是等高线的标注。掩膜可以理解为一种看不见的面要素,它遮挡住了不需要显示的图形。用这个工具可以将影像按面要素周长裁剪。(适用于省界等边界的区分)

arcgis怎么把dem转高程点_图层_03

4)分割栅格工具提取

总的步骤为:“数据管理工具”——“栅格”——“栅格处理”——"分割栅格"工具
这个工具用于将影像分幅输出到一个文件夹里。
分割栅格
①"输出文件夹"与"输出基本名称"中定义输出文件夹与前缀,在输出结果的前缀后会自动加上编号;
②"分割方法"有两种,SIZE_OF_TILE按指定分割后影像的大小分割,选择此项之后需要在"输出栅格的大小(可选)"输入栅格大小,这样末尾可能会有像元数不够的影像,而NUMBER_OF_TILES按照指定的行数和列数平均分割栅格,选择此项后需要在"输出栅格数(可选)"输入行数和列数;
③"重采样技术(可选)"中有三项,NEAREST、BILINEAR、CUBIC复杂程度和计算时间依次上升,但平滑效果也越来越好,可根据需要进行选择。

arcgis怎么把dem转高程点_图层_04

2、使用globalmapper裁剪

globalmapper界面友好,交互性强,对图像进行裁剪,可以大大减少地图容量,提高处理速度及指定范围的数据输出。但裁剪会出现缝隙,精度会打折扣。(注意必须是Geotiff文件,如果不是还需转换)
总体步骤如下:

1、将要裁剪的矢量文件和裁剪区域文件依次导入到GlobalMapper中,如没有矢量数据也可自己用矩形裁剪工具进行框选裁剪范围。
2、先导入矢量文件,然后导入裁剪文件。
3、在GlobalMapper中点击图层控制中心,选择裁剪图层,然后右键裁剪图层,点击缩放到选中图层。
4、在GlobalMapper中选择数字化工具,然后鼠标点击裁剪区域,选中裁剪区域。

arcgis怎么把dem转高程点_数据_05

5、在有了范围后,既可对这个面用【数据工具】进行选择。

arcgis怎么把dem转高程点_数据_06

6、在左侧图层栏中,对要进行裁剪的DDEM进行双击,或右键→选项;

arcgis怎么把dem转高程点_栅格_07

7、在弹出的高程选项界面中,点击裁剪按钮,勾选“裁剪当前选定多边形”选项,点击确定即可完成裁剪。

arcgis怎么把dem转高程点_栅格_08

8、导出数据,自行操作:

arcgis怎么把dem转高程点_arcgis_09

3、使用MATLAB裁剪

对图像(tif格式)进行裁剪函数(TIF文件须是geotiff格式):
 function newpic = croptif(path,lon1,lat1,lon2,lat2)
 % path为图片绝对路径,lon1,lat1为裁剪图片左上角经纬度,lon2,lat2为图右下角经纬度
 [A,R] = geotiffread(path);
 a = (lon1-R.LongitudeLimits(1,1))./R.CellExtentInLongitude+1;
 b = (R.LatitudeLimits(1,2)-lat1)./R.CellExtentInLatitude+1;
 c = (lon2-lon1)./R.CellExtentInLongitude+1;
 d = (lat1-lat2)./R.CellExtentInLatitude+1;
 newpic = imcrop(A,[a b c d]);
 end
 函数使用举例:
 从图中截取规定经纬度范围内的图像,并显示出来,经纬度范围如下:
 左下角经纬度坐标(单位:度):112.928123474, 28.156242371
 左上角经纬度坐标(单位:度):112.928123474, 28.157272339
 右上角经纬度坐标(单位:度):112.929153442, 28.157272339
 右下角经纬度坐标(单位:度):112.929153442, 28.156242371
 调用函数:
 path = ‘D:\study\data\CSUpark.tif’;
 newpic1 = croptif(path,112.928123474,28.157272339,112.929153442,28.156242371);
 imshow(newpic1);