栅格数据聚合,返回结果栅格数据集。

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

语法

C#
public static DatasetGrid Aggregate(
	DatasetGrid sourceDataset,
	int scale,
	AggregationType aggregationType,
	bool isExpanded,
	bool isIgnoreNoValue,
	Datasource targetDatasource,
	string targetDatasetName
)

参数

sourceDataset
Type: SuperMap.Data..::.DatasetGrid
指定的进行聚合操作的栅格数据集。
scale
Type: System..::.Int32
指定的结果栅格与输入栅格之间栅格大小的比例。取值为大于 1 的整型数值。
aggregationType
Type: SuperMap.Analyst.SpatialAnalyst..::.AggregationType
指定的聚合操作类型。
isExpanded
Type: System..::.Boolean
指定是否处理零头。当原栅格数据的行列数不是 scale 的整数倍时,栅格边界处则会出现零头。
isIgnoreNoValue
Type: System..::.Boolean
targetDatasource
Type: SuperMap.Data..::.Datasource
指定的存储结果数据集的数据源。
targetDatasetName
Type: System..::.String
指定的结果数据集的名称。

返回值

结果栅格数据集。

备注

栅格聚合操作是以整数倍缩小栅格分辨率,生成一个新的分辨率较粗的栅格的过程。此时,每个像元由原栅格数据的一组像元聚合而成,其值由其包含的原栅格的值共同决定,可以取包含栅格的和、最大值、最小值、平均值、中位数。如缩小n(n为大于1的整数)倍,则聚合后栅格的行、列的数目均为原栅格的1/n,也就是单元格大小是原来的n倍。聚合可以通过对数据进行概化,达到清除不需要的信息或者删除微小错误的目的。

下图为栅格聚合的示意图,展示了将左侧的栅格的分辨率整体缩小2倍,聚合方法使用 Min ,分别在忽略无值和考虑无值时的结果。其中灰色格子代表无值。

注意:如果原栅格数据的行列数不是 scale 的整数倍,使用 isExpanded 参数来处理零头。

1. isExpanded 为 true,则在零头加上一个数,使之成为一个整数倍,扩大的范围其栅格值均为无值,因此,结果数据集的范围会比原始的大一些。

2. isExpanded 为 false,去掉零头,结果数据集的范围会比原始的小一些。

示例

以下代码示范了如何进行栅格聚合操作,获取结果栅格数据集。示例中使用的聚合类型为取平均值(AggregationType.Average),聚合结果栅格数据分辨率缩小至原数据的四分之一。

CopyC#
private DatasetGrid GridAggregate(DatasetGrid sourceDatasetGrid, Datasource targetDatasource)
{
    //设置结果栅格数据集的名称,并检查数据源中是否已存在该数据集,如存在则删除
    String targetDatasetName = "resultAggregate";
    if (targetDatasource.Datasets.Contains(targetDatasetName))
    {
        targetDatasource.Datasets.Delete(targetDatasetName);
    }

    //调用栅格聚合方法,并获取结果数据集
    DatasetGrid resultDatasetGrid = GeneralizeAnalyst.Aggregate(sourceDatasetGrid, 4, AggregationType.Average, false, true, targetDatasource, targetDatasetName);

    return resultDatasetGrid;
}

请参见