栅格数据聚合,返回结果栅格数据集。
命名空间:
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 isIgnoreNoVaule, 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 的整数倍时,栅格边界处则会出现零头。
- isIgnoreNoVaule
- Type: System..::.Boolean
在聚合范围内含有无值数据时聚合操作的计算方式。如果为 true,使用聚合范围内除无值外的其余栅格值来计算;如果为 false,则聚合结果为无值。
- 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; }