栅格数据查找替换。

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

语法

C#
public static DatasetGrid Replace(
	DatasetGrid sourceDataset,
	Dictionary<double, double> replaceTable,
	Datasource targetDatasource,
	string targetDatasetName
)

参数

sourceDataset
Type: SuperMap.Data..::.DatasetGrid
指定的待操作的栅格数据集。
replaceTable
Type: System.Collections.Generic..::.Dictionary<(Of <(Double, Double>)>)
指定的查找表,用于确定查找替换对应关系,是一个字典对象,其键代表源栅格值,值代表结果栅格值。
targetDatasource
Type: SuperMap.Data..::.Datasource
指定的用于存储结果数据集的数据源。
targetDatasetName
Type: System..::.String
指定的结果栅格数据集的名称。

返回值

进行查找替换操作后的结果栅格数据集。

备注

该功能根据查找表,将待操作栅格的某些值替换为新的值,结果为一个新的栅格数据集,源栅格不会被修改。查找表用于记录待操作栅格的值和替换值的对应关系。该方法要求传入一个字典(Dictionary)对象,字典的键为原值,即源栅格数据集的栅格值,字典的值为对应的替换值,即期望得到的结果栅格数据集的栅格值。

下图为栅格查找替换的示意图,假设源栅格的无值的值为 -9999。注意,无值的值不一定都是 -9999,可以通过 DatasetGrid 的 NoValue 属性获取或设置。

注意:

  1. 当源栅格的像素类型(PixelFormat)为整型时,替换值为包含小数位的数值时,最终替换结果将是替换值的整数部分;
  2. 当替换值超出源栅格像素类型的值域时,替换结果将不正确。

示例

CopyC#
private void ReplaceExample(Datasource datasource)
{
    //获取待进行查找替换的栅格数据集
    DatasetGrid sourceGrid = datasource.Datasets["Grid"] as DatasetGrid;

    //制作查找表
    Dictionary<Double, Double> repalceTable = new Dictionary<Double, Double>();
    Double noValue = sourceGrid.NoValue;
    repalceTable.Add(0, noValue);
    repalceTable.Add(7, 10);
    repalceTable.Add(12, 19.3);
    repalceTable.Add(21.5,16);
    repalceTable.Add(noValue,30);

    //进行查找替换,获取结果栅格
    DatasetGrid resultGrid = GeneralizeAnalyst.Replace(sourceGrid, repalceTable, datasource, "NewGrid");
}

请参见