RasterExpressionEvaluator
计算栅格或栅格对中每个单元格上的表达式,包括代数运算和条件语句。
典型的使用
- 在栅格或对栅格进行计算
- 处理图像
- 结合栅格
- 分类栅格
它是如何工作的?
RasterExpressionEvaluator接收光栅特性并使用单元格值计算已定义的表达式,然后使用计算的值输出新的光栅特性。
输入模式-一个或两个栅格
变压器有两种模式 -一个光栅和两个栅格。
一个光栅模式提供一个单一的输入端口一个端口。在这种模式下,表达式将完全在一个光栅内求值。
两个栅格模式提供两个输入端口 -A和B。在这种模式下,表达式可以使用来自相同维度(相同行数和列数)的两个栅格的单元格值。为地理参考栅格的位置信息不考虑在内。输入光栅特征的个数可以是:
- 如果一个光栅(一个) -一个或多个一个光栅,没有乙位图。
- 如果两个栅格(A和B)- - -一个一个光栅,一个或多个乙位图。单一一个输入将与每一个配对乙输入。
在同一个表达式中使用所有乐队必须具有相同的无数据值,或者根本没有无数据值。没有带可以有一个调色板。
在两个光栅模式下,如果一个表达式同时引用了A和B的输入栅格特性,那么输出栅格将同时具有A和B的所有属性。如果两个输入特性上存在相同的属性,则首选特性B的属性值。
当只对一个输入进行操作时(例如,in)一个光栅如果表达式只引用输入A),则特征属性和栅格属性将保持不变。
表达式
表达式定义在带式(S)表。表中的每一行对应于一个频段在产量光栅,按顺序排列——即,第一行产生频带0,第二行产生频带1,以此类推。该口译类型每个输出带也在这里指定。
表达式可以是简单的常数值运算,也可以是简单的算术运算。该算术编辑器 - 光栅式可透过表达省略号(…)按钮以帮助构造表达式。
表达式是区分大小写的。
注意,在不同数据类型之间进行转换时,将使用有界强制转换。因此,当计算值不符合指定的目标解释时,相应的目标值将被设置为目标数据类型中可能的最小值或最大值。例如,如果将值300转换为无符号的8位整数带,那么它将变成255(该解释类型的最大可用值)。
无数据和零(0)值:表情评估往往涉及到改变解释类型的值,并且有时会导致不可预测的行为特别是在零(0)的情况。当定义你的表达,最好的做法是十进制形式指定为零0.0免得被误解为无数据。
表达式语法
意味着…… |
|
---|---|
|| | 或 |
&& | 和 |
= = | 平等的 |
!= | 不平等的 |
< | 不到 |
> | 大于 |
斧头] | 光栅特性A的x波段 |
B [X] | 光栅特征B的x波段 |
频带从零开始计数(因此,三频带光栅是[0]、[1]和[2])。
语句可以是简单,因为这些:
255 | 将当前单元格的值设置为255。 |
一个[0]+ 1 | 将当前单元格的值设置为光栅A、带0和加1。 |
“if”语句允许根据表单中的条件设置值if(条件,通过值,失败值):
if (A[0] < 255, 200, 255) | 如果光栅A,波段0小于255,则将当前单元格设置为200,否则保留为255。 |
如果(A[0]<50 || A[1]<50 || A[2]<50, 0,255) | 如果栅格A,带零小于50或带一个小于50或频带中的两个是小于50,则当前小区设置为0,否则将其设置为255。 |
两个光栅特性中的波段可以在声明中引用:
如果([0]!=B[0] && A[0]<255, 0, A[0]) | 如果光栅的带零不等于栅格B波段零,和光栅的带零小于255,则当前小区设置为0,否则将其设置为光栅的带零的值。 |
标准的数学运算符是允许的:
如果(A [0] - B [0] == 255,0,A [0] / 5) | 如果光栅的带零减去栅格B波段零等于255,则当前小区设置为0,否则将其设置为光栅的带零的除以五的值。 |
可以使用@Value和A:或B:引用属性名:
[0]* @ value (myattr) | 将光栅A上的myattr属性乘到带0的光栅上。 |
例子
表达 |
结果 |
---|---|
255-A [0] | 反转的8位带。对于一个24位的RGB图像,重复A [1]和A [2]以反转的完整图像。重复以上步骤,A [3]太多,如果它是一个32位的RGBA图像。 |
如果((A[0]+A[1]+A[2])==0, 255, A[0]) | 在RGB图像中将黑色值转换为白色。对一个[1]和一个[2]进行重复,以颠倒黑白得到完整的图像。 |
A [0] * 1.5 | 增加RGB图像中红色带的亮度。重复使用[1]和[2]来照亮整个图像 |
@sqrt((A [0] * A [0])+(B [0] * B [0])) | 将两个光栅单元组合在一起。另一种方法是求平均值:(A [0] + B [0])/ 2) |
如果([0]= = 0,0,[0]/ @ value (_height + 1)) | 将栅格DEM单元划分为组,其中组大小由_height属性定义 |
在本例中,我们将把彩色光栅转换为灰度。注意,原来的光栅有三个波段——红、绿、蓝。来自所有波段的值将用于计算单个输出值。
每个单元上的每个波段的值将用于计算。
光栅被路由到光栅表达式求值程序中。
在参数对话框中,我们定义了要计算并且存储在一个单独的灰色频带的单个表达式。该解释被设置为Gray8,表达式引用来自所有三个传入频带的单元格值。(这个公式使用了通常推荐的颜色到灰度的转换值。)
乐队在零(0)开始编号,等等一个[0]指的是第一带(红),A [1]表示第二个波段(绿色),和A2]指第三个波段(蓝色)。
输出栅格特征仅包含一个带,在参数指定的GRAY8频带。
表达的评价结果如单元格值输出。
在本例中,我们将使用一个光栅表现评估器来隔离位于主动脉150米以下的特定分区类型的土地。
我们先从两个数值栅格。第一表示分区,一个整数范围从1至10,其中,每个值表示任意一个区域类型。这将是我们的“一个”光栅。
我们对3号区域感兴趣。
第二个栅格表示沿主干道150米的缓冲区。单元格的值为0或1,其中1表示缓冲区内的像素,0表示缓冲区外的像素。这是我们的"乙”光栅。
这对栅格被路由到RasterExpressionEvaluator - 请注意,模式:两个栅格必须连接第二光栅的参数的对话框之前被选择,以使(和暴露)的B输入端口。
在parameters对话框中,我们创建一个表达式。这将导致输出一个单波段数字光栅。一个解释必须指定类型 -Int32选择(32位整数)作为这些值的适当解释类型。
从两个表达的引用细胞一个和乙栅格,并且使用这种形式:
if(条件,通过值,失败值)
如果来自栅格A(区域)的细胞值等于3,来自栅格B(动脉缓冲区)的细胞值等于1,则输出细胞值3。否则,将单元格值设置为0。
注意,0以十进制形式指定为0.0(避免误解为无数据)。
任何位于3区和动脉缓冲带内的细胞输出值为3,其他所有细胞输出值为0。
使用笔记
- 若要在两个栅格(单元格1 <运算符>单元格2)之间执行基本计算,请考虑使用RasterCellValueCalculator。
- 若要在一个光栅单元格和数值之间执行基本计算,请考虑使用RasterSingularCellValueCalculator。
- 要组合栅格,混合部分重叠的边缘,考虑使用RasterMosaicker。
- 方法可设置无数据值RasterBandNodataSetter或用RasterBandNodataRemover。
- 调色板可以使用来解决RasterPaletteResolver或使用RasterPaletteRemover。
选择一个光栅变压器
FME有一个广泛的选择变压器工作光栅数据。它们通常可以分类为使用整个栅格、带、单元格或调色板,以及那些设计用于工作流控制或将栅格与向量数据相结合的单元格。亚搏在线
有关光栅几何和属性的信息,请参见位图(IFMERaster)。
使用位图
RasterCellOriginSetter | 设置栅格的细胞来源。 |
对栅格 | 应用卷积滤镜(有时称为核心或镜片)以栅格化特征并输出结果。 |
RasterExpressionEvaluator | 计算栅格或栅格对中每个单元格上的表达式,包括代数运算和条件语句。 |
RasterExtentsCoercer | 将输入光栅特征的几何图形替换为覆盖光栅范围的多边形。 |
RasterGCPExtractor | 提取坐标系统,并从光栅特征地面控制点(GCP)并暴露它们作为属性。 |
RasterGCPSetter | 集与指定列(像素)的光栅的地面控制点(GCP),行(线),X坐标,Y坐标和Z坐标。 |
RasterGeoreferencer | 使用指定的参数对光栅进行地理识别。 |
RasterHillshader | 生成阴影效果,用于地形可视化。 |
RasterInterpretationCoercer | 改变对输入要素的光栅几何结构的带的底层的解释,使用指定的转换选项。 例如,与解释(UINT16,GRAY8,和Real64)的三个频带的输入光栅特征可以被转换为栅格特征与解释的三个频带(Red8,Green8和Blue8)或解释的四个频带(Red16,Green16,Blue16和Alpha16)在单个操作中。 |
RasterMosaicker | 将多个光栅功能合并到单个光栅功能中。 |
RasterPropertyExtractor | 提取栅格要素的几何性质,并公开他们的属性。 |
RasterPyramider | 重新采样栅格以多种分辨率的基础上,无论是数水平或最小输出栅格的尺寸。 |
RasterResampler | 重新采样栅格,基于指定输出尺寸,细胞大小在地面单元,或原始的百分比,并进行内插新的单元值。 |
RasterRotationApplier | 施加输入栅格属性到光栅属性和数据值的其余部分的光栅的旋转角度。 期望输入是一个非零旋转角度的光栅,期望输出是一个旋转角度为0.0的旋转光栅。预期输入光栅属性将被修改,以符合旋转给定角度的光栅的输出光栅属性。 应用旋转角度主要是为了与其他的处理和作家不能处理的旋转角度的兼容性进行。 |
RasterSubsetter | 使用像素边界而不是地面坐标剪辑光栅特性,并可选地在周边添加单元格。 |
RasterTiler | 通过指定单元格/像素的平铺大小或平铺数量,将每个输入光栅分割为一系列平铺。 |
RasterToPolygonCoercer | 根据输入光栅特性创建多边形。对于输入光栅中具有相同值的像素的每个相邻区域输出一个多边形。 |
WebMapTiler | 创建一系列可以通过Web制图应用程序,如必应地图™,谷歌地图™或Web的地图图块服务可以利用图像瓦片。这是通过重采样光栅各种不同的分辨率,然后将它们分割成瓦片来完成。 |
与乐队合作
RasterBandAdder | 添加一个新的乐队为栅格功能。 |
RasterBandCombiner | 将巧合的光栅特性合并到单个输出光栅特性中,保留并附加所有波段。 |
RasterBandInterpretationCoercer | 改变个别光栅波段的解释类型,必要时转换单元格值。 |
RasterBandKeeper | 去除栅格功能的所有未选择的频段。 |
RasterBandMinMaxExtractor | 从提取栅格功能的最小和最大带值,调色板键和调色板值,并将它们添加到列表属性。 |
RasterBandNameSetter | 在光栅上设置选定波段的波段名称,使光栅内容比波段编号更易于理解。 |
RasterBandNodataRemover | 从光栅特性的选定频带中移除现有的nodata标识符。以前等于nodata值的任何值都被认为是有效数据。 |
RasterBandNodataSetter | 它设置在一个栅格要素的选择波段新的无数据值。 |
RasterBandOrderer | 指定一个栅格波段的要求的顺序。频带根据输入频带索引重新排序。 |
RasterBandPropertyExtractor | 提取光栅特性的带和调色板属性,并将它们作为属性公开。 |
RasterBandRemover | 去除栅格功能的任何选择的波段。 |
RasterBandSeparator | 中隔离带或独特条带和调色板的组合,并将其输出或者各个栅格特征或含有全部组合一个单一的新栅格要素。 |
RasterStatisticsCalculator | 计算栅格波段的统计数据,并增加了结果的属性。 |
处理细胞
RasterAspectCalculator | 计算栅格的每个小区的方面(斜率的方向)。方面,在从0到360度测得的,顺时针方向从北。 |
RasterCellCoercer | 为栅格中的每个单元格创建单独的点或多边形,可以选择提取带值作为z坐标或属性。 |
RasterCellValueCalculator | 对一对栅格的单元格值计算基本算术、最小、最大或平均操作。 |
RasterCellValueReplacer | 用一个新的单值替换光栅中的一个带值范围。 |
RasterCellValueRounder | 舍入光栅单元格值。 |
RasterSingularCellValueCalculator | 关于对数值的栅格单元格值执行基本的算术运算。 |
RasterSlopeCalculator | 计算光栅中每个单元的斜率(z的最大变化率)。 |
使用调色板
RasterPaletteAdder | 创建从属性的调色板,并将此调色板上的光栅的所有选择的波段。 |
RasterPaletteExtractor | 上创建一个光栅的现有的调色板的字符串表示,并将其保存到一个属性。 |
RasterPaletteGenerator | 从光栅的选定频带生成调色板。输出光栅将用带有调色板的新波段替换所选波段。 |
RasterPaletteInterpretationCoercer | 改变光栅调色板的解释类型。 |
RasterPaletteNodataSetter | 标识相匹配的栅格波段的无数据值,并将它的值调色板关键。 |
RasterPaletteRemover | 从光栅特性中移除选定的调色板。 |
RasterPaletteResolver | 解析光栅上的调色板,方法是将单元格值替换为对应的调色板值。带有多个组件(如RGB)的调色板值被分解,单个值被分配给多个新添加的波段。 |
亚搏在线工作流控制
RasterCheckpointer | 设置在这迫使先前处理立即发生的光栅处理一个检查点。一旦完成,就保存当前状态到磁盘。 |
RasterConsumer | 从光栅几何图形中请求平铺,但不对平铺执行实际操作。 |
RasterExtractor | 序列化功能到基于所选作家格式的Blob属性的几何形状。 |
RasterNumericCreator | 创建一个特征与一个数字值指定的大小的光栅,并将其发送到工作区中进行处理。它是一个用于创建与用户指定的宽度和高度的非常大的图像是有用的。 |
RasterReplacer | 将特性的几何图形替换为Blob属性中包含的几何图形。按选定的光栅格式对blob进行解码。 |
RasterRGBCreator | 创建一个特征与RGB值的指定大小的光栅,并将其发送到工作区中进行处理。 |
RasterSelector | 选择特定的频段和后续变压器操作的光栅的调色板。 |
向量和栅格
ImageRasterizer | 创建的矢量或点云输入特征的光栅表示,使用fme_color属性在固体背景填充为矢量要素。点云可使用它们的颜色或强度分量被呈现。 |
NumericRasterizer | 将输入点、线和多边形特性绘制到背景值填充的数字光栅上。输入矢量特征的Z坐标用于生成像素值。没有Z坐标的特征将被丢弃。 |
MapnikRasterizer | 生成从输入矢量和光栅特征的光栅,具有过符号和标记精细控制,使用Mapnik的工具包。 |
PointOnRasterValueExtractor | 从位于一个或多个输入点的光栅中提取频带和调色板值,并将它们设置为特性的属性。 |
VectorOnRasterOverlayer | 光栅化矢量或点云特征到现有栅格。对于矢量要素的fme_color属性集的像素颜色,并且点云可使用它们的颜色或强度分量被呈现。 |
配置
输入端口
栅格功能,以评估对表达式。调色板不支持。
该乙输入端口仅在以下情况下公开模式:两个栅格当前选择。
输出端口
光栅特征,其中波段定义和值计算根据参数的选择。每个输入光栅输出一个光栅一个光栅模式,并且对于每个A / B对在两个光栅模式。
非光栅的特征将被路由到<拒绝>端口,以及无效栅格。
被拒绝的特性将具有fme_rejection_code属性具有以下值之一:
INVALID_GEOMETRY_TYPE
INVALID_A_RASTER_NO_BANDS
INVALID_B_RASTER_NO_BANDS
INVALID_A_RASTER_MISSING_BAND
INVALID_B_RASTER_MISSING_BAND
MISSING_A_RASTER_MISSING_ATTRIBUTES
MISSING_B_RASTER_MISSING_ATTRIBUTES
EXTRA_A_RASTER_HAS_PALETTE
EXTRA_B_RASTER_HAS_PALETTE
参数
模式 | 此参数指定允许多少类型的输入特性。 一个光栅:只有一个允许输入特性。 两个位图:A和B允许输入特性。 |
集团 | 如果有任何集团属性被给出,然后每个组将被独立对待。这允许单个变压器对多个变压器对进行操作一个年代和乙秒。请注意,这个参数是不适用的时候模式是一个光栅;在这种情况下,每个光栅都是单独考虑的,没有分组。 |
此表是用来指定如何计算和解释在输出栅格的一个或多个频段。
表中的每一行代表在输出光栅不同的带,以连续的顺序。
解释 | 定义每个输出带的解读类型。 保存:如果所有输入波段共享相同的解释,输出带将保持这种解释。如果输入带不共享相同的解释,保存是相同的汽车。 汽车:输出解释将根据用于执行计算的数据类型自动确定。 可替代地,解释可以被指定为任何以下的:
|
表达 | 定义要计算的表达式。该算术编辑器 - 光栅式可以通过省略号(...)按钮进行访问,以帮助创建表达式。 此表达式的结果将存储在输出光栅上的相应频带中。 |
编辑变压器参数
使用一组菜单选项,可以通过引用工作区中的其他元素来分配transformer参数。更高级的功能,例如高级编辑器和算术编辑器,也可以在一些转换器中使用。要访问这些选项的菜单,请单击在可适用的参数旁边。有关更多信息,请参见变压器参数菜单选项。
定义值
有几种方法来定义一个变压器使用的值。最简单的是简单地在一个值或字符串,其可包括各种类型,如属性引用,数学和字符串函数,和工作空间参数的函数类型。有许多的工具和快捷方式,可以帮助构建值,一般可从邻近值字段的下拉上下文菜单。
使用文本编辑器
文本编辑器提供了一种方便的方法来构造来自各种数据源(如属性、参数和常量)的文本字符串(包括正则表达式),其中直接在参数中使用结果。
使用算术编辑器
算术编辑器提供了一个方便的方法来构造从各种数据源,如属性,参数和特征函数,其中结果被直接使用的参数内的数学表达式。
有条件的值
根据通过或失败的一个或多个测试条件设置值。
内容
表达式和字符串可以包括多个功能,字符,参数,和更多 - 编辑是否直接在参数输入或构造使用一个。
参考
加工行为 |
|
特点控股 |
是的 |
依赖关系 | 没有一个 |
FME许可级别 | FME专业版及以上 |
别名 | |
历史 | |
类别 |
FME社亚搏国际在线官网区
该FME社区是为亚搏国际在线官网演示,入门指南,文章,FAQ,以及更多的地方。解答您的问题,向其他用户学习,并建议,投票,并在新的功能注释。
搜索有关RasterExpressionEvaluator所有结果在FME社区。亚搏国际在线官网
例子可能包含在公开政府执照下被许可的信息-温哥华