zoukankan      html  css  js  c++  java
  • 导入栅格数据到SDE数据库

    /**  

      *strRasterFileDir:栅格数据文件所在目录  

      *strRasterFileName:栅格数据文件名  

      *strOutName:存储于数据库的文件名  

      *failInfo:导入失败文件名  

      *errorDetail:错误信息  

      *skipInfo:发现重名情况跳过文件名

    **/

            private void imortRasterData(string strRasterFileDir, string strRasterFileName, string strOutName, ref string failInfo, ref string errorDetail, ref string skipInfo)

            {

                try

                {

                    //判断是否有重名现象

                    IWorkspace2 pWS2 = pSdeWorkSpace as IWorkspace2;

     

                    //如果名称已存在

                    if (pWS2.get_NameExists(esriDatasetType.esriDTRasterDataset, strOutName))

                    {

                        DialogResult result;

                        result = MessageBox.Show(this, "栅格文件名  " + strOutName + "  在数据库中已存在!" + "\r是否覆盖?", "相同文件名", MessageBoxButtons.YesNo, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1);

                        //覆盖原矢量要素

                        if (result == DialogResult.Yes)

                        {

                            IRasterWorkspaceEx pRWs = pSdeWorkSpace as IRasterWorkspaceEx;

                            IDataset pDataset = pRWs.OpenRasterDataset(strOutName) as IDataset;

                            pDataset.Delete();

                            pDataset = null;

                        }

     

                        else if (result == DialogResult.No)

                        {

                            //不覆盖,则退出for循环,忽略这个要素,转入下一个要素的导入

                            if (skipInfo == "")

                                skipInfo = strRasterFileDir + "\\" + strRasterFileName;

                            else

                                skipInfo += ";" + strRasterFileDir + "\\" + strRasterFileName;

                            return;

                        }

                    }

                    IWorkspaceFactory pRasterWsFac = new RasterWorkspaceFactoryClass();

                    IWorkspace pWs = pRasterWsFac.OpenFromFile(strRasterFileDir, 0);

                    IRasterDataset pRasterDs = null;

                    IRasterWorkspace pRasterWs;

                    if (!(pWs is IRasterWorkspace))

                    {

                        if (failInfo == "")

                        {

                            failInfo = strRasterFileDir + "\\" + strRasterFileName;

                            errorDetail = "错误信息:" + strRasterFileDir + "不是栅格工作空间。";

                        }

                        else

                        {

                            failInfo += ";" + strRasterFileDir + "\\" + strRasterFileName;

                            errorDetail += ";" + "错误信息:" + strRasterFileDir + "不是栅格工作空间。";

                        }

                        return;

                    }

                    pRasterWs = pWs as IRasterWorkspace;

                    pRasterDs = pRasterWs.OpenRasterDataset(strRasterFileName);

                    ISaveAs2 saveAs2 = (ISaveAs2)pRasterDs;

                    IRasterStorageDef rasterStorageDef = new RasterStorageDefClass();

                    IRasterStorageDef2 rasterStorageDef2 = (IRasterStorageDef2)rasterStorageDef;

                    rasterStorageDef2.CompressionType =

                        esriRasterCompressionType.esriRasterCompressionJPEG2000;

     

                    rasterStorageDef2.CompressionQuality = 50;

                    rasterStorageDef2.Tiled = true;

                    rasterStorageDef2.TileHeight = 128;

                    rasterStorageDef2.TileWidth = 128;

     

                    saveAs2.SaveAsRasterDataset(strOutName, pSdeWorkSpace, "gdb", rasterStorageDef2);

                }

                catch (Exception ex)

                {

                    Console.WriteLine(ex.Message);

                    if (failInfo == "")

                    {

                        failInfo = strRasterFileDir + "\\" + strRasterFileName;

                        errorDetail = "错误信息:" + ex.Message;

                    }

                    else

                    {

                        failInfo += ";" + strRasterFileDir + "\\" + strRasterFileName;

                        errorDetail += ";" + "错误信息:" + ex.Message;

                    }

                    return;

                }

            }

  • 相关阅读:
    curl命令使用
    eclipse安装maven3
    【转】轻松搞定面试中的二叉树题目
    【转】轻松搞定面试中的链表题目
    CPP_运算符重载及友元
    CPP_template
    CPP基础
    CPP_封装_继承_多态
    CPP_类默认函数:构造函数,拷贝构造函数,赋值函数和析构函数
    CPP_const&static
  • 原文地址:https://www.cnblogs.com/bluemaplestudio/p/1710751.html
Copyright © 2011-2022 走看看