CityMaker中三维模型数据的数据库组织方法与应用扩展
2013-03-03纪彦忠李浩
纪彦忠,李浩
(哈尔滨市勘察测绘研究院,黑龙江哈尔滨 150010)
CityMaker中三维模型数据的数据库组织方法与应用扩展
纪彦忠∗,李浩
(哈尔滨市勘察测绘研究院,黑龙江哈尔滨 150010)
CityMaker是一款优秀的国产3D GIS平台软件。介绍了CityMaker平台中三维场景数据的三种类型:三维模型数据、矢量数据和地形数据,重点分析了三维模型数据的组织方法和存储结构,提出了CityMaker数据库的两个扩展方法:访口接口扩展和属性信息扩展,弥补了CityMaker在属性信息管理方面的不足。
CityMaker;三维模型;数据组织;属性扩展
1 引 言
空间数据组织主要指在数据集中表示空间信息的机制。计算机的效率很大程度上取决于数据的组织。在三维数字城市建设中,GB级甚至TB级的海量三维数据已经司空见惯。大规模三维数字城市场景的数据内容具有复杂性和海量性的特点,表现在对象类型繁多、模型精细程度不同、数量多且对象在空间上随机分布、聚集和离散程度不均衡等方面[1,2]。为了实现海量三维数据的优化显示以及查询分析,需要对海量的三维数据进行高效的组织与管理。二维空间数据的组织与管理模式已经由文件模式转变到基于空间数据引擎的关系型数据库模式,如MapInfo SpatialWare、ArcSDE、SuperMap SDX+等,很好地解决了图属一体化存储管理、高效的数据访问检索等问题。借鉴二维空间数据的组织管理方式,利用大型关系型数据库管理系统进行三维空间数据一体化管理已成为发展方向[3~5]。
随着空间信息技术的发展,三维地理信息平台软件已经由实验室走向了商业应用,国内外涌现出大批的三维地理信息平台软件。这些软件一方面具有逼真流畅的三维可视化效果,另一方面又具有高效的数据访问和管理能力。本文以一款优秀的国产三维地理信息平台软件CityMaker为例,介绍和分析了其三维数据组织和管理方法,并根据应用需求,对其进行了扩展,增强了其在应用中的数据访问和属性扩展能力。
2 CityMaker产品体系
CityMaker系列软件致力于全空间的、逼真、完美的虚拟三维可视化,将二维信息融入三维场景中,并将传统的二维分析运算扩展成三维分析运算,实现可视化、分析功能的二三维一体化[6]。
CityMaker系列产品覆盖了三维数据生产、管理、应用开发整个过程,具体包括城市级海量3D GIS数据生产与维护平台CityMaker Builder、企业级的3D GIS服务聚合与发布平台CityMaker Server、通用的3D GIS应用平台CityMaker Explore以及3D GIS二次开发组件库CityMaker SDK。
3 CityMake中的三维数据组织方法
3.1 三维场景数据的内容
CityMaker中的三维场景,包括地形表面以上和以下一定范围内的空间地物。从认知研究的观点,三维场景数据的内容可以分为两类:一类为特征实体(Feature Entity),其特点是离散、同质,有明确定义的空间边界,能被完整的定义,如建筑物、公共设施等;另一类为场(Fields),其特点是具有光滑的连续空间变化,如地形表面。从平台数据存储的观点来看,三维场景数据的内容可以分为三类[7]:
(1)三维模型数据
三维模型数据用以表达现实世界中的离散分布的三维实体,是构成三维场景的最重要组成部分。在City-Maker中,三维模型数据采用面片模型表达三维实体,即用不同形状的面片近似表示三维实体的表面,优点是便于显示和更新。三维模型数据可从外部文件导入,如∗.3ds,∗.osg等,也可以在CityMaker Builder中创建。
三维模型组成的场景以本地文件的形式保存(∗.scd、∗.sdb),也可以发布到服务器形成数据服务。
(2)矢量数据
CityMaker支持本地矢量数据的加载(如Shapefile数据)、CityMaker定义的矢量数据服务(CityMaker Data Server)的加载、空间数据库加载(如ArcSDE Database)以及符合OGC规范的数据服务(如WFS)。这些数据能够直接被平台识别和解析、并能加载到三维场景中。
(3)地形数据
利用平台提供的CityMaker TerrainPush工具,将影像(DOM)及高程(DEM)数据发布成文件数据(∗. ted),形成地形文件,也可以发布到MySQL、Oracle数据库中,形成地形数据服务。
由于三维模型数据是三维场景数据的主要组成部分,且矢量数据、地形数据在二维空间数据组织管理中都有了很好的解决方案,因此,本文仅研究CityMaker中的三维模型数据。
3.2 三维模型数据的组织
三维模型数据在逻辑上是以场景组的形式组织的,即将同一种类别的三维实体组织在一个图层中,将相似类别图层再组织成场景组,多个场景组还可以组成一个大的场景组。呈现一个树型的组织方式,而三维实体是指具有语义信息的三维模型数据,如图1所示。
图1 三维模型数据逻辑组织
这一三维模型数据组织方式在CityMaker平台内部用XML形式描述。例如,一个管线场景组可以描述为:
<?xm l version="1.0"encoding="UTF-8"?>
<LAYERSCompactMode="1">
<LayerGroup Name="群力管线">
<LayerGroup Name="群力给水">
<Layer Name="群力给水阀门"Code="5547505181148643328"/>
<Layer Name="群力给水管井"Code="5547505181148643329"/>
<Layer Name="群力给水管线"Code="5547505181148643330"/>
</LayerGroup>
<LayerGroup Name="群力排水">
<Layer Name="群力排水管井"Code="5547505181148643331"/>
<Layer Name="群力排水管线"Code="5547505181148643332"/>
</LayerGroup>
<LayerGroup Name="群力弱电">
<Layer Name="群力弱电管井"Code="5547505181148643333"/>
<Layer Name="群力弱电管线"Code="5547505181148643334"/>
</LayerGroup>
<Layer Name="群力电力管线"Code="5547505181148643335"/>
</LayerGroup>
</LAYERS>
其中,LayerGroup是场景组(图层组)节点,该节点既可以嵌套场景组,也可以嵌套图层。Layer是图层节点,是整个场景树的叶节点,不能再嵌套任何类型。
3.3 三维模型数据的存储
CityMaker的三维模型数据以两种方式存储:关系型数据库和本地大文件。关系型数据库存储模式采用的是在服务器端架设MySQL数据库。在MySQL数据库中定义了多个表用以存储三维模型以及三维场景组组织结构。本地大文件存储模式采用的是Firebird嵌入式数据库文件。该文件的内部表结构与MySQL数据库一致。本地大文件模式既可以像本地文件一样加载,也可以通过发布工具发布到服务器上,形成数据服务,供客户端调用。
在数据库内部,CityMaker设计了7个表用来存储三维模型和场景组织结构内容。表之间的关系如图2所示。
图2 三维模型数据表关系图
其中,场景信息表(BIN_SCENE_INFO)用以记录发布的三维场景,表中的每条记录表示一个三维场景,包括场景ID、名称、定位信息、坐标系、图层组织、动画导航组织、特殊场景组织等,后三者以XML(Extensible Markup Language,XML)方式进行描述,客户端可以直接解析这些XML描述以便获取三维场景的组织方式。动画导航表(BIN_SCENE_ANIMATION)用以记录三维场景中定义的动画导航。动画导航指的是预先定义的固定漫游路径,每个三维场景可以包含多个动画导航。动画导航数据以二进制数据流的方式保存在表中的字段中。三维实体表(BIN_SCENE_ENTITY)用以记录三维场景中每个三维实体的详细信息,包括实体ID、所属场景ID、所属图层、定位信息、表示该实体的三维模型ID和模型名称等。三维模型表(BIN_SCENE_MODEL)用以记录三维实体对应的三维模型文件,该三维模型文件以二进制数据流的方式存储在表的字段中。
4 CityMaker数据库的扩展
从CityMaker开放的开发接口来看,CityMaker并没有提供给用户读写三维模型数据库的接口。同时,从上述三维模型数据存储结构分析可以看到,City-Maker对三维实体的属性描述仅仅局限于几何体量信息,没有任何与应用相关的属性信息的链接机制,给基于三维场景的行业应用带来了一定的困难。本文根据实际应用需求,给出了相应的数据库扩展方法。
4.1 访问接口的扩展
CityMaker采用MySQL、Firebird数据库作为三维数据的存储介质,尽管CityMaker没有封装访问该数据库的API(Application Programming Interface,API),但数据库厂商已提供了对这两种数据库读写的接口。因此,利用数据库厂商提供的接口,对其做高层次封装,即可实现对三维数据库的读写操作。本文基于ADO.NET数据库访问技术,分别利用MySQL数据库的ADO.NET Driver for MySQL和Firebird数据库的Firebird.NET Data Provider,设计和实现了具有统一接口的CityMaker数据库访问组件,该组件的层次结构如图3所示。
图3 CityMaker数据库访问组件
在该组件中,抽象出两个接口IDbConnFactory和IDbOperation,用于向外界提供统一的调研接口。其中,IDbConnFactory接口用于获得单例的默认数据库连接和命名连接,也可以通过该单例获得数据库操作对象IDb-Operation,实现数据库的读写操作,IDbOperation接口抽象出了相关数据库操作方法,包括执行SQL查询语句、执行数据库事务、执行存储过程等。针对CityMaker的两种数据库类型,实现这两个接口,得到了面向具体数据库类型的实例化类:数据库连接工厂类FirebirdDb-ConnFactory和MySQLDbConnFactory,数据库操作类FirebirdDbOperation和MySQLDbOperation。
4.2 属性信息扩展
在实际应用中,三维模型不仅仅是为了满足三维可视化展现效果,更多的是对现实世界实体的信息化表达,在描述实体的空间位置和几何形状外,还需要具备描述现实世界实体的社会、经济、文化等各类属性信息的能力。属性信息扩展[8]的目的就是为了弥补City-Maker中三维数据模型缺少属性信息描述能力的缺陷。
基于CityMaker的三维模型实体的属性信息扩展方法是,根据三维模型实体的唯一编码链接外部属性表,实现三维模型数据属性扩展。三维模型实体的唯一编码选择BIN_SCENE_ENTITY表的MODLENAME字段,而非GUID字段,是因为GUID字段虽然具有唯一性,但是由系统自动生成,没有任何意义,当三维模型重新发布时,该字段会改变,需要重新链接外部属性表。而MODLENAME字段来源于三维模型数据对应的外部模型文件名称,当模型文件名称定义为模型编码时,可确保MODLENAME的唯一性,并且重新发布时,该字段不会改变。实现属性扩展的关键是新建一个匹配表,该匹配表的目的是记录和维护三维实体与外部属性之间的链接关系,该关系可以是一对一或一对多的关系,表示三维实体具有一个或多个属性信息。匹配表的字段结构如表1所示。
匹配表字段结构 表1
通过这种数据库扩展模式,可以在不改变原有City-Maker数据库组织结构的前提下,通过外部属性表的挂接,使得三维场景中的三维模型具备自定义的属性描述信息,外接属性表可以是在三维数据库中新建的属性表,也可以是业务系统中的业务信息表。通过维护和管理匹配表和外部属性表,可以实现CityMaker三维数据库的属性扩展能力,打造真正意义上的三维地理信息系统。
5 应用举例
属性查询和定位是GIS中最基础和最重要的功能之一,在二维GIS中,借助成熟的空间数据引擎和强大的平台API,该功能的实现较为简单。在基于City-Maker的三维GIS开发中,这一功能需要借助本文的原理和方法来实现,主要步骤包括:
(1)建立三维模型与属性信息的匹配表
按照表1的数据结构,建立起三维模型实体与模型实体属性信息的匹配关系。该匹配关系可以由人工来完成,也可以开发自动化匹配工具由程序来完成。匹配的方法可以借助空间位置关系,也可以借助编码体系。
(2)属性查询
借助CityMaker SDK提供的鼠标拾取方法,拾取三维场景中的三维模型,从返回值中得到该三维模型的ID,在表1中搜索对应的属性项,通过外接属性表名称和属性项ID获得属性库中的具体信息,反馈到客户端。
(3)属性定位
根据用户输入的属性关键字,在属性库中搜索对应的属性项,通过外接属性表名称和属性项ID在表1中得到对应的三维模型ID,借助CityMaker SDK提供的定位方法,通过三维模型ID在三维场景中实现定位功能。
图4 属性查询
图5 属性定位
图4 、图5展示了某三维地下管线地理信息系统中的属性查询与定位功能的实现效果。
6 结 语
与二维GIS平台软件类似,CityMaker仍然采用的是关系型数据库存储和管理三维数据,并且能够描述三维场景的逻辑组织结构,但缺少二维GIS平台软件强大的属性存储和管理能力。在分析CityMaker数据库存储结构的基础上,本文提出的数据库扩展方法,可以弥补CityMaker在属性信息管理方面的不足,使得三维数据能够同时具有空间几何信息和语义信息。在实际应用中,能够解决诸如三维模型的属性查询和定位、三维模型实体与GIS属性匹配等图属一体化问题。
[1] 朱庆,林珲.数码城市地理信息系统——虚拟城市环境中的三维城市模型初探[M].武汉:武汉大学出版社,2004.
[2] 朱庆.三维地理信息系统技术综述[J].地理信息世界,2004,2(3).
[3] 刘刚,吴冲龙,何珍文等.地上下一体化的三维空间数据库模型设计与应用[J].地球科学(中国地质大学学报),2011,36(02).
[4] 李道远,李英成,肖金城.大范围城市三维模型管理技术研究[J].测绘科学,2011,36(5).
[5] 朱国敏,马照亭,孙隆祥等.城市三维地理信息系统中海量数据的数据库组织与管理[J].测绘科学,2008,33(1).
[6] 北京伟景行数字城市科技有限公司.CityMaker 6产品介绍[R].2011.
[7] 刘娟.基于CityMaker SDK的3D GIS开发方法[J].城市勘测,2011(5).
[8] 王郁昕,李红豫,徐影.GIS中属性信息的扩展[J].北京联合大学学报·自然科学版,2009,23(1).
3D Scene Data Organization M ethod and Application Extension in CityM aker
Ji Yanzhong,Li Hao
(Harbin Institute of Geotechnical Investigation and Surveying,Harbin 150010,China)
CityMaker is one of the outstanding domestic 3D GIS platform software.The paper introduced the City-Maker platform of 3D scene in three types of data:three-dimensional scene data,vector data and topographic data,focused on the analysis of the 3Dmodel data organization and storage structure,put forward two database extensionmethods for CityMaker:visit interface extension and attribute information propagation for the CityMaker in the attribute information management deficiencies.
citymaker;3D model;data organization;extended attributes
1672-8262(2013)03-62-04
P208.1
B
2012—07—23
纪彦忠(1955—),男,高级工程师,主要从事测绘生产管理工作。