com.supermap.analyst.spatialanalyst

类 StatisticsAnalyst



  • public class StatisticsAnalyst
    extends Object
    栅格统计分析类。该类提供栅格数据的多种统计分析方法,如栅格数据的基本统计、常用统计、邻域分析、分带统计等。
    • 方法详细资料

      • createHistogram

        @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 小于或等于 0
      • createHistogram

        public 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
      • createHistogram

        @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

        注意:

        • 当变换函数类型为LOG时,待统计栅格数据集的值域最小值需要大于0,否则会抛出异常。
        • 当变换函数类型为ARCSIN时,待统计栅格数据集的值域需要在[-1,1]之内,否则会抛出异常。
      • createHistogram

        public static GridHistogram createHistogram(DatasetGrid statisticsGrid,
                                                    int groupCount,
                                                    FunctionType functionType,
                                                    SteppedListener... listeners)
        创建给定栅格数据集的直方图,可指定变换函数类型。

        指定变换函数时,直方图统计的数据是原始栅格值经过函数变换后得到的值。

        关于栅格直方图相关介绍请参考 createHistogram(DatasetGrid, int)方法。

        参数:
        statisticsGrid - 指定的栅格数据集。
        groupCount - 指定的直方图的组数。必须大于 0。
        functionType - 指定的变换函数类型。
        listeners - 用于接收进度条事件的监听器。
        返回:
        栅格直方图对象。
        抛出:
        IllegalArgumentException - 如果 groupCount 小于或等于 0

        注意:

        • 当变换函数类型为LOG时,待统计栅格数据集的值域最小值需要大于0,否则会抛出异常。
        • 当变换函数类型为ARCSIN时,待统计栅格数据集的值域需要在[-1,1]之内,否则会抛出异常。
      • createImageHistogram

        @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。

        注意:

        • 当变换函数类型为Log时,待统计影像数据集波段的值域最小值需要大于0,否则会抛出异常。
        • 当变换函数类型为ArcSin时,待统计影像数据集波段的值域需要在[-1,1]之内,否则会抛出异常。
      • createImageHistogram

        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。

        注意:

        • 当变换函数类型为Log时,待统计影像数据集波段的值域最小值需要大于0,否则会抛出异常。
        • 当变换函数类型为ArcSin时,待统计影像数据集波段的值域需要在[-1,1]之内,否则会抛出异常。
      • createImageHistogram

        @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。

        注意:

        • 当变换函数类型为Log时,待统计影像数据集每个波段的值域最小值需要大于0,否则会抛出异常。
        • 当变换函数类型为ArcSin时,待统计影像数据集每个波段的值域需要在[-1,1]之内,否则会抛出异常。
      • createImageHistogram

        public static GridHistogram[] createImageHistogram(DatasetImage statisticsImage,
                                                           int groupCount,
                                                           FunctionType functionType,
                                                           SteppedListener... listeners)
        创建影像数据集的直方图。

        影像直方图与栅格直方图类似。关于栅格直方图相关介绍请参考 createHistogram(DatasetGrid, int)方法。

        参数:
        statisticsImage - 指定的影像数据集。
        groupCount - 指定的直方图的组数。必须大于 0。
        functionType - 指定的变换函数类型。
        listeners - 用于接收进度条事件的监听器。
        返回:
        影像数据集所有波段的直方图对象, 每个波段索引对应一个直方图对象,结果索引与波段索引一致。
        抛出:
        IllegalArgumentException - 如果 groupCount 小于或等于 0。

        注意:

        • 当变换函数类型为Log时,待统计影像数据集每个波段的值域最小值需要大于0,否则会抛出异常。
        • 当变换函数类型为ArcSin时,待统计影像数据集每个波段的值域需要在[-1,1]之内,否则会抛出异常。
      • basicStatistics

        @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;
         }
        
         
      • basicStatistics

        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;
         }
        
         
      • basicStatistics

        @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;
         }
        
         

        注意:

        • 当变换函数类型为LOG时,待统计栅格数据集的值域最小值需要大于0,否则会抛出异常。
        • 当变换函数类型为ARCSIN时,待统计栅格数据集的值域需要在[-1,1]之内,否则会抛出异常。
      • basicStatistics

        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;
         }
        
         

        注意:

        • 当变换函数类型为LOG时,待统计栅格数据集的值域最小值需要大于0,否则会抛出异常。
        • 当变换函数类型为ARCSIN时,待统计栅格数据集的值域需要在[-1,1]之内,否则会抛出异常。
      • imageBasicStatistics

        public static BasicStatisticsAnalystResult imageBasicStatistics(DatasetImage statisticsImage,
                                                                        FunctionType functionType,
                                                                        int bandIndex,
                                                                        SteppedListener... listeners)
        对影像数据集某个波段进行基本统计分析。用于对影像数据集进行基本的统计分析,包括最大值、最小值、平均值和标准差等。
        参数:
        statisticsImage - 指定的待统计的影像数据。
        functionType - 指定的变换函数类型。
        bandIndex - 影像数据波段索引。
        listeners - 用于接收进度条事件的监听器。
        返回:
        基本统计分析结果。
      • imageBasicStatistics

        public static BasicStatisticsAnalystResult[] imageBasicStatistics(DatasetImage statisticsImage,
                                                                          FunctionType functionType,
                                                                          SteppedListener... listeners)
        对影像数据集某个波段进行基本统计分析。用于对影像数据集进行基本的统计分析,包括最大值、最小值、平均值和标准差等。
        参数:
        statisticsImage - 指定的待统计的影像数据。
        functionType - 指定的变换函数类型。
        listeners - 用于接收进度条事件的监听器。
        返回:
        基本统计分析结果。
      • commonStatistics

        @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...) 替换。
        栅格常用统计分析,将一个栅格数据集逐行逐列按照某种比较方式与一个固定值进行比较,比较结果为“真”的像元值为 1,为“假”的像元值为 0。
        参数:
        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;
         }
         
      • commonStatistics

        public static DatasetGrid commonStatistics(DatasetGrid statisticsGrid,
                                                   double comparedValue,
                                                   StatisticsCompareType type,
                                                   boolean isIgnoreNoValue,
                                                   Datasource targetDatasource,
                                                   String targetDatasetName,
                                                   SteppedListener... listeners)
        栅格常用统计分析,将一个栅格数据集逐行逐列按照某种比较方式与一个固定值进行比较,比较结果为“真”的像元值为 1,为“假”的像元值为 0。
        参数:
        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;
         }
         
      • commonStatistics

        @Deprecated
        public static DatasetGrid commonStatistics(DatasetGrid statisticsGrid,
                                                                DatasetGrid[] compareDatasets,
                                                                StatisticsCompareType compareType,
                                                                boolean isIgnoreNoValue,
                                                                Datasource targetDatasource,
                                                                String targetDatasetName)
        栅格常用统计分析,将输入栅格数据集与一个或多个栅格数据集的对应像元值进行比较,结果栅格数据集的像元值为比较结果为“真”的次数。

        关于无值的说明:

        1. 当待统计源数据集的栅格有无值时,如果忽略无值,则统计结果栅格也为无值,否则使用该无值参与统计;当各比较数据集的栅格有无值时,如果忽略无值,则此次统计(待统计栅格与该比较数据集的计算)不计入结果,否则使用该无值进行比较。
        2. 当无值不参与运算(即忽略无值)时,统计结果数据集中无值的值,由结果栅格的像素格式决定,为最大像元值,例如,结果栅格数据集像素格式为 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;
         }
         
      • commonStatistics

        public static DatasetGrid commonStatistics(DatasetGrid statisticsGrid,
                                                   DatasetGrid[] compareDatasets,
                                                   StatisticsCompareType compareType,
                                                   boolean isIgnoreNoValue,
                                                   Datasource targetDatasource,
                                                   String targetDatasetName,
                                                   SteppedListener... listeners)
        栅格常用统计分析,将输入栅格数据集与一个或多个栅格数据集的对应像元值进行比较,结果栅格数据集的像元值为比较结果为“真”的次数。

        关于无值的说明:

        1. 当待统计源数据集的栅格有无值时,如果忽略无值,则统计结果栅格也为无值,否则使用该无值参与统计;当各比较数据集的栅格有无值时,如果忽略无值,则此次统计(待统计栅格与该比较数据集的计算)不计入结果,否则使用该无值进行比较。
        2. 当无值不参与运算(即忽略无值)时,统计结果数据集中无值的值,由结果栅格的像素格式决定,为最大像元值,例如,结果栅格数据集像素格式为 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;
         }
         
      • neighbourStatistics

        @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;
         }
         
      • neighbourStatistics

        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;
         }
         
      • zonalStatisticsOnRasterValue

        @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(中位数)等字段。

        下面通过一个实例来了解分带统计的应用。

        1. 如下图所示,左图是 DEM 栅格值,将其作为值数据,右图为对应区域的行政区划,将其作为带数据,进行分带统计;
        2. 使用上面的数据,将最大值作为统计方法,进行分带统计。结果包括如下图所示的结果栅格,以及对应的统计信息属性表(略)。结果栅格中,每个带内的栅格值均相等,即在该带范围内的值栅格中最大的栅格值,也就是高程值。该例统计了该地区每个行政区内最高的高程。

        注意:分带统计的结果栅格的像素类型(PixelFormat)与指定的分带统计类型(通过 ZonalStatisticsAnalystParameter 类的 setStatisticsMode 方法设置)有关:

        • 当统计类型为种类(VARIETY)时,结果栅格像素类型为 BIT32;
        • 当统计类型为最大值(MAX)、最小值(MIN)、值域(RANGE)时,结果栅格的像素类型与源栅格保持一致;
        • 当统计类型为平均值(MEAN)、标准差(STDEV)、总和(SUM)、众数(MAJORITY)、最少数(MINORITY)、中位数(MEDIAN)时,结果栅格的像素类型为 DOUBLE。
        参数:
        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;
         }
         
      • zonalStatisticsOnRasterValue

        public static ZonalStatisticsAnalystResult zonalStatisticsOnRasterValue(ZonalStatisticsAnalystParameter parameter,
                                                                                SteppedListener... listeners)
        栅格分带统计,方法中值数据为栅格的数据集,带数据可以是矢量或栅格数据。

        栅格分带统计,是以某种统计方法对区域内的单元格的值进行统计,将每个区域内的统计值赋给该区域所覆盖的所有单元格,从而得到结果栅格。栅格分带统计涉及两种数据,值数据和带数据。值数据即被统计的栅格数据,带数据为标识统计区域的数据,可以为栅格或矢量面数据。下图为使用栅格带数据进行分带统计的算法示意,其中灰色单元格代表无值数据。

        当带数据为栅格数据集时,连续的栅格值相同的单元格作为一个带(区域);当带数据为矢量面数据集时,要求其属性表中有一个标识带的字段,以数值来区分不同的带,如果两个及以上的面对象(可以相邻,也可以不相邻)的标识值相同,则进行分带统计时,它们将作为一个带进行统计,即在结果栅格中,这些面对象对应位置的栅格值都是这些面对象范围内的所有单元格的栅格值的统计值。

        分带统计的结果包含两部分:一是分带统计结果栅格,每个带内的栅格值相同,即按照统计方法计算所得的值;二是一个记录了每个分带内统计信息的属性表,包含 ZONALID(带的标识)、PIXELCOUNT(带内单元格数)、MININUM(最小值)、MAXIMUM(最大值)、RANGE_VALUE(值域)、SUM_VALUE(和)、MEAN(平均值)、STD(标准差)、VARIETY(种类)、MAJORITY(众数)、MINORITY(少数)、MEDIAN(中位数)等字段。

        下面通过一个实例来了解分带统计的应用。

        1. 如下图所示,左图是 DEM 栅格值,将其作为值数据,右图为对应区域的行政区划,将其作为带数据,进行分带统计;
        2. 使用上面的数据,将最大值作为统计方法,进行分带统计。结果包括如下图所示的结果栅格,以及对应的统计信息属性表(略)。结果栅格中,每个带内的栅格值均相等,即在该带范围内的值栅格中最大的栅格值,也就是高程值。该例统计了该地区每个行政区内最高的高程。

        注意:分带统计的结果栅格的像素类型(PixelFormat)与指定的分带统计类型(通过 ZonalStatisticsAnalystParameter 类的 setStatisticsMode 方法设置)有关:

        • 当统计类型为种类(VARIETY)时,结果栅格像素类型为 BIT32;
        • 当统计类型为最大值(MAX)、最小值(MIN)、值域(RANGE)时,结果栅格的像素类型与源栅格保持一致;
        • 当统计类型为平均值(MEAN)、标准差(STDEV)、总和(SUM)、众数(MAJORITY)、最少数(MINORITY)、中位数(MEDIAN)时,结果栅格的像素类型为 DOUBLE。
        参数:
        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;
         }
         
      • zonalGeometricStatistics

        public static DatasetGrid zonalGeometricStatistics(DatasetGrid zonalGrid,
                                                           GeometricStatisticsMode statisticsMode,
                                                           Datasource targetDatasource,
                                                           String targetDatasetName,
                                                           SteppedListener... listeners)
        计算栅格数据中各区域的指定几何信息,并输出为结果统计栅格,可计算面积、周长、质心或厚度。

        关于统计结果栅格的说明:

        1. 结果栅格的范围及XY分辨率与源栅格相同。
        2. 统计类型为质心时,质心处的栅格值为它所属区域的源栅格值,其它格子位置的值都为无值。注意区域的质心可能不在源栅格所属区域内。其结果像素格式与与输入栅格格式相同。
        3. 统计类型为面积、周长或厚度时,结果栅格值的分布与源栅格数据的分布情况一致。其结果像素格式为双精度浮点型。

        关于栅格值单位的说明:

        1. 统计类型为质心时,质心处的栅格值为它所属区域的源栅格值,无单位概念;
        2. 其他统计类型的栅格值单位均与源栅格数据的坐标系单位一致。
        参数:
        zonalGrid - 栅格区域数据集。只支持整型像素格式。 值相同的栅格构成一个区域,每个区域不需要是连续区域,它可以由许多分散的区域组成。无值区域视为空白区域不参与计算。
        statisticsMode - 几何统计类型。可选择面积、周长、质心或厚度。
        targetDatasource - 指定的用于存储结果数据的数据源。
        targetDatasetName - 指定的结果数据集的名称。
        listeners - 用于接收进度条事件的监听器。
        返回:
        统计结果栅格数据集。
      • zonalGeometricStatisticsAsTable

        public static DatasetVector zonalGeometricStatisticsAsTable(DatasetGrid zonalGrid,
                                                                    Datasource targetDatasource,
                                                                    String targetDatasetName,
                                                                    SteppedListener... listeners)
        计算栅格数据中各区域的几何信息并输出至属性表,包括面积、周长、椭圆特征值和厚度。

        关于结果字段类型的说明:

        1. 区域ID即存储源栅格值的字段为64位整型;
        2. 其它属性字段都为双精度浮点型。

        关于数值单位的说明:

        1. 椭圆方向数值的单位为度;
        2. 其他属性值的单位均与源栅格数据的坐标系单位一致。

        关于椭圆方向的说明:

        1. 定义为X轴与椭圆长轴之间的角度,正东方为0度,以逆时针方向为正方向,取值范围为0至180度。
        2. 如果特定区域的椭圆特征值计算为圆(长短轴相等),则将其方向设置为90度。
        参数:
        zonalGrid - 栅格区域数据集。只支持整型像素格式。 值相同的栅格构成一个区域,每个区域不需要是连续区域,它可以由许多分散的区域组成。无值区域视为空白区域不参与计算。
        targetDatasource - 指定的用于存储结果数据的数据源。
        targetDatasetName - 指定的结果数据集的名称。
        listeners - 用于接收进度条事件的监听器。
        返回:
        统计结果属性表。结果属性列包括:源栅格值、区域面积、区域周长、厚度、质心X坐标、质心Y坐标、长半轴长度、短半轴长度、椭圆方向。
      • addSteppedListener

        public static void addSteppedListener(SteppedListener l)
        添加一个进度条事件(SteppedEvent)的监听器。
        参数:
        l - 一个用于接收进度条事件的监听器。
      • removeSteppedListener

        public static void removeSteppedListener(SteppedListener l)
        移除一个进度条事件(SteppedEvent)的监听器。
        参数:
        l - 一个用于接收进度条事件的监听器。

Copyright © 2021–2024 SuperMap. All rights reserved.