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;

                }

            }

  • 相关阅读:
    第三节 java 数组(循环遍历、获取数组的最值(最大值和最小值)、选择排序、冒泡排序、练习控制台输出大写的A)
    第三节 java 数组
    brpc
    thrift 总结
    C++ 中 # 和## 的使用
    查看系统句柄数
    zenuml
    shell脚本
    resize() reserve()函数的区别(vector)
    grep 用法
  • 原文地址:https://www.cnblogs.com/bluemaplestudio/p/1710751.html
Copyright © 2011-2022 走看看