讨论两个关键问题1、如何连接数据库 2、如何创建.sde文件。
1、连接sde数据库
在10.1中数据库的连接默认为直连,但是对于以前的代码没有任何影响,如下面的代码(如果你用的是sde10的32位数据库,连接方法和以前一样,直接用代码连接;如果你用的是64位的数据库,请将32位的数据库客户端放到安装Engine的bin目录下):
publicIWorkspaceGetSDEWorkspace(String_pServerIP,String_pInstance,String_pDatabase,String_pUser,String_pPassword,String_pVersion)
{
IWorkspacepWkspace=null;
ESRI.ArcGIS.Geodatabase.IWorkspaceFactory2workspaceFactory=null;
ESRI.ArcGIS.esriSystem.IPropertySetpPropertySet=newESRI.ArcGIS.esriSystem.PropertySetClass();
pPropertySet.SetProperty("SERVER",_pServerIP);
pPropertySet.SetProperty("INSTANCE",_pInstance);
pPropertySet.SetProperty("DATABASE",_pDatabase);
pPropertySet.SetProperty("USER",_pUser);
pPropertySet.SetProperty("PASSWORD",_pPassword);
pPropertySet.SetProperty("VERSION",_pVersion);
workspaceFactory=(ESRI.ArcGIS.Geodatabase.IWorkspaceFactory2)newESRI.ArcGIS.DataSourcesGDB.SdeWorkspaceFactoryClass();
try
{
pWkspace=workspaceFactory.Open(pPropertySet,0);
}
catch(ExceptionEX)
{
//MessageBox.Show(EX.ToString());
}
returnpWkspace;
}
只是在传入参数的时候注意_pInstance一般的格式为:sde:postgresql:localhost等。
2、创建.sde文件
要创建.sde文件需要用到IWorkspaceFactory的Create方法,该方法要有数据库连接的参数信息,在这里我用的是Postgresql数据库,代码如下:
//创建.sde文件并连接数据库
IWorkspaceSDEConnect(stringFolderPath,stringFileName,String_pServerIP,String_pInstance,String_pUser,String_pPassword,String_pVersion,string_pDatabase,bool_pTrue)
{
stringpSDEPath=System.IO.Path.Combine(FolderPath,FileName);
IWorkspaceFactorypWSFactory=newSdeWorkspaceFactoryClass();
IWorkspacepWorkspace=null;
if(!File.Exists(pSDEPath))
{
IWorkspaceNamepWSName=pWSFactory.Create(FolderPath,FileName,GetPropertySet(_pServerIP,_pInstance,_pUser,_pPassword,_pVersion,_pDatabase,_pTrue),0);
}
pWorkspace=pWSFactory.OpenFromFile(pSDEPath,0);
returnpWorkspace;
}
//最后一个参数表示直连还是服务连接
publicIPropertySetGetPropertySet(String_pServerIP,String_pInstance,String_pUser,String_pPassword,String_pVersion,string_pDatabase,bool_pTrue)
{
ESRI.ArcGIS.esriSystem.IPropertySetpPropertySet=newESRI.ArcGIS.esriSystem.PropertySetClass();
pPropertySet.SetProperty("SERVER",_pServerIP);
pPropertySet.SetProperty("USER",_pUser);
pPropertySet.SetProperty("PASSWORD",_pPassword);
pPropertySet.SetProperty("VERSION",_pVersion);
if(_pTrue)
{
if(_pInstance.Contains(":"))
{
pPropertySet.SetProperty("INSTANCE",_pInstance);
pPropertySet.SetProperty("database",_pDatabase);
}
else
{
MessageBox.Show("直连字符串不对!");
}
}
else
{
pPropertySet.SetProperty("INSTANCE",_pInstance);
}
returnpPropertySet;
}
直连
IWorkspacepSDE=SDEConnect("C:\\","sde.sde","localhost","sde:postgresql:localhost","sde","sde","sde.DEFAULT","sde",true);
服务连接:
IWorkspacepSDE=SDEConnect("C:\\","service.sde","localhost","5151","sde","sde","sde.DEFAULT","sde",false);
分享到:
相关推荐
数据库、ArcCatalog空间数据源正常访问,数据库设置没问题时,ArcEngine连接SDE时报"ORA-12560: TNS: 协议适配器错误"的解决办法;ArcEngine连接SDE总结;ArcSDE:C#打开SDE数据库的几种方式总结
总结在ArcEngine二次开发中连接sde数据库的各种方式。
在ArcEngine连接ArcSDE数据库时,怎样对连接参数进行设置
SDE数据库连接,是ArcEngine开发的
实现了类型ArcCatalog的部分功能 包括sde连接树状列表、新建要素数据集、新建要素类 上传shp文件等
ArcEngine+C#连接SDE空间数据库
ArcGis创建SDE数据库发布地图 一、 找到创建SDE 二、 创建SDE数据库连接 三、 正在创建 四、 创建完成 五、 ArcMap连接数据库 六、 创建特征类(建立空间表) 七、 编辑图层 八、 添加服务 九、 注册SDE数据库和...
基于ArcGIS Engine的SDE数据库版本管理及历史归档的研究与实现(完整版)
ArcEngine Server SDE ECP授权文件,可以使用到2020年1月日
描述arcgis 连接sde的不同方式。直连式、服务式、连接文件式、连接字符串式
AO编程和ArcSDE连接SQLserver数据库的最好入门教程!对与搞Gis的绝对有帮助!
ArcEngine创建SDE的workspace
使用Python编写的将本地数据库导入为SDE数据库,目的是用作SDE数据库的还原。可参考:http://blog.csdn.net/wl05031/article/details/18603667
使用Python编写的将SDE数据库导出为本地的数据库,目的是用作SDE数据库的备份。可参考:http://blog.csdn.net/wl05031/article/details/18603667
2. 用ArcEngine的工具条添加图层要素 2 3. ArcEngine中对Feature的编辑 5 4. Feature的概念 6 5. 如何实现经度纬度到平面坐标的相互转换?(转载) 7 6. ArcEngine 最短路径分析(源码) 9 7. ArcEngine中使用上下...
以oracle 数据库为例,介绍了SDE数据库各表的作用和关系
该压缩包是包含了多个txt文件,其中有如何向arcmap中添加要素类和栅格数据集,以及从GEOdatabase中获取要素类和栅格等等
加载Shapefile数据,加载栅格数据,加载CAD数据, 加载PersonGeodatabase数据,加载SDE数据库数据. 做项目整理出来的,用的时候,直接拷入即可,方便、快捷。 1 IWorkspaceFactory pWorkspaceFactory; 2 ...
arcengine 二次开发,c#语言,SDE数据库的连接断开,shp图层的加载移除,图层的属性查看,图层的放大缩小漫游全屏,还有图层的增删要素操作
SQL Server 中创建数据库和地理数据库(SDE) sqlserver配置,arcgis SDE创建,sqlserver与arcgis连接