导入shape文件到SDE数据库

/**

       * pDataSet:要导出的数据库的数据集,如果直接导入到数据库而不是数据集,则使用强制转换IWorkspace-->IDataset

       * strFeatFileDir:要导入的shape文件所在目录

       * strFeatFileName:要导入的shape文件名

       * isWorkspace:标识是导入数据库还是数据集

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

       *failInfo:导入失败文件名  

       *errorDetail:错误信息  

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

     **/

 

        public void FeatureClassToFeatureClass(IDataset pDataSet, string strFeatFileDir, string strFeatFileName, string strOutName, bool isWorkspace, ref string failInfo, ref string errorDetail, ref string skipInfo)

        {

            try

            {

                IWorkspaceFactory pWSF = new ShapefileWorkspaceFactoryClass();

                IFeatureWorkspace pFeatureWK = (IFeatureWorkspace)pWSF.OpenFromFile(strFeatFileDir, 0);

                IFeatureClass pInFeatureClass = pFeatureWK.OpenFeatureClass(strFeatFileName);

 

                if (pInFeatureClass == null || pDataSet == null)

                {

                    if (failInfo == "")

                    {

                        failInfo = strFeatFileDir + "\\" + strFeatFileName;

                        errorDetail = "错误信息:" + strFeatFileDir + "是空的矢量工作空间。";

                    }

                    else

                    {

                        failInfo += ";" + strFeatFileDir + "\\" + strFeatFileName;

                        errorDetail += ";" + "错误信息:" + strFeatFileDir + "是空的矢量工作空间。";

                    }

                    return;

                }

 

                IFeatureClassName pInFeatureclassName;

                IDataset pIndataset = (IDataset)pInFeatureClass;

                pInFeatureclassName = (IFeatureClassName)pIndataset.FullName;

 

                //如果名称已存在

                IWorkspace2 pWS2 = null;

                if (isWorkspace)

                    pWS2 = pDataSet as IWorkspace2;

                else

                    pWS2 = pDataSet.Workspace as IWorkspace2;

 

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

                {

                    DialogResult result;

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

                    //覆盖原矢量要素

                    if (result == DialogResult.Yes)

                    {

                        IFeatureWorkspace pFWS = (IFeatureWorkspace)pWS2;

                        IDataset pDataset = pFWS.OpenFeatureClass(strOutName) as IDataset;

                        pDataset.Delete();

                        pDataset = null;

                    }

                    else if (result == DialogResult.No)

                    {

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

                        if (skipInfo == "")

                            skipInfo = strFeatFileDir + "\\" + strFeatFileName;

                        else

                            skipInfo += ";" + strFeatFileDir + "\\" + strFeatFileName;

                        return;

                    }

                }

 

                IFields pInFields, pOutFields;

 

                IFieldChecker pFieldChecker = new FieldCheckerClass();

                IEnumFieldError pError;

                pInFields = pInFeatureClass.Fields;

                pFieldChecker.Validate(pInFields, out pError, out pOutFields);

 

                IField geoField = null;

                for (int i = 0; i < pOutFields.FieldCount; i++)

                {

                    IField pField = pOutFields.get_Field(i);

                    if (pField.Type == esriFieldType.esriFieldTypeOID)

                    {

                        IFieldEdit pFieldEdit = (IFieldEdit)pField;

                        pFieldEdit.Name_2 = pField.AliasName;

                    }

                    if (pField.Type == esriFieldType.esriFieldTypeGeometry)

                    {

                        geoField = pField;

                        break;

                    }

                }

 

                IGeometryDef geometryDef = geoField.GeometryDef;

 

                IFeatureDataConverter one2another = new FeatureDataConverterClass();

 

                IFeatureClassName pOutFeatureClassName = new FeatureClassNameClass();

                IDatasetName pOutDatasetName = (IDatasetName)pOutFeatureClassName;

                if (isWorkspace)

                    pOutDatasetName.WorkspaceName = (IWorkspaceName)pDataSet.FullName;

                else

                    pOutDatasetName.WorkspaceName = (IWorkspaceName)((IDataset)pDataSet.Workspace).FullName;

                pOutDatasetName.Name = strOutName;

 

                if (isWorkspace)

                {

                    one2another.ConvertFeatureClass(pInFeatureclassName, null, null, pOutFeatureClassName, geometryDef,

                    pOutFields, "", 1000, 0);

                }

                else

                {

                    IFeatureDataset pFeatDS = (IFeatureDataset)pDataSet;

                    IFeatureDatasetName pOutFeatDSName = pFeatDS.FullName as IFeatureDatasetName;

 

                    one2another.ConvertFeatureClass(pInFeatureclassName, null, pOutFeatDSName, pOutFeatureClassName, geometryDef,

                    pOutFields, "", 1000, 0);

                    pOutFeatDSName = null;

                    pFeatDS = null;

                }

            }

            catch (Exception ex)

            {

                if (failInfo == "")

                {

                    failInfo = strFeatFileDir + "\\" + strFeatFileName;

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

                }

                else

                {

                    failInfo += ";" + strFeatFileDir + "\\" + strFeatFileName;

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

                }

                Console.WriteLine(ex.Message);

                return;

            }

        }

转载于:https://www.cnblogs.com/bluemaplestudio/archive/2010/04/13/1710747.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/299339.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ASP.NET Core 配置 - 创建自定义配置提供程序

ASP.NET Core 配置 - 创建自定义配置提供程序在本文中&#xff0c;我们将创建一个自定义配置提供程序&#xff0c;从数据库读取我们的配置。我们已经了解了默认配置提供程序的工作方式&#xff0c;现在我们将实现我们自己的自定义配置提供程序。对于自定义配置提供程序&#xf…

为什么你的孩子拼命做题,成绩还总是上不去?

▲ 点击查看以前有句名言&#xff1a;“学好数理化&#xff0c;走遍天下都不怕。”这句话放到现在可能并不一定适用&#xff0c;但是数理化生仍然是在孩子整个学习生涯中&#xff0c;占比分量非常重的学科。然而&#xff0c;对很多孩子而言&#xff0c;学习数理化生却是很枯燥乏…

js请求结果拦截机器_CefSharp请求资源拦截及自定义处理

前言在CefSharp中&#xff0c;我们不仅可以使用Chromium浏览器内核&#xff0c;还可以通过Cef暴露出来的各种Handler来实现我们自己的资源请求处理。什么是资源请求呢&#xff1f;简单来说&#xff0c;就是前端页面在加载的过程中&#xff0c;请求的各种文本&#xff08;js、cs…

ListView

2019独角兽企业重金招聘Python工程师标准>>> ListView总结(多选框ListViiew,动态加载&#xff0c;多线程更新ListView中的进度条) convertView缓存及使用 ListView 更高效的使用 Adapter ListView中convertView和ViewHolder的工作原理 convertView&setTag方…

原来,程序的世界远比我想象的精彩

原来&#xff0c;程序的世界远比我想象的精彩 注&#xff1a;本文转载自http://www.cnblogs.com/dingxue/archive/2008/12/23/1360908.html&#xff0c;作者丁学。文中所有的 Pxx 指得是《Erlang程序设计》一书中的页码&#xff0c;书的信息放在文章最后。人都说无知者无畏&am…

广州五羊雕像特色

明天qq群里不时讨论&#xff0c;广州五羊塑像的那5个羊的性别终究是公是母。。经过搜索&#xff0c;大局部材料是说最大的是母羊&#xff0c;上面是4个小羊&#xff1b; 有小局部音讯说&#xff0c;两头最大的是公羊&#xff0c;周围有母羊和小羊。。。 真相不得而知了。。。本…

【MSLearn 学习模块】Hi ! ⼀起来学Python

随着大数据、人工智能、物联网的兴起&#xff0c;Python越来越受到大家的关注。不论你是⼀位学生&#xff0c;是一位传统的码农&#xff0c;还是非计算机领域的从业人员都离不开Python。当然大家的角度不⼀样&#xff0c;作为学生是以学为主&#xff0c;码农是以用为主&#xf…

有趣的12张数学原理动图,令人舒心却又伤脑!你看懂几个?

全世界只有3.14 % 的人关注了爆炸吧知识下面的12张数学动图你能看懂几个&#xff0c;反正知识君是都看懂了。1.被简单证明的勾股定理给三角形加上一点厚度。从面积问题&#xff0c;跳转到了具象的体积问题。2.勾股定理的面积证明法Its a long story……慢慢看。3.周长和直径的π…

typora插入代码设置_Typora基本功能介绍

Typora是什么&#xff1f;提起Typora&#xff0c;如果是使用过Markdown的人&#xff0c;应该就不太陌生&#xff0c;Typora 是一款支持实时预览的 Markdown 文本编辑器。它有 OS X、Windows、Linux 三个平台的版本&#xff0c;并且由于仍在测试中&#xff0c;是完全免费的。在T…

Linux虚拟机克隆后网卡找不到问题

解决虚拟机克隆网卡丢失问题1.克隆后的虚拟机网卡显示如下[rootser5 桌面]# ifconfiglo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0inet6 addr: ::1/128 Scope:HostUP LOOPBACK RUNNING MTU:16436 Metric:1RX packets:120 errors:0 dropped:0 o…

head rush ajax chapter4 DOM

《 Head Rush Ajax》website: http://www.headfirstlabs.com/books/hrajax/document对象可以让你的JavaScript访问Web浏览器的DOM树。可以把<html>看作树的根。getElementById()通过id属性找到页面中的元素。var mananger document.getElementById("Mg").valu…

【DotNetMLLearn】.NET Core人工智能系列-概述

.NETer大家好&#xff0c;今天为大家送上.NET Core 下如何完成人工智能应用的系列&#xff0c;希望给.NETer进入人工智能领域提供一个指引。.NET Core已经是一个全场景应用的技术栈方案&#xff0c;对于每一个领域都有支持。自从微软在开源发力后&#xff0c;.NET Core的社区能…

fanuc机器人控制柜接线_FANUC涂胶标定参考

FANUC涂胶标定参考1、进入SETUP界面2、选择DISPENCE界面3、选择15 flow rate control,按F2 detail进入4、进入标定界面此画面定义含义如下&#xff1a;(1)为涂胶标定单位,TCPP BEAD WIDTH宽度为基准(2)为 输入理想涂胶宽度,desired flow rate(3)为定义出胶轨迹sample program(一…

硬盘坏道修复白皮书

常识&#xff1a;硬盘坏道分类 - 不同坏道分仔细由于硬盘采用磁介质来存储数据&#xff0c;在经历长时间的使用或者使用不当之后&#xff0c;难免会发生一些问题&#xff0c;也就是我们通常所说的产生“坏道”&#xff0c;当然这种坏道有可能 是软件的错误&#xff0c;也有可能…

Objective-C 学习记录6--dictionary

1.NSDictionary 和NSMutableDictionary NSDictionary dictionaryWithObjectsAndKeys:~,nil 使用键值对创建字典,用nil标志结束 NSDictionary initWithObjectsAndKeys: 使用键值对初始化字典,也用nil来表示结束. dictionary count 计算其字典的长度. dictionary keyEunmerator …

糟糕!复工后,最让人担心的问题又又又来了!

▲ 点击查看你复工多久了&#xff1f;当我们在家宅着的时候&#xff0c;一天到晚都想着什么时候才能出去。然而现在公司一通知复工&#xff0c;其实心里还是有点犯怵。先不说通勤了&#xff0c;上班吃饭就有又成为大家绕不开的问题。现在虽然可以在外面点外卖&#xff0c;但说实…

Myeclipse中Tomcat的两种部署方式

一、在Myeclipse软件中部署 1、 在Myeclipse中&#xff0c;创建好工程后&#xff0c;在Myeclipse菜单栏中选择 Windows -> Preferences -> Myeclipse -> Tomcat5&#xff0c;选择"Enable"&#xff1b;Tomact Home Directory要选择你机器上Tomcat所安装的目录…

为什么 ASP.NET Core WebAPI 继承 ControllerBase 而不是 Controller ?

咨询区 Alex Sansau&#xff1a;我是 ASP.NET Core Web API 的初学者&#xff0c;我在跟着文档创建 Controller 时&#xff0c;VS模板引擎给我生成了如下 Controller 模板代码&#xff0c;我发现有一个奇怪的地方如下&#xff1a;public class TodoController : Controller { }…

配置yml_dctc:生成docker-compose.yml配置的工具

有时候&#xff0c;我们需要想知道docker容器的运行参数、环境变量等配置&#xff0c;以便容器以后被删掉之后&#xff0c;可以重新运行起来。特别是在测试环境&#xff0c;有些容器可能就是一个docker run就运行起来了。或者随便找一个目录丢了一个docker-compose.yml运行起来…

Silverlight 2 应用程序部署到任意HTML页面

Silverlight 2 应用程序部署到任意HTML页面&#xff0c;可以采用ActiveX的方法&#xff0c;在页面中放入object标签&#xff0c;设置相应的属性即可。使用 object 元素&#xff0c;可以用与所有受支持浏览器兼容的方式在 HTML 中嵌入和配置 Silverlight 插件。具体可参看&#…