ArcGIS Engine 添加SDE数据库
public void AddSDELayer(bool ChkSdeLinkModle)
{
//定义一个属性
IPropertySet propset = new PropertySetClass();
if (ChkSdeLinkModle == true) // 采用SDE连接
{
//设置数据库服务器名
propset.SetProperty("SERVER", "192.168.188.128");
//设置SDE的端口,这是安装时指定的,默认安装时"port:5151"
propset.SetProperty("INSTANCE", "port:5151");
//SDE的用户名
propset.SetProperty("USER", "sa");
//密码
propset.SetProperty("PASSWORD", "123456");
//设置数据库的名字,只有SQL Server Informix 数据库才需要设置
propset.SetProperty("DATABASE", "esri_sde");
//SDE的版本,在这为默认版本
propset.SetProperty("VERSION", "SDE.DEFAULT");
}
else // 直接连接
{
//设置数据库服务器名,如果是本机可以用"sde:sqlserver:."
propset.SetProperty("INSTANCE", "sde:sqlserver:192.168.188.128");
//SDE的用户名
propset.SetProperty("USER", "sa");
//密码
propset.SetProperty("PASSWORD", "123456");
//设置数据库的名字,只有SQL Server Informix 数据库才需要设置
propset.SetProperty("DATABASE", "esri_sde");
//SDE的版本,在这为默认版本
propset.SetProperty("VERSION", "SDE.DEFAULT");
}
//定义一个工作空间,并实力化为SDE的工作空间
IWorkspaceFactory Fact = new SdeWorkspaceFactoryClass();
//打开SDE工作空间,并转化为地物工作空间
IFeatureWorkspace Workspace = (IFeatureWorkspace)Fact.Open(propset, 0);
/*定义一个地物类,并打开SDE中的管点地物类,写的时候一定要写全.如SDE中有一个管点层,你不能写成IFeatureClass Fcls = Workspace.OpenFeatureClass ("管点");这样,一定要写成下边的样子.*/
IFeatureClass Fcls = Workspace.OpenFeatureClass("esri_sde.DBO.道路");
IFeatureLayer Fly = new FeatureLayerClass();
Fly.FeatureClass = Fcls;
axMapControl1.Map.AddLayer(Fly);
axMapControl1.ActiveView.Refresh();
}
-------------------------------------------------------------------------------------------------------------------------------
public static void test()
{
try
{
IWorkspace pWS = GetSDEWorkspace("localhost", "localhost/orcl", "sde", "sde", "sde.DEFAULT");
IDatabaseConnectionInfo4 pDCInfo = pWS as IDatabaseConnectionInfo4;
IEnumUserInfo pEnumUsers = pDCInfo.ConnectedUsers;
IUserInfo pUser = pEnumUsers.Next();
int pSessionID;//获得连接用户的sessionID
string sUserName = "";//连接用户名称
string sClientName = "";//连接用户的机器名
string sConnetionTime = "";//连接用户的开始连接时间
while (pUser != null)
{
if (!pUser.IsOwnConnection)
{
pSessionID = pUser.SessionID;
sUserName = pUser.Name;
sClientName = pUser.ClientName;
sConnetionTime = pUser.ConnectionTime.ToString();
//通过用户的sessionID断开用户连接
pDCInfo.DisconnectUser(pSessionID);
}
pUser = pEnumUsers.Next();
}
}
catch (Exception e)
{ }
}
public static IWorkspace GetSDEWorkspace(string sServerName, string sInstancePort, string sUserName, string sPassword, string sVersionName)
{
IPropertySet2 set = new PropertySetClass();
set.SetProperty("Server", "");
set.SetProperty("DBCLIENT", "Oracle");
set.SetProperty("Instance", "sde:oracle11g:" + sInstancePort);
set.SetProperty("User", sUserName);
set.SetProperty("password", sPassword);
set.SetProperty("version", sVersionName);
IWorkspaceFactory2 class2 = new SdeWorkspaceFactoryClass();
try
{
return class2.Open(set, 0);
}
catch (Exception ex)
{
return null;
}
}
---------------------------------------------------------------------------------------------------------
ArcGISEngine10.1
访问
ArcSDE
直连式
IWorkspace
pWkspace =
null
;
ESRI.ArcGIS.Geodatabase.
IWorkspaceFactory2
workspaceFactory =
null
;
ESRI.ArcGIS.esriSystem.
IPropertySet
pPropertySet =
new
ESRI.ArcGIS.esriSystem.
PropertySetClass
();
pPropertySet.SetProperty(
"SERVER"
,
"lingy"
);
pPropertySet.SetProperty(
"INSTANCE"
,
"sde:oracle11g:orcl"
);
pPropertySet.SetProperty(
"AUTHENTICATION_MODE"
,
"DBMS"
);
pPropertySet.SetProperty(
"USER"
,
"sde"
);
pPropertySet.SetProperty(
"PASSWORD"
,
"sde"
);
pPropertySet.SetProperty(
"VERSION"
,
"SDE.DEFAULT"
);
workspaceFactory =
(ESRI.ArcGIS.Geodatabase.
IWorkspaceFactory2
)
new
ESRI.ArcGIS.DataSourcesGDB.
SdeWorkspaceF
actoryClass
();
pWkspace = workspaceFactory.Open(pPropertySet, 0);
服务式
IWorkspace
pWkspace =
null
;
ESRI.ArcGIS.Geodatabase.
IWorkspaceFactory2
workspaceFactory =
null
;
ESRI.ArcGIS.esriSystem.
IPropertySet
pPropertySet =
new
ESRI.ArcGIS.esriSystem.
PropertySetClass
();
pPropertySet.SetProperty(
"SERVER"
,
"lingy"
);
pPropertySet.SetProperty(
"INSTANCE"
,
"esri_sde"
);
pPropertySet.SetProperty(
"DATABASE"
,
"orcl"
);
pPropertySet.SetProperty(
"USER"
,
"sde"
);
pPropertySet.SetProperty(
"PASSWORD"
,
"sde"
);
pPropertySet.SetProperty(
"VERSION"
,
"SDE.DEFAULT"
);
workspaceFactory =
(ESRI.ArcGIS.Geodatabase.
IWorkspaceFactory2
)
new
ESRI.ArcGIS.DataSourcesGDB.
SdeWorkspaceF
actoryClass
();
pWkspace = workspaceFactory.Open(pPropertySet, 0);
ArcGIS Engine 添加SDE数据库的更多相关文章
- Arcgis Engine 添加一个Symbol符号样式步骤
public static void DrawPictureMarkerSymbol(IGlobe globe, String layerName) { //添加一个图层 ESRI.ArcGIS.Ca ...
- ArcGIS Engine添加地图元素的实现
在ArcGIS中,我们使用的制图控件除了MapControl之外,还有PageLayoutControl,用于页面布局和制图,生成一幅成品地图. PageLayoutControl 封装了PageLa ...
- arcgis engine - 添加图例,指北针.
esri帮助提供了使用比例尺的方法: Working with map surrounds 主要代码为: public void AddMapSurround(IPageLayout pageLayo ...
- 基于Arcgis Engine 10.2(C#)+PostgreSQL 11(Postgis 3)+pgRouting 3.0实现使用数据库进行路径规划
前言:最近在(被迫)使用ArcGIS Engine10.2(.NET平台)进行二次开发(桌面应用),因为想做一个最短路径查询的功能,而arcgis的网络分析又比较麻烦,于是想到了使用Postgis.但 ...
- ArcGIS Engine开发之地图基本操作(4)
ArcGIS Engine开发中数据库的加载 1.加载个人地理数据库数据 个人地理数据库(Personal Geodatabase)使用Miscrosoft Access文件(*.mdb)进行空间数据 ...
- ArcGIS Engine开发之旅05---空间数据库
原文:ArcGIS Engine开发之旅05---空间数据库 1 Geodatabase概念 Geodatabase是ArcInfo8引入的一种全新的面向对象的空间数据模型,是建立在DBMS之上的统 ...
- arcgis 10 版本连接SDE数据库报错:No ArcSDE server license found 最有效的解决方法
这个问题可以这样解决:就在在Oracle中登入SDE数据库 进入到SDE数据库中后,找到表SERVER_CONFIG,其中有一行数据记录的就是我们需要进行修改的数据 你需要做的就是找到一个可用的,前面 ...
- ArcGIS Engine效率探究——要素的添加和删除、属性的读取和更新
ArcGIS Engine效率探究——要素的添加和删除.属性的读取和更新 来自:http://blog.csdn.net/freewaywalker/article/details/23703863 ...
- [转] ArcGIS engine中气泡标注的添加、修改
小生 原文 ArcGIS engine中气泡标注的添加.修改! 你微微地笑着,不同我说什么话.而我觉得,为了这个,我已等待得久了. ...
随机推荐
- UAC(User Agent Client) 和 UAS(User Agent Server)
SIP协议采用Client/Server模型.每一个请求(Request)触发服务器的一个操作:每个操作被称为方法(Method):每个请求除了指明具体方法外,还携带了一系列的头域(Header fi ...
- __clone()方法
<?php class NbaPlayer{ public $name; } $james = new NbaPlayer(); $james->name = 'James'; echo ...
- 数字图像处理实验(6):PROJECT 04-02,Fourier Spectrum and Average Value 标签: 图像处理MATLABfft 2017-05-07 23:1
实验要求: Objective: To observe the Fourier spectrum by FFT and the average value of an image. Main requ ...
- noi.ac day1t1 candy
传送门 分析 我们知道如果设A,B分别为将两家店从大到小排序之后各自的前缀和,则 Ans=Max{Min{A[i],B[j]}-W*(i+j)}. 为了得到这个Ans我们可以枚举两个数的Min,然后剩 ...
- loj10099 矿场搭建
传送门 分析 我们发现可以将这张图转换为一个联通块来处理.我们求出所有的割点.在求完之后我们我们对于每一个点双连通分量如果它没有割点相连则需要布置两个出口,因为可能有一个出口正好被割掉.而如果有一个割 ...
- Java面试问题列表
- bit byte的关系
字 word 字节 byte 位 bit 字长是指字的长度 1字=2字节(1 word = 2 byte) 1字节=8位(1 byte = 8bit) 一个字的字长为2个字节=2*8=16 一个字节 ...
- ZOJ - 3057 D - Beans Game(三堆威佐夫博弈)
Beans Game Time Limit: 5 Seconds Memory Limit: 32768 KB There are three piles of beans. TT and DD pi ...
- NPOI读取Excel文件
public class ExcelOperator { public static List<DataTable> Read(string fileName) { List<Dat ...
- WebAPI 请求跨域问题
本人采用的是利用CORS解决跨越问题. 首先利用Nuget 安装“microsoft.aspnet.webapi.cors”,如下图所示: 紧接着,在WebApiConfig文件中加入 config. ...