ArcEngine直连sde_arcengine直连sde

2020-02-27 其他范文 下载本文

ArcEngine直连sde由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“arcengine直连sde”。

ArcEngine直连sde

直连的优势如下(网上摘录):直连方式降低了服务器端的内存需求直连方式处理速度更快,在客户端上执行处理不需要安装ArcSDE软件

本教程以ArcEngine 10.1直连PostgreSQL 9.0.5为例安装PostgreSQL数据库修改%PostgreSQL%9.0datapg_hba.conf文件,添加

“hostallall0.0.0.0/0md5”记录,让任意客户端均可连接你的数据库集群(修改后需重启postgresql-x64-9.0服务以生效)%Program Files%ArcGISDesktop10.1DatabaseSupportPostgreSQLWindows64目录下,拷贝st_geometry.dll文件到%PostgreSQL%9.0lib目录。在PostgreSQL中创建Geodatabase时必须用到此类库配置PostgreSQL的客户端。因为直连方式要求ArcSDE的客户端必须安装数据库的客户端类库,所以首先需要获取PostgreSQL的客户端。ArcGIS Desktop是32位软件,需要的是32位的PostgreSQL类库。

将 libeay32.dll, libiconv-2.dll, libintl-8.dll,libpq.dll,leay32.dll

文件拷贝到%Program Files%ArcGISDesktop10.1bin目录下

如果ArcGIS Server也需要直连到PostgreSQL中,则需要拷贝上述同名的5个64位的库到%Program Files%ArcGISServerbin目录下,因为ArcGIS Server现在是64位的软件了在ArcMap中使用Create Enterprise Geodatabase工具完成“Post Installation”过程。

ArcEngine连接sde代码如下:

一定要注意将“libeay32.dll, libiconv-2.dll, libintl-8.dll,libpq.dll,leay32.dll”复制到应用程序目录下面

///

/// 创建sde连接参数

///

///

服务器IP(直连可以为空)

///

数据库实例(基于服务的连接为5151或者esri_sde,如果是直连则为sde:postgresql:localhost)

///

sde用户名

///

sde用户密码

///

sde版本

///

数据库名称,一般为sde

///

是否直连

///

public IPropertySet CreatePropertySet(string serverIP, string

instance, string user, string paword, string version, string database, bool isDirectConnection)

{

IPropertySet pPropertySet = new PropertySetCla();

pPropertySet.SetProperty(“USER”, user);

pPropertySet.SetProperty(“PASSWORD”, paword);

pPropertySet.SetProperty(“VERSION”, version);

if(isDirectConnection)

{

if(instance.Contains(“:”))

{

pPropertySet.SetProperty(“INSTANCE”, instance);

pPropertySet.SetProperty(“DATABASE”, database);

}

else

{

throw new Exception(“直连字符串参数'instance'不对,例如 sde:postgresql:localhost”);

}

}

else

{

pPropertySet.SetProperty(“SERVER”, serverIP);

pPropertySet.SetProperty(“INSTANCE”, instance);

}

return pPropertySet;

}

//基于服务的连接

private void baseOnEsrisdeToolStripMenuItem_Click(object sender, EventArgs e)

{

IWorkspaceFactory pWorkspaceFactory = new

SdeWorkspaceFactoryCla();

IWorkspace pWorkspace =

pWorkspaceFactory.Open(CreatePropertySet(“192.168.0.40”, “5151”, “sde”, “hy@123456”, “sde.DEFAULT”, “sde”, false), 0);

DebugInfo(pWorkspace);

}

//直连

private void directConnectToolStripMenuItem_Click(object sender, EventArgs e)

{

IWorkspaceFactory pWorkspaceFactory = new

SdeWorkspaceFactoryCla();

IWorkspace pWorkspace =

pWorkspaceFactory.Open(CreatePropertySet(“”,“sde:postgresql:192.168.0.40”, “sde”, “hy@123456”, “sde.DEFAULT”, “sde”, true), 0);

DebugInfo(pWorkspace);

}

{

object names;

object values;

pWorkspace.ConnectionProperties.GetAllProperties(out names, out values);

System.Text.StringBuilder sb = new System.Text.StringBuilder();string[] nameArray =(string[])names;

object[] valueArray =(object[])values;

for(int i = 0;i

{

sb.AppendFormat(“{0}{1}rn”, nameArray[i],valueArray[i]);

}

MeageBox.Show(sb.ToString());

IEnumDatasetName pEnumDatasetName =

pWorkspace.get_DatasetNames(esriDatasetType.esriDTAny);private void DebugInfo(IWorkspace pWorkspace)

IDatasetName tName;

string s = “”;

while((tName = pEnumDatasetName.Next())!= null){

s += tName.Name + “n”;

}

MeageBox.Show(s);

}

《ArcEngine直连sde.docx》
将本文的Word文档下载,方便收藏和打印
推荐度:
ArcEngine直连sde
点击下载文档
相关专题 arcengine直连sde ArcEngine sde arcengine直连sde ArcEngine sde
[其他范文]相关推荐
    [其他范文]热门文章
      下载全文