数据库
当咱们在ArcGIS中打开一景遥感影像时,是否是老是在咱们的研究区周围出现咱们并不但愿看见的黑边,这种黑边在咱们作图像分析或排版出图时老是个累赘,今天就教给你们在ArcGIS中轻松去除黑边。函数
影像产生黑边的缘由无外乎在设置无效值时,将无效值设成了0,而影像在导入软件进行渲染时,并无进行黑边的预处理,致使展现时有黑边出现。工具
在ArcMap中打开地图,咱们会发现,黑边区域像元的DN值为0。咱们的第一反应就是将影像中像元DN值为0的部分抹掉。不错,软件就是应用这个原理来工做的。如下提供至少7种方法用于去黑边,由于有的方法里面还有好几种。ui
一、 单个图像属性设置去除 spa
在ArcMap中,每一个图层均可以在其属性中进行符号化设置,黑边是图像中的背景,所以,去除黑边也是在对图层进行符号化时设置。具体步骤以下:3d
(1)右键单击图层,在下拉菜单中选择Properties;code
(2)在打开的图层属性(Layer Properties)对话框中,选择Symbology选项卡;htm
(3)在此选项卡中找到DisplayBackground Value:(R,G,B)可选框,这里勾选上,而后,设置RGB的值均为0,设置颜色显示为Nocolor。blog
二、多个图像属性设置get
或者在影像导入以前,设置ArcMap地图属性。操做过程为,arcmap 菜单 自定义-arcmap选项-栅格-栅格图层-去除背景值,勾选0-0-0.
可是,用这种方式去除黑边只是会改变背景的显示状态,并无对数据自己作任何改变,从新将图层加载进来时,仍会显示黑边。
该工具的原理是将某一数值设置为Nodata(这里咱们把值为0的像元设置为Nodata,其它像元数值保持不变)。该工具只能是对单波段数据进行操做,若是咱们获得的数据是单波段的,那这种方法再合适不过了。
工具位置:ArcToolbox—Spatial Analyst Tools—Conditional—Set Null
参数设置以下:
Inputconditional raster:这里选择的样例数据为Landsat5数据的第5波段;
Expression(optional):写入SQL查询语句,这里将值为零的像元设为Nodata。
Input falseraster or constant value:值不为零的像元数值保持不变,仍为原始像元值。
Output raster:设置输出影像位置。
Copy Raster工具能够对多波段和单波段数据进行操做,固然,该工具不只仅是用来去影像黑边的,它的功能很强大,这里不作过多赘述。咱们来看他是如何去除影像黑边的。
工具位置:ArcToolbox—Data Management Tools—Raster—Raster Dataset—CopyRaster。
参数设置以下:
Input Raster:输入须要去黑边的影像;
Output RasterDataset:设置去黑边后影像的位置;
IgnoreBackground Value:设置要忽略的像元值,这里将像元值为0的抹掉。
其余参数选择默认。
若是你的研究数据中也有0,也就是说部分0值像元为有效像元,不用担忧,Copy Raster工具只会处理周边0值。
四,软件不兼容产生的黑边去除
若是是两种不一样软件产生的影像金字塔也有可能出现黑边,好比,使用erdas生成了边缘为0值影像的金字塔,那么该影像在导入arcgis 中展现时也必定会有黑边现象。这种状况是因为两款软件不兼容产生的,解决办法是将原有金字塔所有删掉,使用arcgis金字塔工具所有从新建立金字塔,就不会出现黑边了。
5、 栅格计算器/Raster Calculator 去除黑边
单波段数据处理起来经常相对容易些,最经常使用的工具就是 栅格计算器/Raster Calculator 了。Raster Calculator 能够经过输入的Python语法的表达式,对当前数据框内的栅格图层进运算。它是个很是实用的栅格数据处理工具,若是你想 Dive In ,点 这里了解 Raster Calculator 的工做原理。
例如这个需求中仅须要一个简单表达式,使用到SetNull函数,以下所示:
其中,表达式是
SetNull("RasterLayer" == 0 , "RasterLayer" )
这样执行工具以后,全部的 0 值变成了 Nodata,完全去了黑边。
6、影像分析去除黑边
多波段数据一样会受到黑边的困扰,并且现实状况每每没有单波段数据那么理想,仅经过一个表达式就能够搞定。例如,咱们经常使用的影像底图数据,一般有三个波段,经过包含RGB三个波段的一组值来表示像元值,例如 (0,255,129)。我通常会根据须要处理的数据量的多少给出不一样的处理方法建议:
一样第一步须要确认黑边值是什么?本例中是 (0,0,0)
ArcMap的 Windows 菜单中有 Image Analysis 。在 Image Analysis 窗口中的 Processing 部分能够对当前数据框中的图层赋予函数或函数链,从而对栅格数据实时处理。
在弹出的窗口中,在 fx行右键插入函数,例如这个需求中会使用到 Mask Function。
设置 Mask Function,(0,0,0) 组合是无效值。为何选择 All 而不是 Any? 这个答案很显见,同时都为0的像元值才是无效值,不然不是,例如(1,255,0)是有效的。或者说各个波段的0值是and关系,而不是or。
这样带有函数的新栅格图层会自动加入 ArcMap 的 TOC,看起来万事大吉,然而这里须要说明下,这个图层须要Export到硬盘上的某个位置,它目前仍是个临时数据,当layer被移除掉,这个结果就不复存在。
因此,最后重要的一步,导出数据。
这种方法,还适用于具备多种无效值的状况。例如,除了(0,0,0) 还包含 (255,255,255) :
咱们须要作的仅是继续增长栅格函数。在 Function Template Editor 中函数们顺序相接,像个环环相接的链条,因此称为 ”函数链/ Function Chain“,咦,好像跑题了。请继续看如何设置无效值:
这样就实现了去掉两组无效值。
7、镶嵌数据集去除黑边
那么摆在你面前的数据不是一个,而是“不少”呢?凡事保证质量以后,重复工做多了以后就同时须要保证效率,那么这种方法适用于“不少”、“大量”……
ArcGIS 的镶嵌数据集是个理想与实用兼备的影像数据管理模型,咱们用它来“处理”大量栅格数据也是个不错的选择。
在地理数据库中建立镶嵌数据集,并将数据添加到镶嵌数据集中,以后:
在镶嵌数据集中可使用工具 Define Mosaic Dataset Nodata 工具,对数据的无效值进行定义。
从而批量去除了无效值。
镶嵌数据集自己也支持栅格函数,相似影像数据窗口中函数模板的设置,一样能够设置函数链来实现一些复杂的要求。
固然,咱们在使用镶嵌数据集的时候,也能够在重建footprint的时候去除无效值。但它只适用于影像边缘值同样的状况下。
使用 Build Footprint 工具执行系统计算获得新的轮廓线。
从新定义轮廓线的方法有:
RADIOMETRY:根据像素值范围来从新定义轮廓线的形状,从而排除无效数据(*辐射法从新计算轮廓线这个小专题能够展开,之后有时间能够详细整理。)
GEOMETRY:将轮廓线的形状从新定义为其原始几何形状
COPY_FROM_SIBLING:在使用全色锐化的栅格类型时,轮廓线将被替换为多光谱项的轮廓线。
设置有效值区域,好比,影像位深是8位,那么设置为将像素值设置为1-255,0黑边自动去除。