解决方法:
IRasterLayer rasterLyr = layer as IRasterLayer;
IRasterDataset rstDataset = (rasterLyr.Raster as IRaster2).RasterDataset;
if (rstDataset == null) return;
if (rstDataset.CanCopy())
{
string rasterName = Path.GetFileNameWithoutExtension(rstDataset.CompleteName);
if (rasterName.IndexOf('.') > -1)
rasterName = rasterName.Remove(rasterName.IndexOf('.'));
//FGDBR格式的栅格数据复制失败,单独处理
if (rstDataset.Format.Equals("FGDBR"))
{
IExtractionOp extraction = new RasterExtractionOpClass();
IGeoDataset geoDataset = extraction.Rectangle((IGeoDataset)rasterLyr.Raster, rasterLyr.AreaOfInterest, true);
if (geoDataset is IRaster2)
{
rstDataset = (geoDataset as IRaster2).RasterDataset;
}
}
rstDataset = rstDataset.Copy(rasterName, rasterWorkspace) as IRasterDataset;
rasterLyr.CreateFromDataset(rstDataset);
}