对栅格或影像数据集进行裁剪,结果存储为一个新的栅格或影像数据集。
命名空间:
SuperMap.Analyst.SpatialAnalyst程序集: SuperMap.Analyst.SpatialAnalyst (in SuperMap.Analyst.SpatialAnalyst)
版本: dll
语法
C# |
---|
public static Dataset Clip( Dataset sourceDataset, GeoRegion userRegion, bool isClipInRegion, bool isExactClip, Datasource targetDatasource, string targetDatasetName ) |
参数
- sourceDataset
- Type: SuperMap.Data..::.Dataset
指定的要进行裁剪的数据集,支持栅格数据集和影像数据集。
- userRegion
- Type: SuperMap.Data..::.GeoRegion
指定的裁剪区域,可以为矩形、圆形、多边形等。
- isClipInRegion
- Type: System..::.Boolean
指定是否对裁剪区内的数据集进行裁剪。若为 true,则对裁剪区域内的数据集进行裁剪,若为 false ,则对裁剪区域外的数据集进行裁剪。
- isExactClip
- Type: System..::.Boolean
指定是否使用精确裁剪。若为 true,表示使用精确裁剪对栅格或影像数据集进行裁剪,false 表示使用显示裁剪。
- targetDatasource
- Type: SuperMap.Data..::.Datasource
指定的用于存储结果数据集的数据源。
- targetDatasetName
- Type: System..::.String
指定的存储结果数据集的名称。
返回值
裁剪的结果数据集。备注
有时,我们的研究范围或者感兴趣区域较小,仅涉及当前栅格数据的一部分,这时可以对栅格数据进行裁剪,即通过一个 {@link GeoRegion GeoRegion} 对象作为裁剪区域对栅格数据进行裁剪,提取该区域内(外)的栅格数据生成一个新的数据集,此外,还可以选择进行精确裁剪或显示裁剪。
- 区域内与区域外裁剪
- 精确裁剪与显示裁剪
选择区域内裁剪,则被裁剪的栅格数据在裁剪区范围内的部分被保留到结果数据集中;相反,使用区域外裁剪,则保留不在裁剪区范围内的那部分数据到结果数据集中。
请结合下图来理解显示裁剪和精确裁剪的区别。注意,下图的示例采用的是区域内裁剪方式。
采用显示裁剪时,系统会按照像素分块(详见 DatasetGrid.BlockSizeOption、DatasetImage.BlockSizeOption 属性)的大小,对栅格或影像数据集进行裁剪。此时只有裁剪区域内的数据被保留,即如果裁剪区的边界没有恰好与单元格的边界重合,那么单元格将被分割,位于裁剪区的部分会保留下来;位于裁剪区域外,且在被裁剪的那部分栅格所在块的总范围内(即图 2 中灰色区域)的栅格仍有栅格值,但不显示。此种方式适用于大数据的裁剪。
采用精确裁剪时,系统在裁剪区域边界,会根据裁剪区域压盖的单元格的中心点的位置确定是否保留该单元格。如果使用区域内裁剪方式,单元格的中心点位于裁剪区内则保留,反之不保留。