博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
导入要素集到SDE数据库的方法以及使用GP工具的许可问题(转载)
阅读量:6438 次
发布时间:2019-06-23

本文共 3030 字,大约阅读时间需要 10 分钟。

转自:http://blog.csdn.net/lk103852503/article/details/7496850

费话不说,先上代码

       public static void shpFeatureClassToGeodatabase(string inputPath,string sdePath)

        {

            ESRI.ArcGIS.ConversionTools.FeatureClassToGeodatabasefeatureClassToGeodatabase =newESRI.ArcGIS.ConversionTools.FeatureClassToGeodatabase();

           featureClassToGeodatabase.Output_Geodatabase = sdePath;

           featureClassToGeodatabase.Input_Features = inputPath;

           featureClassToGeodatabase.Derived_Geodatabase = "";

            Geoprocessorgeoprocessor =newGeoprocessor();

            geoprocessor.OverwriteOutput = true;

            try

            {       

               geoprocessor.Execute(featureClassToGeodatabase, null);

                string mess = null;

                for(int k = 0; k < geoprocessor.MessageCount;k++)

                {

                    mess +=geoprocessor.GetMessage(k) + "\n";

                }

                MessageBox.Show(mess);

            }

            catch(Exception ex)

            {

                stringmess = null;

                for(int k = 0; k < geoprocessor.MessageCount;k++)

                {

                    mess += geoprocessor.GetMessage(k) + "\n";

                }

            }

        }

 此函数的作用是将要素集导入中,这里主要使用了FeatureClassToGeodatabase类,这是一个将要素集导入数据库的类,这个数据库不仅仅是SDE数据库,还包括personal geodatabase和 file geodatabase,导入不同的数据库时,参数写法不同。导入SDE数据库,这样调用该函数:

string shpPath=@"E:\Data\TestData\streetPoint.shp";

stringsdePath = @"C:\Users\Administrator\AppData\Roaming\ESRI\Desktop10.0\ArcCatalog\Connectionto localhost.sde";

 //stringsdePath = @"E:\Data\TestData\New File Geodatabase.gdb";     

  shpFeatureClassToGeodatabase(shpPath,sdePath);

要注意的关键问题:

1.     数据库路径参数的写法

sdePath这个参数的写法十分关键,它实际指向的是SDE数据库连接文件,这个文件是在Catolog中连接数据库时自动生成的,当然也可以用代码来创建SDE数据库连接文件,并以此来连接数据库,方法如下:

            IPropertySetpProSet =newPropertySet();

            try

            {

                pProSet.SetProperty("Server","EGOVA-Likun");

                pProSet.SetProperty("Instance","5152");

                pProSet.SetProperty("Database","cgdb");

                pProSet.SetProperty("user","sde");

                pProSet.SetProperty("password","sde");

                pProSet.SetProperty("version","SDE.DEFAULT");

            }

 

            catch(Exception ex)

           {

                stringmsg = ex.Message;

             }

        string path =@"C:\test";

            string sdeName =@"test.sde";

            string sdePath = path +"\\" + sdeName;

            if (File.Exists(sdePath))

            {

                File.Delete(sdePath);

            }

 

IWorkspaceFactory workspaceFactory =newSdeWorkspaceFactoryClass();

  IWorkspaceName workspaceName = workspaceFactory.Create(path, sdeName,pProSet, 0);

 

2.      许可问题

当做好以上这些后,可能会发现导入数据不成功,错误提示如下:

ERROR 00210:Cannot create output

这里是提示不能创建输出,此时,如果在此SDE数据库中做其它的操作如创建、删除、修改时,提示这样的错误:The application is not licensed to create or modify schema for thistype of data,那么可以确定这是许可问题。解决方法如下:

打开License属性,在Products栏中勾选上ArcGIS Engine Enterprise Geodatabase,在Extension一栏中勾选Data Interoperability,这样的做的目的是要获取产品版本的许可以及扩展模块的许可,千万要注意的是在Products一栏中勾选对应的产品许可即可,不要多选。

如果用代码来设置许可,方法如下(代码):

com.esri.arcgis.system.AoInitializeao =new com.esri.arcgis.system.AoInitialize();

           if(ao.isProductCodeAvailable(com.esri.arcgis.system.esriLicenseProductCode.esriLicenseProductCodeEngineGeoDB) == com.esri.arcgis.system.esriLicenseStatus.esriLicenseAvailable)

           ao.initialize(com.esri.arcgis.system.esriLicenseProductCode.esriLicenseProductCodeEngineGeoDB);

       ao.checkOutExtension(com.esri.arcgis.system.esriLicenseExtensionCode.esriLicenseExtensionCodeDataInteroperability);

总结:

关于许可的问题,在使用其它的GP工具时也常会遇到,因此,当你发现所有的参数都设置无误而执行却不能成功的诡异问题时,就要检查下是不是许可在做怪了。

你可能感兴趣的文章
【Android UI设计与开发】3.引导界面(三)实现应用程序只启动一次引导界面
查看>>
_ENV和_G
查看>>
别做操之过急的”无效将军”,做实实在在的”日拱一卒” 纵使一年不将军,不可一日不拱卒...
查看>>
Oracle Grid Infrastructure: Understanding Split-Brain Node Eviction (文档 ID 1546004.1)
查看>>
Linux改变进程优先级的nice命令
查看>>
**16.app后端如何保证通讯安全--url签名
查看>>
win32窗口机制之CreateWindow
查看>>
C/C++ 一段代码区分数组指针|指针数组|函数指针|函数指针数组
查看>>
awakeFromNib小总结
查看>>
java知识大全积累篇
查看>>
善于总结所做所学的内容
查看>>
Lua-简洁、轻量、可扩展的脚本语言
查看>>
org.hibernate.MappingException: entity class not found hbm可以解析,但是实体类不能解析...
查看>>
Android -- Drag&&Drop
查看>>
Extjs4:改变Grid单元格背景色(转载)
查看>>
中医无绝症[转载]
查看>>
ZendStudio10.6.1如何安装最新的集成svn小工具?
查看>>
PHP中$_SERVER的详细参数与说明
查看>>
jquery easyui datagrid mvc server端分页排序筛选的实现
查看>>
去了大公司就一定能学到很牛的技术么?
查看>>