中图分类号:TP392 文献标识码:A 文章编号:1006-4311(2014)21-0234-03
0 引言
ArcSDE是空间数据存取的中间件,处于应用程序和数据库之间,它允许应用元素通过网络连接进行互操作,实现了数据库是GIS系统中属性数据和空间数据统一有效的管理,改变了过去属性数据与空间数据分别存取的传统方式,在理论上支持了数据的完整性和数据共享的功能[1]。
Oracle数据库系统是美国ORACLE公司(甲骨文)提供的以分布式数据库为核心的一组软件产品,是目前最流行的客户/服务器(CLIENT/SERVER)或B/S体系结构的数据库之一。Oracle的分布式数据库功能允许用户开发的应用程序将多个数据库作为一个完整的数据库对待,允许用户透明的操作远程数据库,并可以把他们连接在一起,满足多个工作组、部门或地区的需求,使应用程序看起来像一个大型数据库[2]。本文将详细介绍ArcSDE+Oracle搭建分布式开发环境的解决方案。
1 分布式开发环境
分布式环境是将系统分部在不同的物理位置,但是彼此保持通信,成为一个整体。内容的分布相对用户来说是透明的。系统相对用户来说可以是本地的、也可以是远程的。分布式环境允许应用从本地或者远程系统交换数据。Oracle充分体现了分布式系统的特性,能够将一个或者多个数据库系统置于网络的不同机器上。用户同时能够使用单个SQL语句访问位于不同位置的数据库,数据的物理分布对于用户来说是透明的[3]。
1.1 分布式数据库 分布式数据库(Distributed Data Base System,DDBS)是由若干个站集合而成的,这些站又称为节点,它们在通讯网络中连接在一起,每个节点都是一个独立的数据库系统,它们又拥有各自的数据库中央处理器、终端,以及各自的局部数据库管理系统,因而分布式数据库系统可以看成一系列集中式数据库系统联合,它们在逻辑上属于同一系统,但在物理结构上是分布的[4]。
1.2 系统架构设计 本方案以ArcSDE为空间数据引擎,选用Oracle为空间数据库管理软件,以主操作系统Windows7(64bit)作为客户端,在主操作系统Windows7下安装的VMware虚拟机软件作为服务端,建立C/S结构分布式空间数据库。
VMware 是 VMware Inc.出品的模拟机软件,利用 VMware我们可以在主操作系统下安装多个不同的操作系统,并且可以同时运行在原来的平台下,这些“新”的机器拥有自己独立的内存、硬盘和操作系统,而对主操作系统没有任何影响,我们可以完全把它当成是两台独立的机器。在客户/服务器结构中,数据库服务器的管理和应用分布在宿主机和虚拟机上,客户机上安装应用程序和连接工具,通过ArcSDE建立和服务器的连接,发出数据请求。服务器上运行数据库,通过网络协议接收连接请求,将执行结果回送客户机。由于基础地理框架数据的数据量非常大,我们使用Oracle 11g数据库来存储和管理数据,并在专门的服务器上实施。所有的空间数据和应用程序都放在服务器端,客户端只是提出请求,所有的响应都在服务器端完成。Oracle+ArcSDE是服务器端的典型应用,也是目前国际上最先进的地理信息管理方案之一,可提供强大的地理信息存储访问机制[5]。
2 分布式开发环境搭建过程
2.1 配置服务端:①在Windows7系统下安装VMware。②VMware下安装Windows Sever 2008操作系统。如图2所示。③安装数据库:Oracle11g-11.2.0.1.0-win32。④配置监听程序:收集以下信息:服务器计算机名:lenove-PC;Oracle网络服务名:dbserver;sys用户密码:******。服务器ip地址:192.169.150.134。如图3、图4所示。
2.2 配置客户端:①安装开发工具Visual Studio 2010.NET。②安装ArcGIS 10.0(32bit)。③安装数据库客户端Oracle - OraClient11g_home1。④配置监听程序:采用和服务端同样方法和信息进行配置,完成后进行测试,测试成功后可尽行下一步操作。如图5所示。⑤安装ArcSDE for Oracle 11g(32bit):分布式安装的一个必须要求是ArcSDE端机器必须安装在客户端,在安装ArcSDE之前,首先保证该机器安装数据库客户端,而且保证sqlplus/oracle @ oracle as sysdba可以连通。
3 关键技术
3.1 ArcGIS Engine ArcGIS Engine(AE)是一组跨平台的嵌入式AO,它是ArcGIS 软件产品的底层组件,用来构建定制的GIS 和桌面制图应用程序,或是向原有的应用程序增加新的功能,通过它,可以构建非GIS 为中心的应用。开发者使用ArcGIS Engine 开发包构建应用程序,并通过ArcGIS Engine Runtime 的软件许可将这些程序分发给最终用户[6]。Arc Engine是一个简单的、独立于应用程序的Arc Objects编程环境,开发人员用于建立自定义程序的嵌入是GIS组件的一个完整类库。Arc Engine由一个软件开发包和一个可以重新分发的为ARCGIS应用程序提供平台的运行时(runtime)组成。另外Arc Engine封装了大量的对象类库,如System类库、SystemUI类库、Geometry类库、Display类库、Server类库、Output类库、Geodatabase类库、GISClient类库、DataSourcesFile类库、DataSourcesGDB类库、DataSourcesRaster类库、GeoDatabaseDistributed类库、Carto类库、Location类库、NetworkAnalysis类库、Controls类库、3Danalyst类库、GlobeCore类库及SpatialAanlyst类库等。在Windows、UNIX和Linux平台的开发环境下使用这些库,开发者可以开发出从低级到高级的各种定制的应用。
3.2 ArcSDE连接数据库 用Oracle 数据库管理向导建立一个数据库,为了提高数据库的运行速度,需把数据库的临时表空间与索引表空间置于两个不同驱动器中(非操作系统启动驱动器),并增大表空间容量。装载、启动数据库,在安装ArcSDE过程中,需输入数据库的全局数据库名(SID)以及空间数据引擎运行实例名(缺省为esri- sde),以便创建空间数据引擎的运行实例[7]。在服务器端的ArcSDE连接到Oracle 以后,启动ArcGIS License Manager服务,采用c#作为语言平台,数据库使用Oracle11g,使用ArcSDE作为连接数据库的中间件。
使用ArcSDE连接数据库的代码如下:
privatevoidSDE_LINK_Click(object sender,EventArgs e)
{
ESRI.ArcGIS.esriSystem.IPropertySetps = newESRI.ArcGIS.esriSystem.PropertySet();
ps.SetProperty("SERVER", "Lenov
o-PC");
ps.SetProperty("INSTANCE", "5151:sde");
ps.SetProperty("DATABASE", "sde");
ps.SetProperty("USER", "sde");
ps.SetProperty("PASSWORD", "******");
ps.SetProperty("VERSION", "SDE.DEFAULT");
TypefT=Type.GetTypeFromProgID("esriDataSourcesGDB.
SdeWorkspaceFactory");
ESRI.ArcGIS.Geodatabase.IWorkspaceFactorywf = (ESRI.ArcGIS.Geodatabase.IWorkspaceFactory)Activator.CreateInstance(fT);
ESRI.ArcGIS.Geodatabase.IWorkspacews = null;
ws = wf.Open(ps, 0);
IEnumDatasetpEnumDataset = ws.get_Datasets(esriDatasetType.esriDTFeatureClass);
pEnumDataset.Reset();
IDatasetpDataset = pEnumDataset.Next();
IMappMap = axMapControl1.Map;
while (pDataset != null)
{
stringszDatasetName = pDataset.Name;
IFeatureWorkspacepFeatWorkspace = (IFeatureWorkspace)ws;
IFeatureClasspFeatClass = pFeatWorkspace.OpenFeatureClass(szDatasetName);
IFeatureLayerpFeatLyr = newFeatureLayer();
pFeatLyr.FeatureClass = pFeatClass;
pFeatLyr.Name = pFeatClass.AliasName;
pFeatLyr.ShowTips = true;
pMap.AddLayer(pFeatLyr);
pDataset = pEnumDataset.Next();
}
ESRI.ArcGIS.Geometry.IEnvelopepEnvelope = axMapControl1.ActiveView.FullExtent;
axMapControl1.Refresh(esriViewDrawPhase.esriViewGeography, null, axMapControl1.ActiveView.Extent);
}
运行结果如图6所示。
4 结语
本文采用 VMware 虚拟机软件,通过建立虚拟的操作系统,模拟两台独立的计算机,并将其配置成为一个分布式计算网络,通过ArcSDE+Oracle技术可以为使用者提供一个虚拟的并行程序调试和运行环境,通过实验证明这种方法是可行的。这种方法让用户可以实现数据存储管理的自动化与智能化,提高存储效率,避免了每个开发人员都必须在本机安装数据库及SDE等大型软件,节约资源,同时避免数据切割产生多个副本造成增加数据处理难度等。
参考文献:
[1]曾炫.分布式空间数据管理与应用研究[D].北京.华北电力大学,2012.
[2]刘铁铮,姜斌,李常山,夏秀峰.Oracle分布式数据库的创建策略[J].沈阳航空工业学院学报,2004,21(4):70-72.
[3]Oracle.10g入门与实践.
[4]李仕川,汪陵,宋学文地籍信息GIS系统中使用分布式数据库探讨[J].重庆交通学院学报,2004,23(3):70-72.
[5]赵村民,宋利好,赵晓民.基于Oracle与ArcSDE的空间信息访问优化[J].吉林大学学报(信息科学版),2004,22(3):283-288.
[6]吴玮,李小帅,张斌.基于ArcGISEngine的GIS开发技术探讨[J].科学技术与工程,2006,6(2):176-178.