IExtractionOp.Polygon方法的问题

rt,用IExtractionOp.Polygon方法对多于三个波段的影像使用shape进行裁剪,裁剪出来的结果,波段变成了三个,nodatavalue和pixel type都变了。。。 何解?
public static void RasterClip(IRasterLayer pRasterLayer, IPolygon clipGeo, string FileName)
{
try
{

IRaster pRaster = pRasterLayer.Raster;

IRasterProps pProps = pRaster as IRasterProps;

object cellSizeProvider = pProps.MeanCellSize().X;

IGeoDataset pInputDataset = pRaster as IGeoDataset;

IExtractionOp pExtractionOp = new RasterExtractionOpClass();

IRasterAnalysisEnvironment pRasterAnaEnvir = pExtractionOp as IRasterAnalysisEnvironment;

pRasterAnaEnvir.SetCellSize(esriRasterEnvSettingEnum.esriRasterEnvValue, ref cellSizeProvider);

object extentProvider = clipGeo.Envelope;

object snapRasterData = Type.Missing;

pRasterAnaEnvir.SetExtent(esriRasterEnvSettingEnum.esriRasterEnvValue, ref extentProvider, ref snapRasterData);

IGeoDataset pOutputDataset = pExtractionOp.Polygon(pInputDataset, clipGeo as IPolygon, true);//裁切操作

IRaster clipRaster; //裁切后得到的IRaster

if (pOutputDataset is IRasterLayer)
{

IRasterLayer rasterLayer = pOutputDataset as IRasterLayer;

clipRaster = rasterLayer.Raster;
 

}

else if (pOutputDataset is IRasterDataset)
{

IRasterDataset rasterDataset = pOutputDataset as IRasterDataset;

clipRaster = rasterDataset.CreateDefaultRaster();

}

else if (pOutputDataset is IRaster)
{

clipRaster = pOutputDataset as IRaster;

}

else
{

return;

}

IRasterProps temRasterPro = clipRaster as IRasterProps;

temRasterPro.NoDataValue = pProps.NodataValue;
temRasterPro.PixelType = pProps.PixelType;

//保存裁切后得到的clipRaster

//如果直接保存为img影像文件

IWorkspaceFactory pWKSF = new RasterWorkspaceFactoryClass();

IWorkspace pWorkspace = pWKSF.OpenFromFile(System.IO.Path.GetDirectoryName(FileName), 0);

ISaveAs pSaveAs = clipRaster as ISaveAs;

pSaveAs.SaveAs(System.IO.Path.GetFileName(FileName), pWorkspace, "IMAGINE Image");//以img格式保存

MessageBox.Show("成功!", "信息提示", MessageBoxButtons.OK, MessageBoxIcon.Information);

}
catch(Exception exp)
{
MessageBox.Show("失败!", "信息提示", MessageBoxButtons.OK, MessageBoxIcon.Information);

}
已邀请:

石羽

赞同来自:

输入参数不要用RasterLayer,当然里面也不要用Raster,直接用RasterDataset
这三者是有区别的,典型问题就是你这个

葱子脚脚

赞同来自:

请问 你用 IExtractionOp.Polygon 裁剪遥感影像速度咋样 我用发觉速度很慢 特慢。。一张农房居民地的图都要一分钟。。还是我哪里写的有问题 我最后用的mask这个方法 平均0.5秒一张。

要回复问题请先登录注册