ArcGIS栅格裁剪应用很广泛,但是很多用户会遇到裁剪前后颜色变化很大,那么如何保使裁剪前后的栅格颜色保持一致呢?

以下从两部分说明:

主要介绍ArcGIS栅格裁剪工具clip、Extract by Mask;

裁剪前后的栅格颜色如何保持一致;


(一)ArcGIS中栅格裁剪工具:clip、Extract by Mask

具体工具位于:

Toolboxes\System Toolboxes\Data ManagementTools.tbx\Raster\Raster Processing\Clip

Toolboxes\System Toolboxes\Spatial AnalystTools.tbx\Extraction\Extract by Mask


(1)clip

双击Clip工具,在Clip对话框中输入待裁切的栅格数据以及矢量多边形数据等参数,直接点击OK即可完成裁剪。通常输入矢量多边形时,系统会自动获取该矢量多边形的最小外包矩形的范围作为实际裁剪的区域,而我们只需要勾选Use Input Features for Cliping Geometry (Optional)选项(如下图所示)就可以保证裁剪出来的栅格区域就是我们真正想要的。同时还需要注意的是,Clip对话框中同样还提供了Nodata Value选项,我们可以将那些需要设置为空值的像元过滤掉。

 

java gdal 裁剪栅格 arcgis对栅格数据进行裁剪_栅格



通常裁剪多边形和原始像元值不能完全重叠,如下图红色的面所示,红色的面为裁剪矩形,当没有勾选Use Input Features for Cliping Geometry(Optional),系统会自动获取该矢量多边形的最小外包矩形的范围作为实际裁剪的区域,如黄色区域所示。勾选Use Input Features for Cliping Geometry(Optional),系统则会按矩形内的像元值输出,如蓝色区域所示。


java gdal 裁剪栅格 arcgis对栅格数据进行裁剪_Extract by Mask_02

java gdal 裁剪栅格 arcgis对栅格数据进行裁剪_栅格裁剪 clip_03


也可以在环境设置里边设置snap raster为原始dem,输出的裁剪结果为上图中黄色区域的范围


(2)Extract by Mask

Extract by Mask:按掩膜提取,按指定的栅格数据或者矢量数据的形状提取像元。

 

java gdal 裁剪栅格 arcgis对栅格数据进行裁剪_Extract by Mask_04


 


可能会有人注意到,使用Clip工具,在工具的界面中会有设置Nodata值的位置,而Extract byMask中则没有。再看得到的结果呢,对于一个8bit的栅格数据,clip的结果仍然是8bit,而extract的结果就会变成16bit。原因就是执行clip时,不管mask是什么形状,工具中只会使用到envelope的坐标,这样得到的结果就是一个标准的矩形。而使用extract工具时,为了保留mask的准确的形状,在envelope内mask外的值需要标记为NoData,Unsigned8bit栅格的值的范围是0~255,nodata的值只能是255以外的某个值了,导致的结果就是会使用一个16bit的栅格来记录这个裁剪的结果。


解决方法只能牺牲掉裁切的部分中个数最少的那类象元值做nodata了。用arctoolbox里的set null工具,将选定(个数最少的那类象元值)的值设为nodata,然后再裁剪。


(二)通常裁剪后,栅格颜色和原始的颜色发生变化,如何保持裁剪前后的栅格颜色保持一致呢?


使用clip工具或使用Extract by Mask,裁剪后的栅格颜色与原始的不同,有两个原因,首先是裁剪后像元值发生变化导致;其次是拉伸方式和统计值不同导致。只要保证像元值和拉伸方式完全相同,问题即可解决。

(1)在使用裁剪时,在环境变量里设置Snap Raster为原始DEM,保证裁剪后的像元值和原始DEM一致。

 

java gdal 裁剪栅格 arcgis对栅格数据进行裁剪_栅格_05


(2)将裁剪后的DEM和裁剪前的DEM使用相同的拉伸方式和统计值

在DEM图层右键,打开symbology,使用standard deviation,统计值选择自定义,然后将当前statics使用save as XML导出为display.stat.xml。

 

java gdal 裁剪栅格 arcgis对栅格数据进行裁剪_Extract by Mask_06



在裁剪后的图层上右键,打开symbology,使用standard deviation,统计值选择自定义,然后使用LoadXML导入刚才生成的原始DEM的统计值display.stat.xml。之后,对比两幅DEM,颜色上完全相同。

 

java gdal 裁剪栅格 arcgis对栅格数据进行裁剪_java gdal 裁剪栅格_07


之后,对比两幅DEM,颜色上完全相同。

栅格影像数据此方法也同样试用。