执行栅格代数运算表达式。支持自定义表达式栅格运算,通过自定义表达式可以进行算术运算、条件运算、逻辑运算、函数运算(常用函数、三角函数)以及复合运算。

命名空间:  SuperMap.Analyst.SpatialAnalyst
程序集:  SuperMap.Analyst.SpatialAnalyst (in SuperMap.Analyst.SpatialAnalyst)
版本: dll

语法

C#
public static DatasetGrid Execute(
	string expression,
	GeoRegion userRegion,
	PixelFormat pixelFormat,
	bool isZip,
	bool isIgnoreNoValue,
	Datasource targetDatasource,
	string targetDatasetName
)

参数

expression
Type: System..::.String
自定义的栅格运算表达式。
userRegion
Type: SuperMap.Data..::.GeoRegion
用户指定的有效计算区域。如果为 null,则表示计算全部区域,如果参与运算的数据集范围不一致,将使用所有数据集的范围的交集作为计算区域。
pixelFormat
Type: SuperMap.Data..::.PixelFormat
指定的结果数据集的像素格式。注意,如果指定的像素类型的精度低于参与运算的栅格数据集像素类型的精度,运算结果可能不正确。
isZip
Type: System..::.Boolean
是否对结果数据集进行压缩处理。true 表示压缩。压缩编码方式由被压缩的数据集的像素格式决定,二者对应关系可参考 EncodeType 枚举类型。
isIgnoreNoValue
Type: System..::.Boolean
是否忽略无值栅格数据。true 表示忽略无值数据,即无值栅格不参与运算。
targetDatasource
Type: SuperMap.Data..::.Datasource
指定的存储结果数据集的数据源。若设置为 null,则如果在栅格分析环境(GridAnalystSetting)中设置了输出数据源,分析结果将存储到该数据源中,否则存储到与输入数据源中。
targetDatasetName
Type: System..::.String
指定的结果数据集。

返回值

执行运算表达式的运算结果,是一个栅格数据集。

备注

栅格代数运算表达式的组成需要遵循以下规则:

  1. 运算表达式应为一个形如下式的字符串:
  2. [DatasourceAlias1.Raster1] + [DatasourceAlias2.Raster2]

    使用“ [数据源别名.数据集名] ”来指定参加运算的栅格数据集;注意要使用方括号把名字括起来。

  3. 栅格代数计算支持四则运算符("+" 、"-" 、"*" 、"/" )、条件运算符(">" 、">=" 、"<" 、"<=" 、"<>" 、"==" )、逻辑运算符("|" 、"&" 、"Not()" 、"^" )和一些常用数学函数("abs()" 、"acos()" 、"asin()" 、"atan()" 、"acot()" 、"cos()" 、"cosh()" 、"cot()" 、"exp()" 、"floor()" 、"mod(,)" 、"ln()" 、"log()" 、"pow(,)" 、"sin()" 、"sinh()" 、"sqrt()" 、"tan()" 、"tanh()" 、"Isnull()" 、"Con(,,)" 、"Pick(,,,..)")。
  4. 代数运算的表达式中各个函数之间可以嵌套使用,直接用条件运算符计算的栅格结果都为二值(如大于、小于等),即满足条件的用1代替,不满足的用0代替,若想使用其他值来表示满足条件和不满足条件的取值,可以使用条件提取函数Con(,,)。例如:"Con(IsNull([SURFACE_ANALYST.Dem3] ) ,100,Con([SURFACE_ANALYST.Dem3] > 100,[SURFACE_ANALYST.Dem3] ,-9999) ) " ,该表达式的含义是:栅格数据集 Dem3 在别名为 SURFACE_ANALYST 的数据源中,将其中无值栅格变为 100,剩余栅格中,大于 100 的,值保持不变,小于等于 100 的,值改成 -9999。
  5. 如果栅格计算中有小于零的负值,注意要加小括号,如:[DatasourceAlias1.Raster1] - ([DatasourceAlias2.Raster2])。
  6. 表达式中,运算符连接的操作数可以是一个栅格数据集,也可以是数字或者数学函数。
  7. 数学函数的自变量可以为一个数值,也可以为某个数据集,或者是一个数据集或多个数据集的运算表达式。
  8. 表达式必须是没有回车的单行表达式。
  9. 表达式中必须至少含有一个输入栅格数据集。

示例

请参见 MathAnalyst 类的示例。

请参见