加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

[转载]导入栅格数据到SDE数据库

(2015-02-03 09:51:14)
标签:

转载

分类: ArcGIS


        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;
            }
        }

0

  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有