天天看点

将栅格数据另存为.tif格式

/// <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博客