在我们从事的项目工作中,通常会根据研究需要对研究区域的栅格数据(如遥感影像)进行不规则裁剪。在ArcGIS中利用不规则矢量多边形对栅格数据进行裁切主要有两种方法: 空间分析中的掩膜提取和栅格处理中的裁剪。
工具/原料
计算机
ArcGIS
方法/步骤一
1、空间分析中的掩膜提取 在ArcGIS中,空间分析中的掩膜提取是通过ArcToolbox->SpatialAnalyst Tools->Extraction->ExtractbyMask实现的。在Extractby Mask对话框中设置好输入输出参数以后,直接点击OK即可得到掩膜后的栅格数据。然而看似简单的过程实则包含了几个比较棘手的问题。
2、1.1错位重叠 裁切前后两个栅格的像元并不一定是完全重叠的,有可能错位,也就是说对应像元的中心点不是一个点,如下图1所示。这时裁切后像元的值可能是裁切前相邻像元的值,所以对应值就可能不一致,尤其在高程变化比较大的地方表现得更为明显。 若想让裁切前后的每个像元都完全重叠,可在裁切界面的EnvironmentSettings里设置snapraster成裁切前的数据即可。
3、1.2PixelDepth变化 用不规则矢量多边形裁切栅格数据时,ExtractbyMask对话框中没有提供设置Nodata的选项,这导致有时会出现裁剪后的pixel depth由原来的8bit变成了16bit(如下图2所示)。 原因为Unsigned8 bit栅格的值的范围是0~255,当用不规则polygon裁切时,为了保留mask的准确的形状,系统会在polygon外的部分生成nodata区域,而nodata在栅格里是以某个极大值存储的(一般是65535)。当裁切部分的值已经占满0~255的所有值时,nodata的值只能是255以外的某个值了,系统自动会将栅格改为Unsigned 16bit,导致数据量倍增。 解决方法为在arctoolbox中使用栅格计算器工具,运用setnull命令将选定(个数最少的那类象元值)的值(如0值)设为nodata,然后再裁剪。
4、1.补朱锚卦3黑边处理 在栅格数据中,除了符合比特深度(Pixel Depth)的值之外,用于标记此处No颊俄岿髭data的值----就是空值。产生空值的原因有很多种,有可能是在数据采集的时候,传感器没有记录下某个位置的反射值,或者是由于噪声。然而最常见的则是对卫星影像做了地理配准后,影像的覆盖范围变为菱形/平行四边形所造成的边角是黑色的情况。 用Identify工具查看黑边所示的像元值,通常会发现用0或者极小值来标记Nodata,而在ArcGIS中0值是一个有效值而不是空值。出于这个原因,在渲染这类影像的时候,ArcGIS会将0值渲染成黑色,而不是作为空值处理成透明色。那么我们如何消除这个黑边的问题呢? 在ArcGIS中,我们可以在图层属性Symbology页下看到这样的一个设置:DisplayBackground value…as…。通过输入0,0,0,以及将颜色设置成透明,就可以达到让黑边消失的渲染效果。 以上黑边处理是对单一的栅格数据,在实际应用中有时会遇到MosaicDataset这种数据模型,ArcGIS中提供了一个解决Mosaic Dataset中黑边问题的工具DefineMosaic DatasetNoData。在工具中可以对每一个波段单独设置空值,完成后也可以得到理想的黑边变透明的效果。 然而以上处理并没有从根本上裁切掉那些黑边,要从根本上解决问题可以通过导出的方式将黑边设置为空。具体操作就是在Export Data的时候,在NoData的选项中输入0,0,0(如下图)。看似问题得到了解决,然而这种做法会将影像中那些本来就是0值的像元也抹掉,所以这个办法要慎用。 那么目前有没有既有效又彻底的方法来解决不规则矢量多边形裁切栅格数据时出现的上述问题呢,答案依然是裁剪,接下来介绍栅格处理中的裁剪方法。
方法/步骤2
1、栅格处理中的裁剪 在ArcGIS中,空间分析中的掩膜提取是通过ArcToo盟敢势袂lbox->Data Manageme荏鱿胫协ntTools->Raster->Raster Processing->Clip实现的。在Clip对话框中输入待裁切的栅格数据以及矢量多边形数据等参数,直接点击OK即可完成裁剪。通常输入矢量多边形时,系统会自动获取该矢量多边形的最小外包矩形的范围作为实际裁剪的区域,而我们只需要勾选Use InputFeaturesforCliping Geometry(Optional)选项(如下图所示)就可以保证裁剪出来的栅格区域就是我们真正想要的。同时还需要注意的是,Clip对话框中同样还提供了Nodata Value选项,我们可以将那些需要设置为空值的像元过滤掉。 通过对比以上两种矢量裁切方法,我们发现栅格处理中的裁剪方法既简单又有效。对于习惯用Extractionby Mask方法的用户来说,与其舍近求远不如直接用DataManagementTool中的Clip工具。