# 无效值设置

栅格数据的每个像元位置都分配一个值,即像元值。当某个像元位置的信息不足或所代表的位置要么没有特征信息时,该位置可设为无效值。需要注意的是,无效值也是栅格数据的一部分,无效但并不代表不存在。

例如,影像数据经常会存在黑边,用户可以通过设置无效值来实现影像去黑边。但这只是基于“显示”的,也就是说,视觉上黑边消失了,实际上那些黑的“无效值”依然存在,只是将其透明显示。

存在黑边的航拍影像图图 去黑边后的航拍影像

MapGIS系统中,无效值具有以下特性:

  • 无效值不是永久的。用户可设置某一像元值为无效值,也可取消设置;
  • 无效值不参与分析计算。所有的分析计算过程中,原始数据为无效值的位置,在结果数据中该位置还是为无效值;
  • 无效值默认为透明,用户也可设置为某一指定颜色显示。

需要注意的是, MapGIS系统中无效值是某一特定的像元值,不同应用场景下其值不同,通常将0作为无效值处理。

MapGIS中,关于对无效值的操作有以下内容:

无效值基本设置:设置或取消栅格数据中的无效值;对无效值进行透明或使用其他颜色显色

有效值转无效值:将栅格中的指定的有效值转化为无效值;

无效值转有效值:将栅格中的无效值转化为指定的有效值。

# 无效值处理规则

在影像裁剪功能中,由于裁剪框大部分是不规则形状,因此需要设定一个无效值来填充结果背景。但在实际应用中,栅格数据像元类型大部分为8位无符号,且很大情况下是没有无效值的,这就需要指定一个无效值作为裁剪结果的无效值,但由于8位无符号数据范围为【0,255】,原始影像可能在此值域范围内都为有效,这导致影像裁剪结果的一些有效值部分变为了无效值,导致结果不正确。

针对MapGIS 10栅格裁剪功能,MapGIS 10提供了一套解决方案:

1. 源数据有无效值,则裁剪结果影像沿用原数据的无效值,且裁剪结果影像的像元类型保持和源数据一致;

2. 源数据没有无效值,且裁剪区域为不规则区。对于8位无符号、8位有符号、16无符号、16位有符号数据,结果数据类型自动增大一级(8位变为16位;16为变为32位);对于32位无符号、32位有符号、32位浮点、64位浮点数据,结果影像数据类型不变,采用此数据类型的最值作为裁剪结果的无效值;

3. 源数据没有无效值,且裁剪区域矩形,裁剪结果影像不设置无效值且像元类型保存和源数据一样;

4. 如果函数传入了无效值参数,则不论何种情况,均采样传入的无效值参数作为裁剪结果的无效值。

# 无效值基本设置

# 功能说明

为了更好地显示和分析栅格数据,可以将栅格中无用或有干扰的像元值设置为无效值,避免其对栅格的显示或分析带来影响。

MapGIS中,提供了无效值设置功能,您可以选择栅格中需要“屏蔽”掉的像元值,将其替换为无效值。显示具有无效值(NullVal)的栅格时,MapGIS中,可将NullVal值设置为某个颜色或无颜色,系统默认为透明显示。

# 操作说明

1. 在工作空间内添加要设置无效值的栅格图层,并激活为当前编辑状态;

2. 在“栅格编辑”菜单中,选择“无效值设置”下的“无效值设置”,弹出下图所示对话框;

也可以点击栅格编辑工具条上的“无效值设置”按钮激活该功能。

(1)无效值设置(当前编辑图层)

  • 【设置无效值】:选择“设置无效值”项,在“无效值”中填写需要被替换成无效值的像元值。也可单击“默认值(M)”按钮,系统会自动计算并提取栅格中最适宜的一个值作为无效值;
  • 【取消无效值】:选择“取消无效值”项,则取消设置的无效值。取消无效值后,此部分数据会正常显示,并参与分析操作。

(2)背景颜色设置(地图视图)

  • 【背景颜色】:可设置地图视图的显示背景色;

(3)无效值颜色设置(当前编辑及可见栅格图层)

  • 【无效值颜色】:选择“无效值颜色”项,可在下拉框的颜色表中选择颜色,也可以在RGB的输入框中,输入合成无效值颜色的RGB值。
  • 【无效值透明】:选择“无效值透明”项,则无效值为透明显示。
  • 【同步设置所有可见的栅格图层】:该对话框中的设置会应用到所有的可见的栅格图层中,实现多幅栅格数据同时设置无效值。

3. 单击"取消",取消本次无效值设置操作;单击“设置”,完成无效值的参数设置。

如下图,是将影像黑色的背景值“0”设为无效值后,和无效值透明显示的效果:

提示:

在栅格图层的属性页中,也可以对栅格数据无效值的颜色进行简单、快速的设置,但此信息不会保存到数据,只能通过mapx保存。

# 有效值转无效值

与栅格无效值设置类似,可以将对数据显示或分析产生影响的有效像元设置为无效值。与“栅格无效值设置”不同的是,有效值转无效值可以进行批量的、有额外条件控制的转换,并生成新的栅格图层。

以下是无效值转换为有效值的具体操作说明。

# 操作说明

1. 启动“无效值设置”下的“有效值转化为无效值”命令,系统弹出“有效值转化为无效值”对话框,如下图所示:

有效值转为无效值

2. 选择数据和要处理的波段。用户可以单击“选择数据”输入框的下拉箭头,直接选择已经在工作空间图层列表中添加的栅格图层;另外,用户还可以单击“打开文件”按钮,打开其他位置的栅格数据;

在“选择波段”输入框中,系统默认取当前地图视图里第一个可见的栅格数据;若栅格数据有多个波段组成,用户也可单击输入框和的下拉箭头,选择需要处理的特定的波段。

3. 设置转换条件。通过【条件编辑】按钮输入将有效值转换为无效值的条件。例如,输入条件:A<1000,即将值小于1000的像元值转化为无效值。

4. 设置像元替换方式。系统对于不满足条件的像元提供了三种处理方式:

  • 【保持原始数据】:将不满足条件的像元,直接保持原始数据不变。
  • 【替换为指定值】:将不满足条件的像元直接替换为一指定的值,用户可自己输入该指定值。
  • 【替换为指定数据层的对应像元值】:将输入栅格数据中的不满足条件的像元替换为另一数据层中与之对应的像元值,要求替换数据层与输入数据层具有相同的地理范围和网格分辨率。

5. 设置结果文件名和保存路径。另外,勾选“添加到地图文档”,结果数据会直接添加到当前地图文档中。点击"确定"执行操作,点击"取消"则取消当前操作。

以下是按条件“A<1000,[保持原始数据]”转换的前后结果对比图:

提示:

如果输入的转换条件有误,在单击"确定"执行操作时,系统会提示表达式错误。

# 无效值转有效值

无效值转有效值是将栅格中包含的所有无效值转化为指定的有效值,是有效值转无效值的逆过程。

MapGIS提供了三种无效值转为指定有效值的方式,在以下的操作过程中,将对无效值到有效值的转化做详细的介绍。

# 操作说明

1. 启动“无效值设置”下的“无效值转化为有效值”命令,系统弹出无效值转换为有效值对话框,如图所示:

2. 选择数据和要处理的波段。用户可以单击“选择数据”输入框的下拉箭头,直接选择已经在工作空间图层列表中添加的栅格图层;另外,用户还可以单击“打开文件”按钮,打开其他位置的栅格数据;

在“选择波段”输入框中,系统默认取当前地图视图里第一个可见的栅格数据;若栅格数据有多个波段组成,用户也可单击输入框和的下拉箭头,选择需要处理的特定的波段。

3. 选择无效值转换为有效值的替换方式:

  • 【替换为指定值】:将输入栅格数据中的无效值全部替换为指定的值,栅格数据原有的有效值则保持不变。
  • 【替换为指定数据层的对应像元值】:将输入栅格数据中的无效值替换为另一栅格数据中与之对应的像元值,要求替换数据层与输入数据层具有相同的地理范围和网格分辨率。
  • 【无效点控制插值】:利用插值算法,根据相邻点像元值,计算无效值最终结果。系统提供全部未知点领域均插化和未知点控制加权插值两种方式。
  • 【全部未知点领域均插化】:采取系统默认的方式将全部的未知点进行均匀插值的方法。
  • 【未知点控制加权插值】:通过指定未知点进行插值时的搜索网格单元数和要求有效象限(坐标象限)数来插值。选择该插值方式后,“插值设置”中的选项会被激活,用户在此编辑插值的“搜索网格单元数”和“有效象限数”。该方法是一种有偏重的插值方法。

4. 设置结果文件名和保存路径。点击"确定"执行操作,点击"取消"则取消当前操作。

无效值转换为有效值结果如下图: