黄梦龙
(1.福建省基础地理信息中心,福建 福州350003)
基于MongoDB的城市三维模型数据建库技术探讨
黄梦龙1
(1.福建省基础地理信息中心,福建 福州350003)
分析了城市三维模型管理的需求,从三维模型数据库规范以及MongoDB数据库的数据模型出发,设计了三维模型数据库的存储结构。基于Skyline三维地理信息系统和MongoDB驱动程序,开发了三维模型数据库管理系统,实现了三维模型的建库管理。
城市三维模型;Skyline;MongoDB;模型数据库
城市三维建模是构建数字城市建设的一个组成部分。城市三维模型在城市规划、房地产开发、交通管理、旅游等领域起着重要的作用。
MongoDB是所有NoSQL数据库中最像关系数据库的一种,与SqlServer等关系数据库类似。MongoDB的数据库对象分为数据库、集合(Collection)和 文 档(Document)。MongoDB的 数 据 库 与SqlSevrer的数据库类似,集合则类似于关系表,而文档则类似于关系数据库的记录。与关系数据库的记录比,MongoDB的文档提供了灵活的存储方式,没有严格的模式限制。此外MongoDB还提供GridFS对象,用于对文件进行存储。GridFS由文件信息集合和文件分块集合组成,用于对二进制文件进行分块存储。针对空间数据的存储,MogoDB提供了GeoJSON对象,可用于存储点状、线状和面状对象,MongoDB还针对GeoJSON对象提供了空间索引,实现空间数据的高效查询。
本文从三维模型的特点出发,结合三维模型建库的标准和MongoDB的数据库对象和数据类型,设计模型数据库的存储结构如图 1。
图1 基于MongoDB的三维模型库结构
系统的数据库由查询定位数据库、系统运维库和各地市的模型库组成。查询定位数据库存储行政区划、地名、兴趣点等辅助查询和定位数据,系统运维库存储了用户、角色、权限、系统访问日志以及数据库目录等数据。
各地市的模型库结构由模型库、模型子库、要素集合、文件集合4个层次组成。模型库是一个逻辑的概念,用于将各地市的模型库分组管理,一个逻辑库中有4个模型子库,每个子库对应到一个MongoDB的数据库,分别存储模型的元数据以及源模型、表现模型和历史模型的属性及模型文件。模型的几何信息采用GeoJSON对象存储。各子库的模型文件用GridFS存储模型文件,并用模型类别、编码、时间戳组合形成的文件名来区分各个模型。采用这样的命名方式可以方便地将模型与其属性关联起来,并按类别等信息对模型文件进行批量操作。
每个模型的元数据、表现模型属性和源模型属性通过模型编码进行关联,由于模型编码唯一标识了每一个模型,可以由表现模型快速查询到模型的元数据以及对应的源模型。模型更新时,通过时间戳来标记某一历史时间点的模型,实现历史模型的管理,以方便某一历史三维模型的回溯。
2.1 系统总体结构
本文采用Skyline TerraExplorer Pro6.1作为三维平台, 以MongoDB的C#驱动访问模型数据库,开发了三维模型管理系统。系统运行于内部局域网,由数据层、服务层以及应用层组成,系统总体设计如图 2所示。
图2 系统总体结构
数据层和服务层部署在服务器端。数据层包括基础地理信息数据、三维地形模型和三维城市构筑物模型。服务层包括数据查询服务和模型提供服务。数据查询服务基于MongoDB的空间查询功能开发,用于地名、兴趣点和行政区划查询、辅助模型的定位和浏览。由于Skyline TerraExplorer Pro并不支持从数据库中加载模型数据,系统开发模型提供服务,该服务监控并实时响应客户端加载模型的请求,从模型库中读取需要的三维模型数据返回给客户端,完成从数据库中加载模型数据。应用层为三维模型数据库管理系统,部署在各客户端。
2.2 系统功能实现
系统实现了模型库结构管理,模型数据批量入库、删除、更新以及编辑,模型快速提取与分发等功能。模型批量更新时,可以同时将旧的模型数据转入到历史库中,并为每个模型添加时间戳,从而实现历史模型的浏览与回溯。
通过与后台的模型查询服务对接,系统通过2种方式对模型数据进行加载和浏览:①以流的方式加载模型数据,借助Skyline TerraExplorer Pro的动态内存管理能力,适合于大范围模型的加载浏览。②查询感兴趣的区域模型,以动态创建模型对象的方式逐个加载,适合于快速查询浏览感兴趣区域的模型。
此外,系统还提供了模型统计的功能,能够以多种统计图表的方式显示各地区、各类型的模型数量,便于掌握三维模型数据的生产和建库情况。
系统实现涉及的空间范围查询采用MongoDB的空间查询算子实现,属性查询则采用MongoDB提供的丰富的属性查询操作完成。系统界面如图 3所示。
图3 系统界面
本文采用Skyline软件作为二次开发工具,利用MongoDB数据库实现三维模型的建库与管理,已应用到福建省数字城市建设生产的三维模型管理中,在三维模型的管理、分发和提供方面进行了一些有益的探索。目前已完成了数字泉州和厦门生产的三维模型的建库,其中泉州城市模型约4 000个,厦门城市模型约15 000个,表现模型数据总量近20 G,源模型数据总量约43 G,在后续的应用中将完成其他数字城市三维模型的建库。
Max格式的模型是目前通用的三维模型数据格式,国内外主流的三维地理信息系统都支持Max模型的导入与展示,Max模型也可在3D Max软件中进一步编辑处理,因而基于该系统提取和分发的模型,也可用于基于其他三维平台的三维地理信息系统建设。
[1] 唐桢,张新长,曹凯滨.基于Skyline的三维技术在城市规划中的应用研究 [J].测绘通报,2010(5):20-23
[2] CH/T 9015-2012.三维地理信息模型数据产品规范[S].
[3] CH/T 9016-2012.三维地理信息模型数据生产规范[S].
[4] CH/T 9017-2012.三维地理信息模型数据库规范[S].
[5] 朱国敏,马照亭,孙隆祥,等.城市三维地理信息系统中海量数据的数据库组织与管理[J].测绘科学,2008,33(1):238-240
[6] 周松涛. 基于关系数据库的三维模型库技术[J]. 测绘信息与工程,2005,30(6):30-31
[7] 王冬,王晓华.三维 GIS 中海量模型调度与存储地理空间信息[J]. 地理空间信息,2012,10(1):109-111
[8] Cbodorow K, Dirolf M. MongoDB权威指南[M].北京:人民邮电出版,2011
[9] 黄梦龙. 基于Skyline的三维城市模型数据库管理系统设计与实现[J]. 测绘与空间地理信息,2014,37(8):133-135
[10] MongoDB, Inc. MongoDB Manual[EB/OL]. http://docs. mongodb.org/manual,2014-08-09
P208
B
1672-4623(2015)01-0020-02
10.3969/j.issn.1672-4623.2015.01.007
黄梦龙,高级工程师,主要从事基础地理信息数据建库和GIS应用开发工作。
2014-09-10。
项目来源:福建省测绘地理信息局2014年测绘地理信息科技创新资助项目。