自定义表达式

使用说明

自定义表达式栅格运算表示通过自定义方式对多个栅格数据集进行算术运算、条件运算、逻辑运算、函数运算(常用函数、三角函数)以及复合运算,从而实现更复杂多样的栅格分析需求。返回结果栅格数据集,运算结果栅格的像元值是由输入的一个或多个栅格同一位置的像元的值通过代数规则运算得到。

表达式规则

  1. 运算表达式应为一个形如下式的字符串:
    datasets[0]+datasets[1] 其中[0]、[1]等表示按顺序排列的需要进行分析的数据集数组,序号从0开始递增。
  2. 栅格代数运算支持四则运算符”+” 、”-” 、”*” 、”/”、”%” (取余)、条件运算符”>” 、”>=” 、”<” 、”<=” 、”==” 、逻辑运算符”||“(或) 、”&&“(与) 、”!=“(非) 和一些常用数学函数(说明如下表所示)。
函数类型 函数表达式 说明 示例
算数函数 abs(x) 绝对值函数。 abs(datasets[0])
ceil(x) 向上舍入函数,即获得最近的较小整数(如1.8上舍入为2.0,-2.2上舍入为-2.0),其输出值为浮点值。 ceil(datasets[0])
floor(x) 向下舍入函数,即获得最近的较小整数(如1.8下舍入为1.0,-2.2下舍入为-3.0),其输出值为浮点值。 floor(datasets[0])
max(x,y) 最大值函数。 max(datasets[0],datasets[1])
maxN(x,n1,n2,n3,...,nn) 在多个数据集中返回第x大值。 maxN(1,datasets[0],datasets[1],datasets[3])
mean(n1,n2,n3,...,nn) 平均值函数。 mean(datasets[0],datasets[1]……datasets[N])
min(x,y) 最小值函数。 min(datasets[0],datasets[1])
minN(x,n1,n2,n3,...,nn) 在多个数据集中返回第x小值。 minN(1,datasets[0],datasets[1]……datasets[N])
round(x) 四舍五入函数。 round(datasets[0])
variance(n1,n2,n3,...,nn) 方差函数。 variance(datasets[0],datasets[1]……datasets[N])
三角函数 sin(x) 正弦函数 sin(datasets[0])
cos(x) 余弦函数 cos(datasets[0])
tan(x) 正切函数 tan(datasets[0])
asin(x) 反正弦函数 asin(datasets[0])
acos(x) 反余弦函数 acos(datasets[0])
atan(x) 反正切函数 atan(datasets[0])
sinh(x) 双曲正弦函数 sinh(datasets[0])
cosh(x) 双曲余弦函数 cosh(datasets[0])
tanh(x) 双曲正切函数 tanh(datasets[0])
指数/对数函数 pow(x, y) x 的 y 次方。 pow(datasets[0],3)
sqrt(x) 平方根函数。 sqrt(datasets[0])
ln(x) 取自然对数。 ln(datasets[0])
log(x) 取以10为底的对数。 log(datasets[0])
exp(x) 以自然常数 e 为底的指数函数。 exp(datasets[0])
exp2(x) 以2为底的指数函数。 exp2(datasets[0])
exp10(x) 以10为底的指数函数。 exp10(datasets[0])
其它函数 con(x, y, z) 条件判断函数。x 为条件表达式(或值),y、z 为提取值。如果函数满足条件 x,则提取 y 值,否则提取 z 值。 con(datasets[0],datasets[1],datasets[2])
IsNull(x) 检查表达式是否含无效值,如果datasets为 Null(即无效值)则返回值为1,否则返回值为0。 IsNull(datasets[0])
pick(n1,n2,n3,...,nn) 更新栅格值。将指定的第一个栅格数据集的栅格值作为对应位置,并根据后续输入的栅格数据集的栅格值或输入的数值,给对应位置的栅格赋值,最终生成一个新的栅格数据集。若第一个栅格数据集中栅格值大于N,则该位置返回无值。 Pick(datasets[0],datasets[1],datasets[2]……datasets[N])
  1. 代数运算的表达式中各个函数之间可以嵌套使用,直接用条件运算符计算的栅格结果都为二值(如大于、小于等),即满足条件的用1代替,不满足的用0代替,若想使用其他值来表示满足条件和不满足条件的取值,可以使用条件提取函数Con(,,)。例如:“Con(IsNull(datasets[0] ) ,100,Con(datasets[0] > 100,datasets[0] ,-9999) ) ” ,该表达式的含义是:将第一个栅格数据集的无值栅格变为 100,剩余栅格中,大于100 的,值保持不变,小于等于 100 的,值改成 -9999。
  2. 当某个像元为无值时,该像元参与的代数运算返回值为无值。
  3. 表达式中,运算符连接的操作数可以是一个栅格数据集,也可以是数字或者数学函数。
  4. 数学函数的自变量可以为一个数值,也可以为某个数据集,或者是一个数据集或多个数据集的运算表达式。 但mean和variance函数必须都为数据集。
  5. 表达式必须是没有回车的单行表达式。
  6. 表达式中必须至少含有一个输入栅格数据集。
  7. 在栅格代数运算中任何函数都是大小写不敏感,如:Sin、sIn、SiN都表示sin函数。

参数说明

参数名 默认值 参数释义 参数类型
用于计算的表达式 用于计算的表达式,支持数学运算,比较运算,数学函数等。 String
需要进行分析的数据集数组 需要进行分析的数据集数组,数据可以是点、线、面。 Object