public class MathAnalyst extends Object
栅格代数运算的思想是运用代数学的观点对地理特征和现象进行空间分析。实质上,是对多个栅格数据集(DatasetGrid
)进行数学运算以及函数运算。运算结果栅格的像元值是由输入的一个或多个栅格同一位置的像元的值通过代数规则运算得到的。
栅格分析中很多功能都是基于栅格代数运算的,作为栅格分析的核心内容,栅格代数运算用途十分广泛,能够帮助我们解决各种类型的实际问题。如建筑工程中的计算填挖方量,将工程实施前的DEM栅格与实施后的DEM栅格相减,就能够从结果栅格中得到施工前后的高程差,将结果栅格的像元值与像元所代表的实际面积相乘,就可以得知工程的填方量与挖方量;又如,想要提取2000年全国范围内平均降雨量介于20毫米和50毫米的地区,可以通过“20<年平均降雨量<50”关系运算表达式,对年平均降雨量栅格数据进行运算而获得。
通过该类的方法进行栅格代数运算主要有以下两种途径:
plus
(加法运算)、minus
(减法运算)、multiply
(乘法运算)、divide
(除法运算)、toInt
(取整运算)和 toFloat
(浮点运算)。使用这几个方法可以完成一个或多个栅格数据对应栅格值的算术运算。对于相对简单的运算,可以通过多次调用这几个方法来实现,如 (A/B)-(A/C)。通过运算表达式执行栅格代数运算有两种方式,一种是使用 execute
方法直接输入运算表达式来计算,另一种是使用 executeFromXML
方法从存储有运算表达式的 XML 文件中读取并执行表达式。该类的 toXMLFile
方法用于将运算表达式及相关参数写入 XML 文件中,也可以手动建立该文件。
注意:
execute
方法的介绍。PixelFormat
)不同,则运算的结果数据集的像素类型与二者中精度较高者保持一致。例如,一个为32位整型,一个为单精度浮点型,那么进行加法运算后,结果数据集的像素类型将为单精度浮点型。setAnalystSetting
方法设置相应的栅格分析环境设置对象(GridAnalystSetting
)来使栅格分析环境设置生效。如使用栅格分析环境中的设置,那么在调用该类的方法时需要将对应的参数设置为 null,否则将优先使用方法中参数的设置。假设已存在一个工作空间(Workspace),并在该工作空间中打开一个名为 m_datasource 的数据源(Datasource),该数据源中包含 grid_a、grid_b 和 grid_c 三个栅格数据集。
public void MathAnalystExample() { DatasetGrid grid_a = (DatasetGrid) m_datasource.getDatasets().get("grid_a"); DatasetGrid grid_b = (DatasetGrid) m_datasource.getDatasets().get("grid_b"); DatasetGrid grid_c = (DatasetGrid) m_datasource.getDatasets().get("grid_c"); // 使用 Plus、Divide 等基础运算方法计算(grid_a + grid_b)/grid_c DatasetGrid result_ab_plus = MathAnalyst.plus(grid_a, grid_b, null, m_datasource, "result_ab_plus"); DatasetGrid resultGridBasic = MathAnalyst.divide(result_ab_plus, grid_c, null, m_datasource, "result_basic"); if (resultGridBasic != null) { System.out.println("(grid_a + grid_b)/grid_c 计算完毕!"); } // 使用 Execute 方法执行运算表达式 String expression = "cos([" + m_datasource.getAlias() + "." + grid_a.getName() + "])*Con([" + m_datasource.getAlias() + "." + grid_b.getName() + "]<200,2,1)"; DatasetGrid resultGridExpression = MathAnalyst.execute(expression, null, PixelFormat.DOUBLE, false, true, m_datasource, "result_expression"); if (resultGridExpression != null) { System.out.println("执行运算表达式完毕!"); } // 将上一步中的运算表达式输出到XML文件中 String xmlFileName = "D:/expression.xml"; Boolean isSuccessful = MathAnalyst.toXMLFile(xmlFileName, expression, null, PixelFormat.DOUBLE, false, true); if (isSuccessful) { System.out.println("导出运算表达式到XML文件成功!"); } // 从XML文件中读取运算表达式及相关参数并执行 DatasetGrid resultGridXML = MathAnalyst.executeFromXML(xmlFileName, m_datasource, "result_fromXML"); if (resultGridXML != null) { System.out.println("从XML执行运算表达式完毕!"); } }
限定符和类型 | 方法和说明 |
---|---|
static void |
addSteppedListener(SteppedListener l)
添加一个进度条事件(
SteppedEvent )的监听器。 |
static DatasetGrid |
divide(DatasetGrid firstOperand,
DatasetGrid secondOperand,
GeoRegion userRegion,
Datasource targetDatasource,
String targetDatasetName)
已过时。
此方法已废弃,请使用支持进度监听的新方法
MathAnalyst.divide(DatasetGrid, DatasetGrid, GeoRegion, Datasource, String, SteppedListener...) 替换。 |
static DatasetGrid |
divide(DatasetGrid firstOperand,
DatasetGrid secondOperand,
GeoRegion userRegion,
Datasource targetDatasource,
String targetDatasetName,
SteppedListener... listeners)
栅格除法运算。
|
static DatasetGrid |
execute(String expression,
GeoRegion userRegion,
PixelFormat pixelFormat,
boolean isZip,
boolean isIgnoreNoValue,
Datasource[] sourceDatasources,
Datasource targetDatasource,
String targetDatasetName)
|
static DatasetGrid |
execute(String expression,
GeoRegion userRegion,
PixelFormat pixelFormat,
boolean isZip,
boolean isIgnoreNoValue,
Datasource[] sourceDatasources,
Datasource targetDatasource,
String targetDatasetName,
SteppedListener... listeners)
执行栅格代数运算表达式。
|
static DatasetGrid |
execute(String expression,
GeoRegion userRegion,
PixelFormat pixelFormat,
boolean isZip,
boolean isIgnoreNoValue,
Datasource targetDatasource,
String targetDatasetName)
已过时。
|
static DatasetGrid |
execute(String expression,
GeoRegion userRegion,
PixelFormat pixelFormat,
boolean isZip,
boolean isIgnoreNoValue,
Datasource targetDatasource,
String targetDatasetName,
SteppedListener... listeners)
执行栅格代数运算表达式,支持自定义表达式的栅格代数计算和影像波段计算。
|
static DatasetGrid |
executeFromXML(String xmlFileName,
Datasource targetDatasource,
String targetDatasetName)
已过时。
此方法已废弃,请使用支持进度监听的新方法
MathAnalyst.executeFromXML(String, Datasource, String, SteppedListener...) 替换。 |
static DatasetGrid |
executeFromXML(String xmlFileName,
Datasource targetDatasource,
String targetDatasetName,
SteppedListener... listeners)
从 XML 文件中读取栅格运算表达式及相关参数并运算。
|
static GridAnalystSetting |
getAnalystSetting()
返回栅格分析的环境设置对象。
|
static DatasetGrid |
minus(DatasetGrid firstOperand,
DatasetGrid secondOperand,
GeoRegion userRegion,
Datasource targetDatasource,
String targetDatasetName)
已过时。
此方法已废弃,请使用支持进度监听的新方法
MathAnalyst.minus(DatasetGrid, DatasetGrid, GeoRegion, Datasource, String, SteppedListener...) 替换。 |
static DatasetGrid |
minus(DatasetGrid firstOperand,
DatasetGrid secondOperand,
GeoRegion userRegion,
Datasource targetDatasource,
String targetDatasetName,
SteppedListener... listeners)
栅格减法运算。
|
static DatasetGrid |
multiply(DatasetGrid firstOperand,
DatasetGrid secondOperand,
GeoRegion userRegion,
Datasource targetDatasource,
String targetDatasetName)
已过时。
此方法已废弃,请使用支持进度监听的新方法
MathAnalyst.multiply(DatasetGrid, DatasetGrid, GeoRegion, Datasource, String, SteppedListener...) 替换。 |
static DatasetGrid |
multiply(DatasetGrid firstOperand,
DatasetGrid secondOperand,
GeoRegion userRegion,
Datasource targetDatasource,
String targetDatasetName,
SteppedListener... listeners)
栅格乘法运算。
|
static DatasetGrid |
plus(DatasetGrid firstOperand,
DatasetGrid secondOperand,
GeoRegion userRegion,
Datasource targetDatasource,
String targetDatasetName)
已过时。
此方法已废弃,请使用支持进度监听的新方法
MathAnalyst.plus(DatasetGrid, DatasetGrid, GeoRegion, Datasource, String, SteppedListener...) 替换。 |
static DatasetGrid |
plus(DatasetGrid firstOperand,
DatasetGrid secondOperand,
GeoRegion userRegion,
Datasource targetDatasource,
String targetDatasetName,
SteppedListener... listeners)
栅格加法运算。
|
static void |
removeSteppedListener(SteppedListener l)
移除一个进度条事件(
SteppedEvent )的监听器。 |
static void |
setAnalystSetting(GridAnalystSetting gridAnalystSetting)
设置栅格分析的环境设置对象。
|
static DatasetGrid |
toFloat(DatasetGrid sourceDataset,
GeoRegion userRegion,
Datasource targetDatasource,
String targetDatasetName)
已过时。
此方法已废弃,请使用支持进度监听的新方法
MathAnalyst.toFloat(DatasetGrid, GeoRegion, Datasource, String, SteppedListener...) 替换。 |
static DatasetGrid |
toFloat(DatasetGrid sourceDataset,
GeoRegion userRegion,
Datasource targetDatasource,
String targetDatasetName,
SteppedListener... listeners)
栅格浮点运算。
|
static DatasetGrid |
toInt(DatasetGrid sourceDataset,
GeoRegion userRegion,
Datasource targetDatasource,
String targetDatasetName)
已过时。
此方法已废弃,请使用支持进度监听的新方法
MathAnalyst.toInt(DatasetGrid, GeoRegion, Datasource, String, SteppedListener...) 替换。 |
static DatasetGrid |
toInt(DatasetGrid sourceDataset,
GeoRegion userRegion,
Datasource targetDatasource,
String targetDatasetName,
SteppedListener... listeners)
栅格取整运算。
|
static boolean |
toXMLFile(String xmlFileName,
String expression,
GeoRegion userRegion,
PixelFormat pixelFormat,
boolean isZip,
boolean isIgnoreNoValue)
将自定义栅格运算表达式及相关参数存储为 XML 文件。
|
public static GridAnalystSetting getAnalystSetting()
有关“栅格分析环境设置”请参见 GridAnalystSetting
类的介绍。
public static void setAnalystSetting(GridAnalystSetting gridAnalystSetting)
有关“栅格分析环境设置”请参见 GridAnalystSetting
类的介绍。
gridAnalystSetting
- 栅格分析的环境设置对象。@Deprecated public static DatasetGrid plus(DatasetGrid firstOperand, DatasetGrid secondOperand, GeoRegion userRegion, Datasource targetDatasource, String targetDatasetName)
MathAnalyst.plus(DatasetGrid, DatasetGrid, GeoRegion, Datasource, String, SteppedListener...)
替换。如果输入两个像素类型(PixelFormat
)均为整数类型的栅格数据集,则输出整数类型的结果数据集;否则,输出浮点型的结果数据集。如果输入的两个栅格数据集的像素类型精度不同,则运算的结果数据集的像素类型与二者中精度较高者保持一致。关于栅格加法运算的图示如下:
firstOperand
- 指定的第一栅格数据集。secondOperand
- 指定的第二栅格数据集。userRegion
- 用户指定的有效计算区域。如果为 null,则表示计算全部区域,如果参与运算的数据集范围不一致,将使用所有数据集的范围的交集作为计算区域。targetDatasource
- 指定的存储结果数据集的数据源。若设置为 null,则如果在栅格分析环境(GridAnalystSetting
)中设置了输出数据源,分析结果将存储到该数据源中,否则存储到与输入数据源中。targetDatasetName
- 指定的结果数据集。MathAnalyst
类的示例。public static DatasetGrid plus(DatasetGrid firstOperand, DatasetGrid secondOperand, GeoRegion userRegion, Datasource targetDatasource, String targetDatasetName, SteppedListener... listeners)
如果输入两个像素类型(PixelFormat
)均为整数类型的栅格数据集,则输出整数类型的结果数据集;否则,输出浮点型的结果数据集。如果输入的两个栅格数据集的像素类型精度不同,则运算的结果数据集的像素类型与二者中精度较高者保持一致。关于栅格加法运算的图示如下:
firstOperand
- 指定的第一栅格数据集。secondOperand
- 指定的第二栅格数据集。userRegion
- 用户指定的有效计算区域。如果为 null,则表示计算全部区域,如果参与运算的数据集范围不一致,将使用所有数据集的范围的交集作为计算区域。targetDatasource
- 指定的存储结果数据集的数据源。若设置为 null,则如果在栅格分析环境(GridAnalystSetting
)中设置了输出数据源,分析结果将存储到该数据源中,否则存储到与输入数据源中。targetDatasetName
- 指定的结果数据集。listeners
- 用于接收进度条事件的监听器。MathAnalyst
类的示例。@Deprecated public static DatasetGrid minus(DatasetGrid firstOperand, DatasetGrid secondOperand, GeoRegion userRegion, Datasource targetDatasource, String targetDatasetName)
MathAnalyst.minus(DatasetGrid, DatasetGrid, GeoRegion, Datasource, String, SteppedListener...)
替换。进行此运算时,输入栅格数据集的顺序很重要,顺序不同,结果通常也是不相同的。
如果输入两个像素类型(PixelFormat
)均为整数类型的栅格数据集,则输出整数类型的结果数据集;否则,输出浮点型的结果数据集。如果输入的两个栅格数据集的像素类型精度不同,则运算的结果数据集的像素类型与二者中精度较高者保持一致。关于栅格减法运算的图示如下:
firstOperand
- 指定的第一栅格数据集。secondOperand
- 指定的第二栅格数据集。userRegion
- 用户指定的有效计算区域。如果为 null,则表示计算全部区域,如果参与运算的数据集范围不一致,将使用所有数据集的范围的交集作为计算区域。targetDatasource
- 指定的存储结果数据集的数据源。若设置为 null,则如果在栅格分析环境(GridAnalystSetting
)中设置了输出数据源,分析结果将存储到该数据源中,否则存储到与输入数据源中。targetDatasetName
- 指定的结果数据集。MathAnalyst
类的示例。public static DatasetGrid minus(DatasetGrid firstOperand, DatasetGrid secondOperand, GeoRegion userRegion, Datasource targetDatasource, String targetDatasetName, SteppedListener... listeners)
进行此运算时,输入栅格数据集的顺序很重要,顺序不同,结果通常也是不相同的。
如果输入两个像素类型(PixelFormat
)均为整数类型的栅格数据集,则输出整数类型的结果数据集;否则,输出浮点型的结果数据集。如果输入的两个栅格数据集的像素类型精度不同,则运算的结果数据集的像素类型与二者中精度较高者保持一致。关于栅格减法运算的图示如下:
firstOperand
- 指定的第一栅格数据集。secondOperand
- 指定的第二栅格数据集。userRegion
- 用户指定的有效计算区域。如果为 null,则表示计算全部区域,如果参与运算的数据集范围不一致,将使用所有数据集的范围的交集作为计算区域。targetDatasource
- 指定的存储结果数据集的数据源。若设置为 null,则如果在栅格分析环境(GridAnalystSetting
)中设置了输出数据源,分析结果将存储到该数据源中,否则存储到与输入数据源中。targetDatasetName
- 指定的结果数据集。listeners
- 用于接收进度条事件的监听器。MathAnalyst
类的示例。@Deprecated public static DatasetGrid multiply(DatasetGrid firstOperand, DatasetGrid secondOperand, GeoRegion userRegion, Datasource targetDatasource, String targetDatasetName)
MathAnalyst.multiply(DatasetGrid, DatasetGrid, GeoRegion, Datasource, String, SteppedListener...)
替换。如果输入两个像素类型(PixelFormat
)均为整数类型的栅格数据集,则输出整数类型的结果数据集;否则,输出浮点型的结果数据集。如果输入的两个栅格数据集的像素类型精度不同,则运算的结果数据集的像素类型与二者中精度较高者保持一致。关于栅格乘法运算的图示如下:
firstOperand
- 指定的第一栅格数据集。secondOperand
- 指定的第二栅格数据集。userRegion
- 用户指定的有效计算区域。如果为 null,则表示计算全部区域,如果参与运算的数据集范围不一致,将使用所有数据集的范围的交集作为计算区域。targetDatasource
- 指定的存储结果数据集的数据源。若设置为 null,则如果在栅格分析环境(GridAnalystSetting
)中设置了输出数据源,分析结果将存储到该数据源中,否则存储到与输入数据源中。targetDatasetName
- 指定的结果数据集。public static DatasetGrid multiply(DatasetGrid firstOperand, DatasetGrid secondOperand, GeoRegion userRegion, Datasource targetDatasource, String targetDatasetName, SteppedListener... listeners)
如果输入两个像素类型(PixelFormat
)均为整数类型的栅格数据集,则输出整数类型的结果数据集;否则,输出浮点型的结果数据集。如果输入的两个栅格数据集的像素类型精度不同,则运算的结果数据集的像素类型与二者中精度较高者保持一致。关于栅格乘法运算的图示如下:
firstOperand
- 指定的第一栅格数据集。secondOperand
- 指定的第二栅格数据集。userRegion
- 用户指定的有效计算区域。如果为 null,则表示计算全部区域,如果参与运算的数据集范围不一致,将使用所有数据集的范围的交集作为计算区域。targetDatasource
- 指定的存储结果数据集的数据源。若设置为 null,则如果在栅格分析环境(GridAnalystSetting
)中设置了输出数据源,分析结果将存储到该数据源中,否则存储到与输入数据源中。targetDatasetName
- 指定的结果数据集。listeners
- 用于接收进度条事件的监听器。@Deprecated public static DatasetGrid divide(DatasetGrid firstOperand, DatasetGrid secondOperand, GeoRegion userRegion, Datasource targetDatasource, String targetDatasetName)
MathAnalyst.divide(DatasetGrid, DatasetGrid, GeoRegion, Datasource, String, SteppedListener...)
替换。如果输入两个像素类型(PixelFormat
)均为整数类型的栅格数据集,则输出整数类型的结果数据集;否则,输出浮点型的结果数据集。如果输入的两个栅格数据集的像素类型精度不同,则运算的结果数据集的像素类型与二者中精度较高者保持一致。关于栅格除法运算的图示如下:
firstOperand
- 指定的第一栅格数据集。secondOperand
- 指定的第二栅格数据集。userRegion
- 用户指定的有效计算区域。如果为 null,则表示计算全部区域,如果参与运算的数据集范围不一致,将使用所有数据集的范围的交集作为计算区域。targetDatasource
- 指定的存储结果数据集的数据源。若设置为 null,则如果在栅格分析环境(GridAnalystSetting
)中设置了输出数据源,分析结果将存储到该数据源中,否则存储到与输入数据源中。targetDatasetName
- 指定的结果数据集。public static DatasetGrid divide(DatasetGrid firstOperand, DatasetGrid secondOperand, GeoRegion userRegion, Datasource targetDatasource, String targetDatasetName, SteppedListener... listeners)
如果输入两个像素类型(PixelFormat
)均为整数类型的栅格数据集,则输出整数类型的结果数据集;否则,输出浮点型的结果数据集。如果输入的两个栅格数据集的像素类型精度不同,则运算的结果数据集的像素类型与二者中精度较高者保持一致。关于栅格除法运算的图示如下:
firstOperand
- 指定的第一栅格数据集。secondOperand
- 指定的第二栅格数据集。userRegion
- 用户指定的有效计算区域。如果为 null,则表示计算全部区域,如果参与运算的数据集范围不一致,将使用所有数据集的范围的交集作为计算区域。targetDatasource
- 指定的存储结果数据集的数据源。若设置为 null,则如果在栅格分析环境(GridAnalystSetting
)中设置了输出数据源,分析结果将存储到该数据源中,否则存储到与输入数据源中。targetDatasetName
- 指定的结果数据集。listeners
- 用于接收进度条事件的监听器。@Deprecated public static DatasetGrid execute(String expression, GeoRegion userRegion, PixelFormat pixelFormat, boolean isZip, boolean isIgnoreNoValue, Datasource targetDatasource, String targetDatasetName)
MathAnalyst.execute(String, GeoRegion, PixelFormat, boolean, boolean, Datasource, String, SteppedListener...)
替换。通过自定义表达式可以进行算术运算、条件运算、逻辑运算、函数运算(常用函数、三角函数)以及复合运算。
自定义运算表达式的组成需要遵循以下规则:
[DatasourceAlias1.Raster1] + [DatasourceAlias2.Raster2]
如果需要指定多波段数据中的单个波段进行运算,则表达式形如下式:
[DatasourceAlias1.Raster1.Band1] + [DatasourceAlias2.Raster2.Band2]
使用“ [数据源别名.数据集名] ”或“ [数据源别名.数据集名.波段名] ”来指定参加运算的栅格数据集和波段;注意要使用方括号把名字括起来。
如果使用“ [数据源别名.数据集名] ”指定多波段数据集,则取该数据的第一个波段参与运算。
expression
- 自定义的栅格运算表达式。userRegion
- 用户指定的有效计算区域。如果为 null,则表示计算全部区域,如果参与运算的数据集范围不一致,将使用所有数据集的范围的交集作为计算区域。pixelFormat
- 指定的结果数据集的像素格式。注意,如果指定的像素类型的精度低于参与运算的栅格数据集像素类型的精度,运算结果可能不正确。isZip
- 是否对结果数据集进行压缩处理。true 表示压缩。压缩编码方式由被压缩的数据集的像素格式决定,二者对应关系可参考 EncodeType
类。isIgnoreNoValue
- 是否忽略无值栅格数据。true 表示忽略无值数据,即无值栅格不参与运算。IsNull函数例外,该参数不影响IsNull的判定结果。targetDatasource
- 指定的存储结果数据集的数据源。若设置为 null,则如果在栅格分析环境(GridAnalystSetting
)中设置了输出数据源,分析结果将存储到该数据源中,否则存储到与输入数据源中。targetDatasetName
- 指定的结果数据集。public static DatasetGrid execute(String expression, GeoRegion userRegion, PixelFormat pixelFormat, boolean isZip, boolean isIgnoreNoValue, Datasource targetDatasource, String targetDatasetName, SteppedListener... listeners)
通过自定义表达式可以进行算术运算、条件运算、逻辑运算、函数运算(常用函数、三角函数)以及复合运算。
自定义运算表达式的组成需要遵循以下规则:
[DatasourceAlias1.Raster1] + [DatasourceAlias2.Raster2]
如果需要指定多波段数据中的单个波段进行运算,则表达式形如下式:
[DatasourceAlias1.Raster1.Band1] + [DatasourceAlias2.Raster2.Band2]
使用“ [数据源别名.数据集名] ”或“ [数据源别名.数据集名.波段名] ”来指定参加运算的栅格数据集和波段;注意要使用方括号把名字括起来。
如果使用“ [数据源别名.数据集名] ”指定多波段数据集,则取该数据的第一个波段参与运算。
expression
- 自定义的栅格运算表达式。userRegion
- 用户指定的有效计算区域。如果为 null,则表示计算全部区域,如果参与运算的数据集范围不一致,将使用所有数据集的范围的交集作为计算区域。pixelFormat
- 指定的结果数据集的像素格式。注意,如果指定的像素类型的精度低于参与运算的栅格数据集像素类型的精度,运算结果可能不正确。isZip
- 是否对结果数据集进行压缩处理。true 表示压缩。压缩编码方式由被压缩的数据集的像素格式决定,二者对应关系可参考 EncodeType
类。isIgnoreNoValue
- 是否忽略无值栅格数据。true 表示忽略无值数据,即无值栅格不参与运算。IsNull函数例外,该参数不影响IsNull的判定结果。targetDatasource
- 指定的存储结果数据集的数据源。若设置为 null,则如果在栅格分析环境(GridAnalystSetting
)中设置了输出数据源,分析结果将存储到该数据源中,否则存储到与输入数据源中。targetDatasetName
- 指定的结果数据集。listeners
- 用于接收进度条事件的监听器。@Deprecated public static DatasetGrid execute(String expression, GeoRegion userRegion, PixelFormat pixelFormat, boolean isZip, boolean isIgnoreNoValue, Datasource[] sourceDatasources, Datasource targetDatasource, String targetDatasetName)
MathAnalyst.execute(String, GeoRegion, PixelFormat, boolean, boolean, Datasource[], Datasource, String, SteppedListener...)
替换。有关栅格代数运算表达式应遵循的规则,请参见 execute
方法的介绍。
expression
- 自定义的栅格运算表达式。userRegion
- 用户指定的有效计算区域。如果为 null,则表示计算全部区域,如果参与运算的数据集范围不一致,将使用所有数据集的范围的交集作为计算区域。pixelFormat
- 指定的结果数据集的像素格式。注意,如果指定的像素类型的精度低于参与运算的栅格数据集像素类型的精度,运算结果可能不正确。isZip
- 是否对结果数据集进行压缩处理。true 表示压缩。压缩编码方式由被压缩的数据集的像素格式决定,二者对应关系可参考 EncodeType
类。isIgnoreNoValue
- 是否忽略无值栅格数据。true 表示忽略无值数据,即无值栅格不参与运算。sourceDatasources
- 需要进行栅格代数运算的数据源集合。targetDatasource
- 指定的存储结果数据集的数据源。若设置为 null,则如果在栅格分析环境(GridAnalystSetting
)中设置了输出数据源,分析结果将存储到该数据源中,否则存储到与输入数据源中。targetDatasetName
- 指定的结果数据集。public static DatasetGrid execute(String expression, GeoRegion userRegion, PixelFormat pixelFormat, boolean isZip, boolean isIgnoreNoValue, Datasource[] sourceDatasources, Datasource targetDatasource, String targetDatasetName, SteppedListener... listeners)
有关栅格代数运算表达式应遵循的规则,请参见 execute
方法的介绍。
expression
- 自定义的栅格运算表达式。userRegion
- 用户指定的有效计算区域。如果为 null,则表示计算全部区域,如果参与运算的数据集范围不一致,将使用所有数据集的范围的交集作为计算区域。pixelFormat
- 指定的结果数据集的像素格式。注意,如果指定的像素类型的精度低于参与运算的栅格数据集像素类型的精度,运算结果可能不正确。isZip
- 是否对结果数据集进行压缩处理。true 表示压缩。压缩编码方式由被压缩的数据集的像素格式决定,二者对应关系可参考 EncodeType
类。isIgnoreNoValue
- 是否忽略无值栅格数据。true 表示忽略无值数据,即无值栅格不参与运算。sourceDatasources
- 需要进行栅格代数运算的数据源集合。targetDatasource
- 指定的存储结果数据集的数据源。若设置为 null,则如果在栅格分析环境(GridAnalystSetting
)中设置了输出数据源,分析结果将存储到该数据源中,否则存储到与输入数据源中。targetDatasetName
- 指定的结果数据集。listeners
- 用于接收进度条事件的监听器。@Deprecated public static DatasetGrid toInt(DatasetGrid sourceDataset, GeoRegion userRegion, Datasource targetDatasource, String targetDatasetName)
MathAnalyst.toInt(DatasetGrid, GeoRegion, Datasource, String, SteppedListener...)
替换。取整运算的结果是去除栅格值的小数部分,只保留栅格值的整数。如果输入栅格值为整数类型,进行取整运算后的结果与输入栅格值相同。关于栅格取整运算的图示如下:
sourceDataset
- 指定的要取整的栅格数据集。userRegion
- 用户指定的有效的计算区域。如果为 null,则表示计算全部区域,如果参与运算的数据集范围不一致,将使用所有数据集的范围的交集作为计算区域。targetDatasource
- 指定的存储结果数据集的数据源。若设置为 null,则如果在栅格分析环境(GridAnalystSetting
)中设置了输出数据源,分析结果将存储到该数据源中,否则存储到与输入数据源中。targetDatasetName
- 指定的结果数据集。public static DatasetGrid toInt(DatasetGrid sourceDataset, GeoRegion userRegion, Datasource targetDatasource, String targetDatasetName, SteppedListener... listeners)
取整运算的结果是去除栅格值的小数部分,只保留栅格值的整数。如果输入栅格值为整数类型,进行取整运算后的结果与输入栅格值相同。关于栅格取整运算的图示如下:
sourceDataset
- 指定的要取整的栅格数据集。userRegion
- 用户指定的有效的计算区域。如果为 null,则表示计算全部区域,如果参与运算的数据集范围不一致,将使用所有数据集的范围的交集作为计算区域。targetDatasource
- 指定的存储结果数据集的数据源。若设置为 null,则如果在栅格分析环境(GridAnalystSetting
)中设置了输出数据源,分析结果将存储到该数据源中,否则存储到与输入数据源中。targetDatasetName
- 指定的结果数据集。listeners
- 用于接收进度条事件的监听器。@Deprecated public static DatasetGrid toFloat(DatasetGrid sourceDataset, GeoRegion userRegion, Datasource targetDatasource, String targetDatasetName)
MathAnalyst.toFloat(DatasetGrid, GeoRegion, Datasource, String, SteppedListener...)
替换。如果输入的栅格值为双精度浮点型,进行浮点运算后的结果栅格值也转换为单精度浮点型。关于栅格浮点运算的图示如下:
sourceDataset
- 指定的要转换为浮点型的栅格数据集。userRegion
- 用户指定的有效计算区域。如果为 null,则表示计算全部区域,如果参与运算的数据集范围不一致,将使用所有数据集的范围的交集作为计算区域。targetDatasource
- 指定的存储结果数据集的数据源。若设置为 null,则如果在栅格分析环境(GridAnalystSetting
)中设置了输出数据源,分析结果将存储到该数据源中,否则存储到与输入数据源中。targetDatasetName
- 指定的结果数据集。public static DatasetGrid toFloat(DatasetGrid sourceDataset, GeoRegion userRegion, Datasource targetDatasource, String targetDatasetName, SteppedListener... listeners)
如果输入的栅格值为双精度浮点型,进行浮点运算后的结果栅格值也转换为单精度浮点型。关于栅格浮点运算的图示如下:
sourceDataset
- 指定的要转换为浮点型的栅格数据集。userRegion
- 用户指定的有效计算区域。如果为 null,则表示计算全部区域,如果参与运算的数据集范围不一致,将使用所有数据集的范围的交集作为计算区域。targetDatasource
- 指定的存储结果数据集的数据源。若设置为 null,则如果在栅格分析环境(GridAnalystSetting
)中设置了输出数据源,分析结果将存储到该数据源中,否则存储到与输入数据源中。targetDatasetName
- 指定的结果数据集。listeners
- 用于接收进度条事件的监听器。@Deprecated public static DatasetGrid executeFromXML(String xmlFileName, Datasource targetDatasource, String targetDatasetName)
MathAnalyst.executeFromXML(String, Datasource, String, SteppedListener...)
替换。该 XML 文件可以手动编辑获得,也可通过 toXMLFile
方法生成。关于 XML 文件的格式要求和标签含义请参见 toXMLFile
方法。
xmlFileName
- 存储了栅格运算表达式及相关参数的 XML 文件。targetDatasource
- 指定的存储结果数据集的数据源。若设置为 null,则如果在栅格分析环境(GridAnalystSetting
)中设置了输出数据源,分析结果将存储到该数据源中,否则存储到与输入数据源中。targetDatasetName
- 指定的结果数据集。public static DatasetGrid executeFromXML(String xmlFileName, Datasource targetDatasource, String targetDatasetName, SteppedListener... listeners)
该 XML 文件可以手动编辑获得,也可通过 toXMLFile
方法生成。关于 XML 文件的格式要求和标签含义请参见 toXMLFile
方法。
xmlFileName
- 存储了栅格运算表达式及相关参数的 XML 文件。targetDatasource
- 指定的存储结果数据集的数据源。若设置为 null,则如果在栅格分析环境(GridAnalystSetting
)中设置了输出数据源,分析结果将存储到该数据源中,否则存储到与输入数据源中。targetDatasetName
- 指定的结果数据集。listeners
- 用于接收进度条事件的监听器。public static boolean toXMLFile(String xmlFileName, String expression, GeoRegion userRegion, PixelFormat pixelFormat, boolean isZip, boolean isIgnoreNoValue)
将自定义的栅格运算表达式及相关参数存储到 XML 文件中,以后需要再次运算时可以通过 executeFromXML
方法直接从该 XML 文件中读取表达式并完成运算,而不必重新编写表达式和设置参数。当然,也可以用来对需要进行相同运算的数据集进行批量处理,但需要注意,表达式中明确指定了参与运算的数据源和数据集的名称,使用时可以根据实际情况修改。
下图为通过该方法生成的存储了运算表达式及参数的 XML 文件,图中标示了每个标签的含义:
xmlFileName
- 指定的用于存储栅格运算表达式及相关参数的 XML 文件。expression
- 自定义的栅格运算表达式。userRegion
- 用户指定的有效计算区域。如果为 null,则表示计算全部区域,如果参与运算的数据集范围不一致,将使用所有数据集的范围的交集作为计算区域。pixelFormat
- 指定的结果数据集的像素格式。注意,如果指定的像素类型的精度低于参与运算的栅格数据集像素类型的精度,运算结果可能不正确。isZip
- 是否对结果数据集进行压缩处理。true 表示压缩。压缩编码方式由被压缩的数据集的像素格式决定,二者对应关系可参考 EncodeType
类。isIgnoreNoValue
- 是否忽略无值栅格数据。true 表示忽略无值数据,即无值栅格不参与运算。public static void addSteppedListener(SteppedListener l)
SteppedEvent
)的监听器。l
- 一个用于接收进度条事件的监听器。public static void removeSteppedListener(SteppedListener l)
SteppedEvent
)的监听器。l
- 一个用于接收进度条事件的监听器。Copyright © 2021–2024 SuperMap. All rights reserved.