/// <summary>
/// 将栅格数据另存为.tif格式
/// 注意目标路径格式为@"C:\Users\lenovo\Desktop\result\x.tif"
/// </summary>
/// <param name="pRasterLayer">待处理栅格数据</param>
/// <param name="pTargetFilePath">目标路径</param>
static public void RasterSaveAsTif(IRasterLayer pRasterLayer, string pTargetFilePath)
{
Geoprocessor GP = new Geoprocessor();
GP.OverwriteOutput = true;
ESRI.ArcGIS.DataManagementTools.CopyRaster pCopyRaster = new ESRI.ArcGIS.DataManagementTools.CopyRaster();
pCopyRaster.in_raster = pRasterLayer;
pCopyRaster.out_rasterdataset = pTargetFilePath;
try
{
IGeoProcessorResult2 result = GP.Execute(pCopyRaster, null) as IGeoProcessorResult2;
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "GP Error");
}
finally
{
System.Text.StringBuilder sb = new System.Text.StringBuilder();
for (int i = 0; i < GP.MessageCount; i++)
sb.AppendLine(GP.GetMessage(i));
if (sb.Capacity > 0) MessageBox.Show(sb.ToString(), "GP Messages");
}
}
栅格数据另存有两种方式:①利用ISaveAs和ISaveAs2接口 ②利用GP工具另存
Dataset SaveAs (string Name,IWorkspace Workspace,string Format);
本人亲测经验:保存的路径中不要有中文字符,grid格式遇到中文字符就一个字坑坑坑,之前用给grid格式的数据修改投影也是因为中文字的问题修改失败。
1.参数Name注意事项
1)字符数不能超过13个
2)可以包含a-z ,A-Z ,0-9 ,“-”“_”. (这个都是一样)
3)必须以字母开头
2.传一个输出路径的工作空间即可 (RasterWorkspace)
//去黑边
IRasterProps pRasterProps=pRaster as IRasterProps;
pRasterProps.NoDataValue=255;
//另存输出
ISaveAs2 pSaveAs = pRaster as ISaveAs2;
if (!pSaveAs.CanSaveAs(sFormat))
{
XtraMessageBox.Show("不支持指定像素类型或文件格式的输出", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
return ;
}
IWorkspaceFactory worksapceFactory = new RasterWorkspaceFactoryClass();
workspace = worksapceFactory.OpenFromFile(System.IO.Path.GetDirectoryName(m_sOutputPath), 0);
IDataset dataset = pSaveAs.SaveAs(System.IO.Path.GetFileName(m_sOutputPath), workspace, sFormat);
ISaveAs 保存Grid格式数据_爱莫能助-CSDN博客
ArcEngine 栅格数据 总结_爱莫能助-CSDN博客