时间:2022-04-08 07:40:36
【摘 要】介绍ArcGIS的Geo database数据模型,并在Geo database的基础上构建城市市政gis数据模型,并利用ESRI公司的空间数据库引擎(Spatial Database Engine),分析模型数据的存储模式,最后基于Arc Objects组件对象实现模型数据的入库。
【关键词】Geo database;GIS;ArcGIS
1.市政GIS数据模型
1.1 Geo database数据模型概述
Geo database数据模型是在汲取以往数据模型工作成果的基础上,采用面向对象的思想提出的一种适用于关系型数据库管理系统的空间数据模型。该数据模型包括对象类、要素类、要素数据集、关系类、几何网络、域、规则、栅格数据集等。Geo database数据模型在逻辑上统一了以往空间数据模型,为上层应用提供了统一的数据接口。在基于Geo database模型的应用中,面向用户的不再是抽象的点、线、面,而是面向具体应用的一些实体。将行为、关系、规则引入地理要素,不仅可以充分表达空间数据之间的关系,同时也使应用中的空间数据的录入和编辑更加准确。Geo database模型的几何网络中引入了复杂型交点、复杂型边线的概念。
1.2 Geo database数据模型的优点
(1)Geo database的空间对象集不仅可以表达关系型数据库的地理数据,同时也可以表达Coverage和Shape file格式的空间数据。
(2)Geo database数据模型不仅接近于人类对现实事物对象的认识和表述方式,而且还具有较好的客户化能力和可扩展能力。
(3)将行为、关系、规则引入地理要素,不仅可以充分表达空间数据之间的关系,同时也使应用中的空间数据的录入和编辑更加准确。
(4)Geo database可将空间数据和属性数据集成在同一关系型数据库中,改变了传统模型中两者仅通过ID联系的状态,实现了严格意义上的地理空间数据库;同时,它也可以充分利用关系型数据库高效的数据管理能力。
(5)Geo database对网络拓扑的描述非常丰富(如:市政设施网络和街道网络),而且随着各种编辑操作的产生,Geo database会主动维护现行网络拓扑关系,从而避免了拓扑重建这样一个重复、冗长的操作。
(6)Geo database模型的几何网络中引入了复杂型交点Complex Junction Feature、复杂型边线(Complex Edge Feature)的概念。一般复杂型的交点或边线在几何网络中是由许多复杂的图素组成,但是在创建几何拓扑时,其逻辑网络不会关心其复杂的组织结构,而是将其整体作为简单的节点或边线看待。
1.3 基于Geo database的市政数据模型的构建
由于Geo database数据模型让用户更容易、更自然地表示GIS数据要素,更容易地建立要素之间的各种关系,因而在城市人防系统的设计中采用Geo database数据模型来设计各种实体以及它们的关系。所用到的城市市政数据主要是由城市基础地理信息,城市交通专题信息和城市建筑专题信息3个数据集组成的。每个城市市政数据集是由按照地理要素的特征进行分类的要素类构成的。
2.数据的存储模式
本系统采用ArcSDE(空间数据库引擎)存储模式来对市政数据进行存储。ArcSDE使用关系数据库管理系统来管理空间数据,解决存储在关系数据库中的空间数据与应用程序之间的数据接口问题,是空间数据进出关系数据库的通道。
ArcSDE是ESRI公司推出的一套空间数据库管理软件,同多ArcSDE,用户可以将多种数据产品按照Geo database模型存储于数据库系统中,并获得高效的管理和检索对象。
本系统采用C/S与B/S并存的结构体系,在分布式的网络环境下,由ArcSDE负责完成网络中数据或服务的查找,然后将查找的信息返回给客户端。
3.市政数据的入库
市政数据的入库是建立城市市政数据库的一项重要工作,而矢量数据又是最核心的部分。所以,本文主要讨论了矢量数据的入库,主要通过ArcObjects编程技术来实现市政数据的入库,整个实现过程主要分为以下5个步骤:
(1)定义连接数据库的属性。
主要源代码如下:
//
//连接数据库
//
Public void ConnectSQLServer(string server,string instance,string user,string password,string data-base,string version,AxMapControl axMap)
{
//设置连接属性
IPropertySet m_Property=new PropertySetClass();
m_Property1SetProperty″SERVER″,server( );
m_Property1SetProperty″INSTANCE″,instance( );
m_Property1SetProperty(″DATABASE″,database);
m_Property1SetProperty(″USER″,user);
m_Property1SetProperty(″PASSWORD″,password);
m_Property1SetProperty(″VERSION″,version);
//打开工作区
IWorkspaceFactory m_WorkspaceFactory;
m_WorkspaceFactory=new SdeWorkspaceFactoryClass();
m_Workspace=m_WorkspaceFactory.Open(m_Property,axMapControl1.hWnd);
//向工作区加载数据
IFeatureWorkspace m_FeatureWorkspace;
m_FeatureWorkspace=m_Workspace as IFeatureWorkspace;
IFeatureClass m_FeatureClass;
m_FeatureClass=m_FeatureWorkspace.OpenFeatureClass(″PARKS″);
//在地图上显示加载的图层
IFeatureLayer m_FeatureLayer=new FeatureLayerClass();
m_FeatureLayer.FeatureClass=m_FeatureClass;
axMap.ActiveView.FocusMap.AddLayer(m_FeatureLayer as ILayer);
axMap.ActiveView.Refresh();
}
(2)定义要入库的数据源所对应的要素类名称。
(3)定义库中的要素集和要素类名称。
(4)得到原数据的所有字段并检查其合法性。
由于市政工作涉及面广、领域多,因而市政数据的建立及数据入库时最终建立市政GIS系统的一个关键环节。本文在Geo database的基础上构建城市市政GIS数据模型,并利用ESRI公司的空间数据库引擎(Spatial Database Engine),分析模型数据的存储模式,最后基于Arc Objects组件对象实现模型数据的入库。
【参考文献】
[1]李清泉,李德仁.三维空间数据模型集成的概念框架研究[J].测绘学报,1998,27(4):325-330.
[2]张耀东基于GIS的高速公路建设管理信息系统设计与开发[J].中南公路工程,2004,(1).