public class StatisticsAnalyst extends Object
@Deprecated public static GridHistogram createHistogram(DatasetGrid statisticsGrid, int groupCount)
StatisticsAnalyst.createHistogram(DatasetGrid, int, SteppedListener...)
替换。直方图,又称柱状图,由一系列高度不等的矩形块来表示一份数据的分布情况。一般横轴表示类别,纵轴表示分布情况。
栅格直方图的横轴表示栅格值的分组,栅格值将被划分到这 N(默认为 100)个组中,即每个组对应着一个栅格值范围;纵轴表示频数,即栅格值在每组的值范围内的单元格的个数。
下图是栅格直方图的示意图。该栅格数据的最小值和最大值分别为 0 和 100,取组数为 10,得出每组的频数,绘制如下的直方图。矩形块上方标注了该组的频数,例如,第 6 组的栅格值范围为 [50,60),栅格数据中值在此范围内的单元格共有 3 个,因此该组的频数为 3。
注:直方图分组的最后一组的值范围为前闭后闭,其余均为前闭后开。
在通过此方法获得栅格数据集的直方图(GridHistogram
)对象后,可以通过该对象的 getFrequencies
方法返回每个组的频数,还可以通过 setGroupCount
方法重新指定栅格直方图的组数,然后再通过 getFrequencies
方法返回每组的频数。
下图为创建栅格直方图的一个实例。本例中,最小栅格值为 250,最大栅格值为 1243,组数为 500,获取各组的频数,绘制出如右侧所示的栅格直方图。从右侧的栅格直方图,可以非常直观的了解栅格数据集栅格值的分布情况。
statisticsGrid
- 指定的栅格数据集。groupCount
- 指定的直方图的组数。必须大于 0。IllegalArgumentException
- 如果 groupCount 小于或等于 0public static GridHistogram createHistogram(DatasetGrid statisticsGrid, int groupCount, SteppedListener... listeners)
直方图,又称柱状图,由一系列高度不等的矩形块来表示一份数据的分布情况。一般横轴表示类别,纵轴表示分布情况。
栅格直方图的横轴表示栅格值的分组,栅格值将被划分到这 N(默认为 100)个组中,即每个组对应着一个栅格值范围;纵轴表示频数,即栅格值在每组的值范围内的单元格的个数。
下图是栅格直方图的示意图。该栅格数据的最小值和最大值分别为 0 和 100,取组数为 10,得出每组的频数,绘制如下的直方图。矩形块上方标注了该组的频数,例如,第 6 组的栅格值范围为 [50,60),栅格数据中值在此范围内的单元格共有 3 个,因此该组的频数为 3。
注:直方图分组的最后一组的值范围为前闭后闭,其余均为前闭后开。
在通过此方法获得栅格数据集的直方图(GridHistogram
)对象后,可以通过该对象的 getFrequencies
方法返回每个组的频数,还可以通过 setGroupCount
方法重新指定栅格直方图的组数,然后再通过 getFrequencies
方法返回每组的频数。
下图为创建栅格直方图的一个实例。本例中,最小栅格值为 250,最大栅格值为 1243,组数为 500,获取各组的频数,绘制出如右侧所示的栅格直方图。从右侧的栅格直方图,可以非常直观的了解栅格数据集栅格值的分布情况。
statisticsGrid
- 指定的栅格数据集。groupCount
- 指定的直方图的组数。必须大于 0。listeners
- 用于接收进度条事件的监听器。IllegalArgumentException
- 如果 groupCount 小于或等于 0@Deprecated public static GridHistogram createHistogram(DatasetGrid statisticsGrid, int groupCount, FunctionType functionType)
StatisticsAnalyst.createHistogram(DatasetGrid, int, FunctionType, SteppedListener...)
替换。指定变换函数时,直方图统计的数据是原始栅格值经过函数变换后得到的值。
关于栅格直方图相关介绍请参考 createHistogram(DatasetGrid, int)
方法。
statisticsGrid
- 指定的栅格数据集。groupCount
- 指定的直方图的组数。必须大于 0。functionType
- 指定的变换函数类型。IllegalArgumentException
- 如果 groupCount 小于或等于 0
注意:
public static GridHistogram createHistogram(DatasetGrid statisticsGrid, int groupCount, FunctionType functionType, SteppedListener... listeners)
指定变换函数时,直方图统计的数据是原始栅格值经过函数变换后得到的值。
关于栅格直方图相关介绍请参考 createHistogram(DatasetGrid, int)
方法。
statisticsGrid
- 指定的栅格数据集。groupCount
- 指定的直方图的组数。必须大于 0。functionType
- 指定的变换函数类型。listeners
- 用于接收进度条事件的监听器。IllegalArgumentException
- 如果 groupCount 小于或等于 0
注意:
@Deprecated public static GridHistogram createImageHistogram(DatasetImage statisticsImage, int groupCount, FunctionType functionType, int bandIndex)
StatisticsAnalyst.createImageHistogram(DatasetImage, int, FunctionType, int, SteppedListener...)
替换。影像直方图与栅格直方图类似。关于栅格直方图相关介绍请参考 createHistogram(DatasetGrid, int)
方法。
statisticsImage
- 指定的影像数据集。groupCount
- 指定的直方图的组数。必须大于 0。functionType
- 指定的变换函数类型。bandIndex
- 影像数据波段索引。IllegalArgumentException
- 如果 groupCount 小于或等于 0。
注意:
public static GridHistogram createImageHistogram(DatasetImage statisticsImage, int groupCount, FunctionType functionType, int bandIndex, SteppedListener... listeners)
影像直方图与栅格直方图类似。关于栅格直方图相关介绍请参考 createHistogram(DatasetGrid, int)
方法。
statisticsImage
- 指定的影像数据集。groupCount
- 指定的直方图的组数。必须大于 0。functionType
- 指定的变换函数类型。bandIndex
- 影像数据波段索引。listeners
- 用于接收进度条事件的监听器。IllegalArgumentException
- 如果 groupCount 小于或等于 0。
注意:
@Deprecated public static GridHistogram[] createImageHistogram(DatasetImage statisticsImage, int groupCount, FunctionType functionType)
StatisticsAnalyst.createImageHistogram(DatasetImage, int, FunctionType, SteppedListener...)
替换。影像直方图与栅格直方图类似。关于栅格直方图相关介绍请参考 createHistogram(DatasetGrid, int)
方法。
statisticsImage
- 指定的影像数据集。groupCount
- 指定的直方图的组数。必须大于 0。functionType
- 指定的变换函数类型。IllegalArgumentException
- 如果 groupCount 小于或等于 0。
注意:
public static GridHistogram[] createImageHistogram(DatasetImage statisticsImage, int groupCount, FunctionType functionType, SteppedListener... listeners)
影像直方图与栅格直方图类似。关于栅格直方图相关介绍请参考 createHistogram(DatasetGrid, int)
方法。
statisticsImage
- 指定的影像数据集。groupCount
- 指定的直方图的组数。必须大于 0。functionType
- 指定的变换函数类型。listeners
- 用于接收进度条事件的监听器。IllegalArgumentException
- 如果 groupCount 小于或等于 0。
注意:
@Deprecated public static BasicStatisticsAnalystResult basicStatistics(DatasetGrid statisticsGrid)
StatisticsAnalyst.basicStatistics(DatasetGrid, SteppedListener...)
替换。statisticsGrid
- 指定的待统计的栅格数据。public String gridBasicStatistics(DatasetGrid sourceDatasetGrid) { //调用栅格基本统计分析方法,获得基本统计分析结果对象 BasicStatisticsAnalystResult basicStatisticAnalystResult = StatisticsAnalyst .basicStatistics(sourceDatasetGrid); //从栅格基本统计分析结果中提取结果 Double max = basicStatisticAnalystResult.getMax(); Double min = basicStatisticAnalystResult.getMin(); Double mean = basicStatisticAnalystResult.getMean(); Double standardDeviation = basicStatisticAnalystResult .getStandardDeviation(); //将结果写入一个字符串 String result = "栅格基本统计分析结果:\n" + "最大值:" + max + "\n最小值:" + min + "\n平均值:" + mean + "\n标准差:" + standardDeviation; return result; }
public static BasicStatisticsAnalystResult basicStatistics(DatasetGrid statisticsGrid, SteppedListener... listeners)
statisticsGrid
- 指定的待统计的栅格数据。listeners
- 用于接收进度条事件的监听器。public String gridBasicStatistics(DatasetGrid sourceDatasetGrid) { //调用栅格基本统计分析方法,获得基本统计分析结果对象 BasicStatisticsAnalystResult basicStatisticAnalystResult = StatisticsAnalyst .basicStatistics(sourceDatasetGrid); //从栅格基本统计分析结果中提取结果 Double max = basicStatisticAnalystResult.getMax(); Double min = basicStatisticAnalystResult.getMin(); Double mean = basicStatisticAnalystResult.getMean(); Double standardDeviation = basicStatisticAnalystResult .getStandardDeviation(); //将结果写入一个字符串 String result = "栅格基本统计分析结果:\n" + "最大值:" + max + "\n最小值:" + min + "\n平均值:" + mean + "\n标准差:" + standardDeviation; return result; }
@Deprecated public static BasicStatisticsAnalystResult basicStatistics(DatasetGrid statisticsGrid, FunctionType functionType)
StatisticsAnalyst.basicStatistics(DatasetGrid, FunctionType, SteppedListener...)
替换。指定变换函数时,用来统计的数据是原始栅格值经过函数变换后得到的值。
statisticsGrid
- 指定的待统计的栅格数据。functionType
- 指定的变换函数类型。public String gridBasicStatistics(DatasetGrid sourceDatasetGrid) { //调用栅格基本统计分析方法,获得基本统计分析结果对象 BasicStatisticsAnalystResult basicStatisticAnalystResult = StatisticsAnalyst .basicStatistics(sourceDatasetGrid, FunctionType.LOG); //从栅格基本统计分析结果中提取结果 Double max = basicStatisticAnalystResult.getMax(); Double min = basicStatisticAnalystResult.getMin(); Double mean = basicStatisticAnalystResult.getMean(); Double standardDeviation = basicStatisticAnalystResult .getStandardDeviation(); //将结果写入一个字符串 String result = "栅格基本统计分析结果:\n" + "最大值:" + max + "\n最小值:" + min + "\n平均值:" + mean + "\n标准差:" + standardDeviation; return result; }
注意:
public static BasicStatisticsAnalystResult basicStatistics(DatasetGrid statisticsGrid, FunctionType functionType, SteppedListener... listeners)
指定变换函数时,用来统计的数据是原始栅格值经过函数变换后得到的值。
statisticsGrid
- 指定的待统计的栅格数据。functionType
- 指定的变换函数类型。listeners
- 用于接收进度条事件的监听器。public String gridBasicStatistics(DatasetGrid sourceDatasetGrid) { //调用栅格基本统计分析方法,获得基本统计分析结果对象 BasicStatisticsAnalystResult basicStatisticAnalystResult = StatisticsAnalyst .basicStatistics(sourceDatasetGrid, FunctionType.LOG); //从栅格基本统计分析结果中提取结果 Double max = basicStatisticAnalystResult.getMax(); Double min = basicStatisticAnalystResult.getMin(); Double mean = basicStatisticAnalystResult.getMean(); Double standardDeviation = basicStatisticAnalystResult .getStandardDeviation(); //将结果写入一个字符串 String result = "栅格基本统计分析结果:\n" + "最大值:" + max + "\n最小值:" + min + "\n平均值:" + mean + "\n标准差:" + standardDeviation; return result; }
注意:
@Deprecated public static BasicStatisticsAnalystResult imageBasicStatistics(DatasetImage statisticsImage, FunctionType functionType, int bandIndex)
StatisticsAnalyst.imageBasicStatistics(DatasetImage, FunctionType, int, SteppedListener...)
替换。statisticsImage
- 指定的待统计的影像数据。functionType
- 指定的变换函数类型。bandIndex
- 影像数据波段索引。public static BasicStatisticsAnalystResult imageBasicStatistics(DatasetImage statisticsImage, FunctionType functionType, int bandIndex, SteppedListener... listeners)
statisticsImage
- 指定的待统计的影像数据。functionType
- 指定的变换函数类型。bandIndex
- 影像数据波段索引。listeners
- 用于接收进度条事件的监听器。public static BasicStatisticsAnalystResult[] imageBasicStatistics(DatasetImage statisticsImage, FunctionType functionType, SteppedListener... listeners)
statisticsImage
- 指定的待统计的影像数据。functionType
- 指定的变换函数类型。listeners
- 用于接收进度条事件的监听器。@Deprecated public static DatasetGrid commonStatistics(DatasetGrid statisticsGrid, double comparedValue, StatisticsCompareType type, boolean isIgnoreNoValue, Datasource targetDatasource, String targetDatasetName)
StatisticsAnalyst.commonStatistics(DatasetGrid, double, StatisticsCompareType, boolean, Datasource, String, SteppedListener...)
替换。statisticsGrid
- 指定的待统计的栅格数据。comparedValue
- 指定的比较的值。单位与待统计的栅格数据集的栅格值单位相同。type
- 指定的比较类型。isIgnoreNoValue
- 指定是否忽略无值。如果为 true,即忽略无值,则计算区域内的无值不参与计算,结果栅格值仍为无值;若为 false,则计算区域内的无值参与计算。targetDatasource
- 指定的用于存储结果数据的数据源。targetDatasetName
- 指定的结果数据集的名称。public DatasetGrid gridCommonStatisticsCompareWithValue( DatasetGrid sourceDatasetGrid, Datasource targetDatasource) { //设置结果栅格数据集的名称,并检查数据源中是否已存在该数据集,如存在则删除 String targetDatasetName = "commonStastisticsResult"; if (targetDatasource.getDatasets().contains(targetDatasetName)) { targetDatasource.getDatasets().delete(targetDatasetName); } //设置与待统计的栅格数据集进行比较的值 double comparedValue = 8000; //调用栅格常用统计分析方法,并获取分析结果栅格数据集 DatasetGrid resultDatasetGrid = StatisticsAnalyst.commonStatistics( sourceDatasetGrid, comparedValue, StatisticsCompareType.GREATER, false, targetDatasource, targetDatasetName); return resultDatasetGrid; }
public static DatasetGrid commonStatistics(DatasetGrid statisticsGrid, double comparedValue, StatisticsCompareType type, boolean isIgnoreNoValue, Datasource targetDatasource, String targetDatasetName, SteppedListener... listeners)
statisticsGrid
- 指定的待统计的栅格数据。comparedValue
- 指定的比较的值。单位与待统计的栅格数据集的栅格值单位相同。type
- 指定的比较类型。isIgnoreNoValue
- 指定是否忽略无值。如果为 true,即忽略无值,则计算区域内的无值不参与计算,结果栅格值仍为无值;若为 false,则计算区域内的无值参与计算。targetDatasource
- 指定的用于存储结果数据的数据源。targetDatasetName
- 指定的结果数据集的名称。listeners
- 用于接收进度条事件的监听器。public DatasetGrid gridCommonStatisticsCompareWithValue( DatasetGrid sourceDatasetGrid, Datasource targetDatasource) { //设置结果栅格数据集的名称,并检查数据源中是否已存在该数据集,如存在则删除 String targetDatasetName = "commonStastisticsResult"; if (targetDatasource.getDatasets().contains(targetDatasetName)) { targetDatasource.getDatasets().delete(targetDatasetName); } //设置与待统计的栅格数据集进行比较的值 double comparedValue = 8000; //调用栅格常用统计分析方法,并获取分析结果栅格数据集 DatasetGrid resultDatasetGrid = StatisticsAnalyst.commonStatistics( sourceDatasetGrid, comparedValue, StatisticsCompareType.GREATER, false, targetDatasource, targetDatasetName); return resultDatasetGrid; }
@Deprecated public static DatasetGrid commonStatistics(DatasetGrid statisticsGrid, DatasetGrid[] compareDatasets, StatisticsCompareType compareType, boolean isIgnoreNoValue, Datasource targetDatasource, String targetDatasetName)
StatisticsAnalyst.commonStatistics(DatasetGrid, DatasetGrid[], StatisticsCompareType, boolean, Datasource, String, SteppedListener...)
替换。关于无值的说明:
PixelFormat.UBIT8
,即每个像元使用 8 个比特表示,则无值的值为 255。在此方法中,结果栅格的像素格式是由比较栅格数据集的数量来决定的。比较数据集得个数、结果栅格的像素格式和结果栅格中无值的值三者的对应关系如下所示:statisticsGrid
- 指定的待统计的栅格数据。compareDatasets
- 指定的比较的数据集集合。compareType
- 指定的比较的类型。isIgnoreNoValue
- 指定是否忽略无值。如果为 true,即忽略无值,则计算区域内的无值不参与计算,结果栅格值仍为无值;若为 false,则计算区域内的无值参与计算。targetDatasource
- 指定的用于存储结果数据的数据源。targetDatasetName
- 指定的结果数据集的名称。public DatasetGrid gridCommonStatisticsCompareWithGrid( DatasetGrid sourceDatasetGrid, DatasetGrid[] comparedDatasetsGrid, Datasource targetDatasource) { //设置结果栅格数据集的名称,并检查数据源中是否已存在该数据集,如存在则删除 String targetDatasetName = "commonStastisticsResult"; if (targetDatasource.getDatasets().contains(targetDatasetName)) { targetDatasource.getDatasets().delete(targetDatasetName); } //调用栅格常用统计分析方法,并获取分析结果栅格数据集 DatasetGrid resultDatasetGrid = StatisticsAnalyst.commonStatistics( sourceDatasetGrid, comparedDatasetsGrid, StatisticsCompareType.LESS_OR_EQUAL, false, targetDatasource, targetDatasetName); return resultDatasetGrid; }
public static DatasetGrid commonStatistics(DatasetGrid statisticsGrid, DatasetGrid[] compareDatasets, StatisticsCompareType compareType, boolean isIgnoreNoValue, Datasource targetDatasource, String targetDatasetName, SteppedListener... listeners)
关于无值的说明:
PixelFormat.UBIT8
,即每个像元使用 8 个比特表示,则无值的值为 255。在此方法中,结果栅格的像素格式是由比较栅格数据集的数量来决定的。比较数据集得个数、结果栅格的像素格式和结果栅格中无值的值三者的对应关系如下所示:statisticsGrid
- 指定的待统计的栅格数据。compareDatasets
- 指定的比较的数据集集合。compareType
- 指定的比较的类型。isIgnoreNoValue
- 指定是否忽略无值。如果为 true,即忽略无值,则计算区域内的无值不参与计算,结果栅格值仍为无值;若为 false,则计算区域内的无值参与计算。targetDatasource
- 指定的用于存储结果数据的数据源。targetDatasetName
- 指定的结果数据集的名称。listeners
- 用于接收进度条事件的监听器。public DatasetGrid gridCommonStatisticsCompareWithGrid( DatasetGrid sourceDatasetGrid, DatasetGrid[] comparedDatasetsGrid, Datasource targetDatasource) { //设置结果栅格数据集的名称,并检查数据源中是否已存在该数据集,如存在则删除 String targetDatasetName = "commonStastisticsResult"; if (targetDatasource.getDatasets().contains(targetDatasetName)) { targetDatasource.getDatasets().delete(targetDatasetName); } //调用栅格常用统计分析方法,并获取分析结果栅格数据集 DatasetGrid resultDatasetGrid = StatisticsAnalyst.commonStatistics( sourceDatasetGrid, comparedDatasetsGrid, StatisticsCompareType.LESS_OR_EQUAL, false, targetDatasource, targetDatasetName); return resultDatasetGrid; }
@Deprecated public static DatasetGrid neighbourStatistics(NeighbourStatisticsParameter parameter)
StatisticsAnalyst.neighbourStatistics(NeighbourStatisticsParameter, SteppedListener...)
替换。邻域统计分析,是对输入数据集中的每个像元的指定扩展区域中的像元进行统计,将运算结果作为像元的值。统计的方法包括:总和、最大值、最小值、众数、少数、中位数等,请参见 GridStatisticsMode
枚举类型。目前提供的邻域范围类型(请参见 NeighbourShapeType
枚举类型)有:矩形、圆形、圆环和扇形。
下图为邻域统计的原理示意,假设使用“总和”作为统计方法做矩形邻域统计,邻域大小为 3×3,那么对于图中位于第二行第三列的单元格,它的值则由以其为中心向周围扩散得到的一个 3×3 的矩形内所有像元值的和来决定。
邻域统计的应用十分广泛。例如:
对坡度栅格统计邻域内的坡度差(统计方法:值域),从而评估该区域的地形起伏状况;
邻域统计还用于图像处理,如统计邻域内的平均值(称为均值滤波)或中位数(称为中值滤波)可以达到平滑的效果,从而去除噪声或过多的细节,等等。
该方法通过 NeighbourStatisticsParameter
类对邻域分析的形状、输入与输出、单位类型、统计方式进行设置。
parameter
- 指定的邻域分析参数设置。public DatasetGrid gridRectangleNeighbourStatistics( DatasetGrid sourceDatasetGrid, Datasource targetDatasource) { //设置结果栅格数据集的名称,并检查数据源中是否已存在该数据集,如存在则删除 String targetDatasetName = "neighbourStastisticsResult"; if (targetDatasource.getDatasets().contains(targetDatasetName)) { targetDatasource.getDatasets().delete(targetDatasetName); } //设置邻域统计分析参数 NeighbourStatisticsRectangleParameter neighbourParameter = new NeighbourStatisticsRectangleParameter(); neighbourParameter.setWidth(6.0); neighbourParameter.setHeight(4.0); neighbourParameter.setIgnoreNoValue(false); neighbourParameter.setStatisticsMode(GridStatisticsMode.MAJORITY); neighbourParameter.setUnitType(NeighbourUnitType.CELL); neighbourParameter.setSourceDataset(sourceDatasetGrid); neighbourParameter.setTargetDatasource(targetDatasource); neighbourParameter.setTargetDatasetName(targetDatasetName); //调用栅格邻域统计分析方法,并获取分析结果栅格数据集 DatasetGrid resultDatasetGrid = StatisticsAnalyst .neighbourStatistics(neighbourParameter); return resultDatasetGrid; }
public static DatasetGrid neighbourStatistics(NeighbourStatisticsParameter parameter, SteppedListener... listeners)
邻域统计分析,是对输入数据集中的每个像元的指定扩展区域中的像元进行统计,将运算结果作为像元的值。统计的方法包括:总和、最大值、最小值、众数、少数、中位数等,请参见 GridStatisticsMode
枚举类型。目前提供的邻域范围类型(请参见 NeighbourShapeType
枚举类型)有:矩形、圆形、圆环和扇形。
下图为邻域统计的原理示意,假设使用“总和”作为统计方法做矩形邻域统计,邻域大小为 3×3,那么对于图中位于第二行第三列的单元格,它的值则由以其为中心向周围扩散得到的一个 3×3 的矩形内所有像元值的和来决定。
邻域统计的应用十分广泛。例如:
对坡度栅格统计邻域内的坡度差(统计方法:值域),从而评估该区域的地形起伏状况;
邻域统计还用于图像处理,如统计邻域内的平均值(称为均值滤波)或中位数(称为中值滤波)可以达到平滑的效果,从而去除噪声或过多的细节,等等。
该方法通过 NeighbourStatisticsParameter
类对邻域分析的形状、输入与输出、单位类型、统计方式进行设置。
parameter
- 指定的邻域分析参数设置。listeners
- 用于接收进度条事件的监听器。public DatasetGrid gridRectangleNeighbourStatistics( DatasetGrid sourceDatasetGrid, Datasource targetDatasource) { //设置结果栅格数据集的名称,并检查数据源中是否已存在该数据集,如存在则删除 String targetDatasetName = "neighbourStastisticsResult"; if (targetDatasource.getDatasets().contains(targetDatasetName)) { targetDatasource.getDatasets().delete(targetDatasetName); } //设置邻域统计分析参数 NeighbourStatisticsRectangleParameter neighbourParameter = new NeighbourStatisticsRectangleParameter(); neighbourParameter.setWidth(6.0); neighbourParameter.setHeight(4.0); neighbourParameter.setIgnoreNoValue(false); neighbourParameter.setStatisticsMode(GridStatisticsMode.MAJORITY); neighbourParameter.setUnitType(NeighbourUnitType.CELL); neighbourParameter.setSourceDataset(sourceDatasetGrid); neighbourParameter.setTargetDatasource(targetDatasource); neighbourParameter.setTargetDatasetName(targetDatasetName); //调用栅格邻域统计分析方法,并获取分析结果栅格数据集 DatasetGrid resultDatasetGrid = StatisticsAnalyst .neighbourStatistics(neighbourParameter); return resultDatasetGrid; }
@Deprecated public static DatasetGrid blockStatistics(NeighbourStatisticsParameter parameter)
StatisticsAnalyst.blockStatistics(NeighbourStatisticsParameter, SteppedListener...)
替换。parameter
- 邻域设置参数public static DatasetGrid blockStatistics(NeighbourStatisticsParameter parameter, SteppedListener... listeners)
parameter
- 邻域设置参数listeners
- 用于接收进度条事件的监听器。@Deprecated public static ZonalStatisticsAnalystResult zonalStatisticsOnRasterValue(ZonalStatisticsAnalystParameter parameter)
StatisticsAnalyst.zonalStatisticsOnRasterValue(ZonalStatisticsAnalystParameter, SteppedListener...)
替换。栅格分带统计,是以某种统计方法对区域内的单元格的值进行统计,将每个区域内的统计值赋给该区域所覆盖的所有单元格,从而得到结果栅格。栅格分带统计涉及两种数据,值数据和带数据。值数据即被统计的栅格数据,带数据为标识统计区域的数据,可以为栅格或矢量面数据。下图为使用栅格带数据进行分带统计的算法示意,其中灰色单元格代表无值数据。
当带数据为栅格数据集时,连续的栅格值相同的单元格作为一个带(区域);当带数据为矢量面数据集时,要求其属性表中有一个标识带的字段,以数值来区分不同的带,如果两个及以上的面对象(可以相邻,也可以不相邻)的标识值相同,则进行分带统计时,它们将作为一个带进行统计,即在结果栅格中,这些面对象对应位置的栅格值都是这些面对象范围内的所有单元格的栅格值的统计值。
分带统计的结果包含两部分:一是分带统计结果栅格,每个带内的栅格值相同,即按照统计方法计算所得的值;二是一个记录了每个分带内统计信息的属性表,包含 ZONALID(带的标识)、PIXELCOUNT(带内单元格数)、MININUM(最小值)、MAXIMUM(最大值)、RANGE_VALUE(值域)、SUM_VALUE(和)、MEAN(平均值)、STD(标准差)、VARIETY(种类)、MAJORITY(众数)、MINORITY(少数)、MEDIAN(中位数)等字段。
下面通过一个实例来了解分带统计的应用。
注意:分带统计的结果栅格的像素类型(PixelFormat
)与指定的分带统计类型(通过 ZonalStatisticsAnalystParameter 类的 setStatisticsMode
方法设置)有关:
parameter
- 指定的分带统计参数设置。public DatasetGrid rasterValueZonalStatistics(Dataset ZoneDataset, DatasetGrid ValueDataset, Datasource targetDatasource) { //设置结果栅格数据集的名称,并检查数据源中是否已存在该数据集,如存在则删除 String targetDatasetName = "zonalStastisticsResult"; if (targetDatasource.getDatasets().contains(targetDatasetName)) { targetDatasource.getDatasets().delete(targetDatasetName); } //设置结果属性表的名称,并检查数据源中是否已存在该数据集,如存在则删除 String outputTableName = "zonalStastisticsResultTable"; if (targetDatasource.getDatasets().contains(outputTableName)) { targetDatasource.getDatasets().delete(outputTableName); } ZonalStatisticsAnalystParameter zonalStatisticParameter = new ZonalStatisticsAnalystParameter(); zonalStatisticParameter.setTargetDatasource(targetDatasource); zonalStatisticParameter.setTargetDatasetName(targetDatasetName); zonalStatisticParameter.setTargetDatasource(targetDatasource); zonalStatisticParameter.setTargetTableName(outputTableName); zonalStatisticParameter.setIgnoreNoValue(false); zonalStatisticParameter.setStatisticsMode(GridStatisticsMode.SUM); zonalStatisticParameter.setValueDataset(ValueDataset); zonalStatisticParameter.setZonalDataset(ZoneDataset); //调用zonalStatisticsOnRasterValue方法,并获取分带统计结果(ZonalStatisticsAnalystResult)对象 ZonalStatisticsAnalystResult zonalStatisticResult = StatisticsAnalyst .zonalStatisticsOnRasterValue(zonalStatisticParameter); DatasetGrid resultDatasetGrid = zonalStatisticResult.getResultDatasetGrid(); return resultDatasetGrid; }
public static ZonalStatisticsAnalystResult zonalStatisticsOnRasterValue(ZonalStatisticsAnalystParameter parameter, SteppedListener... listeners)
栅格分带统计,是以某种统计方法对区域内的单元格的值进行统计,将每个区域内的统计值赋给该区域所覆盖的所有单元格,从而得到结果栅格。栅格分带统计涉及两种数据,值数据和带数据。值数据即被统计的栅格数据,带数据为标识统计区域的数据,可以为栅格或矢量面数据。下图为使用栅格带数据进行分带统计的算法示意,其中灰色单元格代表无值数据。
当带数据为栅格数据集时,连续的栅格值相同的单元格作为一个带(区域);当带数据为矢量面数据集时,要求其属性表中有一个标识带的字段,以数值来区分不同的带,如果两个及以上的面对象(可以相邻,也可以不相邻)的标识值相同,则进行分带统计时,它们将作为一个带进行统计,即在结果栅格中,这些面对象对应位置的栅格值都是这些面对象范围内的所有单元格的栅格值的统计值。
分带统计的结果包含两部分:一是分带统计结果栅格,每个带内的栅格值相同,即按照统计方法计算所得的值;二是一个记录了每个分带内统计信息的属性表,包含 ZONALID(带的标识)、PIXELCOUNT(带内单元格数)、MININUM(最小值)、MAXIMUM(最大值)、RANGE_VALUE(值域)、SUM_VALUE(和)、MEAN(平均值)、STD(标准差)、VARIETY(种类)、MAJORITY(众数)、MINORITY(少数)、MEDIAN(中位数)等字段。
下面通过一个实例来了解分带统计的应用。
注意:分带统计的结果栅格的像素类型(PixelFormat
)与指定的分带统计类型(通过 ZonalStatisticsAnalystParameter 类的 setStatisticsMode
方法设置)有关:
parameter
- 指定的分带统计参数设置。listeners
- 用于接收进度条事件的监听器。public DatasetGrid rasterValueZonalStatistics(Dataset ZoneDataset, DatasetGrid ValueDataset, Datasource targetDatasource) { //设置结果栅格数据集的名称,并检查数据源中是否已存在该数据集,如存在则删除 String targetDatasetName = "zonalStastisticsResult"; if (targetDatasource.getDatasets().contains(targetDatasetName)) { targetDatasource.getDatasets().delete(targetDatasetName); } //设置结果属性表的名称,并检查数据源中是否已存在该数据集,如存在则删除 String outputTableName = "zonalStastisticsResultTable"; if (targetDatasource.getDatasets().contains(outputTableName)) { targetDatasource.getDatasets().delete(outputTableName); } ZonalStatisticsAnalystParameter zonalStatisticParameter = new ZonalStatisticsAnalystParameter(); zonalStatisticParameter.setTargetDatasource(targetDatasource); zonalStatisticParameter.setTargetDatasetName(targetDatasetName); zonalStatisticParameter.setTargetDatasource(targetDatasource); zonalStatisticParameter.setTargetTableName(outputTableName); zonalStatisticParameter.setIgnoreNoValue(false); zonalStatisticParameter.setStatisticsMode(GridStatisticsMode.SUM); zonalStatisticParameter.setValueDataset(ValueDataset); zonalStatisticParameter.setZonalDataset(ZoneDataset); //调用zonalStatisticsOnRasterValue方法,并获取分带统计结果(ZonalStatisticsAnalystResult)对象 ZonalStatisticsAnalystResult zonalStatisticResult = StatisticsAnalyst .zonalStatisticsOnRasterValue(zonalStatisticParameter); DatasetGrid resultDatasetGrid = zonalStatisticResult.getResultDatasetGrid(); return resultDatasetGrid; }
public static void addSteppedListener(SteppedListener l)
SteppedEvent
)的监听器。l
- 一个用于接收进度条事件的监听器。public static void removeSteppedListener(SteppedListener l)
SteppedEvent
)的监听器。l
- 一个用于接收进度条事件的监听器。Copyright © 2021–2024 SuperMap. All rights reserved.