APP下载

滇池流域非点源污染文档型时空数据模型的研究与应用

2016-10-19谢志萍杨昆李泽城

湖北农业科学 2016年5期

谢志萍 杨昆 李泽城

摘要:针对滇池流域非点源污染应急响应、模拟及数据挖掘过程中,现有的基于关系数据库建立的时空数据模型进行了分析并指出其不足,提出了基于MongoDB及面向对象时空数据模型改进的文档型时空数据模型,以有效组织、存储与管理非点源数据;最后设计了滇池流域非点源污染时空数据管理系统,实现不同来源、格式数据的导入导出、编辑、索引及高级运算功能。试验证明,系统在存储、管理和维护海量时空数据等方面得到了提升,能为滇池流域非点源污染时空过程数据的模拟以及大数据挖掘提供统一的访问接口和数据支撑。

关键词:面向对象时空数据模型;MongoDB;滇池流域;非点源污染

中图分类号:P208 文献标识码:A 文章编号:0439-8114(2016)05-1295-06

DOI:10.14088/j.cnki.issn0439-8114.2016.05.053

Research and Application on Document Type Spatio-temporal Data Model of

Non-point Source Pollution in Dianchi Lake Basin

XIE Zhi-ping1a,2,YANG Kun1a,2,LI Ze-cheng1b,2

(1.a.School of Information Science and Technology;b.School of Tourism and Geographic Science,Yunnan Normal University,Kunming 650500,China;

2.GIS Technology Engineering Research Center for West-China Resources and Environment of Educational Ministry,Kunming 650500,China)

Abstract:In the non-point source pollution in Dianchi Lake Basin emergency response, simulation and data mining process, the existing temporal data model based on a relational database were analyzed and its shortcomings were pointed out,an improved model based on MongoDB and object-oriented spatio-temporal data model was proposed to organize, store and manage the non-point source data; Finally, the non-point source pollution spatio-temporal data management system of Dianchi Lake Basin was designed to achieve the following functions, such as importing & exporting,editing, indexing and advanced operation function of different sources or format data. The experiment results showed that,the system had been improved in storage, management and maintenance of huge amounts of spatial-temporal data, which could provide a unified access interface and data support for the data simutation and big data mining of non-point source pollution spatio-temporal process in Dianchi lake Basin.

Key words: object-oriented spatio-temporal data model; MongoDB; Dianchi Lake Basin; non-point source pollution

近年來,滇池流域点源污染经过治理已得到有效控制,而非点源污染问题却越来越突出,其产生来源范围广、隐蔽性与潜伏性强、随机性大,主要通过淋溶与降雨径流的冲刷作用,促使污染物汇入水体[1]。为了研究非点源污染的产生与扩散情况,设计了滇池流域非点源污染的时空过程模拟应急响应示范系统、SWMM、SWAT、ABM、叶绿素反演模拟等。但这些系统“信息孤岛”现象严重,系统大多强调的是空间数据的分析、处理及可视化等功能,而忽略了空间数据统一存储、管理和维护。对此需设计一个非点源污染空间数据的管理系统为研究提供统一的访问数据的接口的同时,支持海量数据的存储和管理。然而,传统空间数据研究中,大多是通过建立关系数据模型,以属性的方式描述和表达空间数据,存在一些不足[2],为此,针对滇池流域非点源污染空间数据管理系统对空间数据模型的需求,提出了基于MongoDB文档特性与面向对象时空数据模型改进的文档型时空数据模型,为空间数据模型增加时间要素,利用MongoDB对流域内历史数据和现状数据进行统一的存储和管理,以期为滇池流域非点源污染应急响应、模拟和数据挖掘提供统一的访问接口和数据支撑。

1 面向对象的时空数据模型

时空数据模型的研究从20世纪70年代开始,一直到80年代都是重点对时态数据库的空间信息和时间信息的处理,但基于时空组合的研究涉及较少。直到20世纪90年代早期,出现了以GIS中栅格、矢量数据模型为基础的面向对象的时空数据模型[3,4]。但是对时间和空間的表达仍旧较少,不能反映空间对象前后变化之间的因果联系,时间存储在一个普通属性表里,与空间数据其他属性一样,重点对地理状态作描述[5]。

面向对象时空数据模型中,为了充分描述对象的活跃状态及变化过程,把真实世界表示为各个地理时空对象类,包含空间对象类、时间对象类及属性对象类[6,7]。每个对象类封装了时间、空间与属性特征,还包括对象间关系和行为操作[8]。如图1,时间对象类是针对时间信息来建模,空间对象类是针对空间信息来建模,包括空间位置(经纬度坐标)、地物形状(点、线、面)以及空间拓扑信息等;属性对象类是操作者自己定义的,有标识ID、Name、Type等属性,其中Name可以为道路、河流、规划区、土地利用或建筑等。面向对象时空数据模型增加时间信息来表示多边形、弧段、节点等几何要素,充分考虑了时间拓扑与空间拓扑结构,但对分层图层间的时空性质以及内在的关系的考虑存在不足,并且在基础关系描述与显示定义方面也相对缺乏[9]。

2 MongoDB数据库

MongoDB是非关系型数据库。该数据库具有如下的逻辑模型:一系列字段构成单个文档,一系列文档构成集合,一系列集合又构成数据库,最终多个数据库构成MongoDB系统实例[10-12]。具体如下:①集合等同于表,其实质为一组文档。与关系数据库不同的是,由于MongoDB的模式自由特性,对字段结构并没有作强制要求。因此,用户可以存储不同结构的文档在相同集合中,而不必预先定义一个集合的字段结构;在数据库运行时,可以随时动态地添加或删除文档的字段,支持数据的变长记录。②MongoDB文档指结构化的文档,通过规则的Key-Value对来表示数据,而并非自由文本[13]。MongoDB的文档使用BSON语言表示,MongoDB的BSON文档是数据的抽象,是非关系数据库存储的基本单元和的数据交换格式。单个文档等同于单个BSON对象,含有多个键值对。BSON以二进制字节的形式存储键值对,键为字符串格式,值可以为任意的数据类型,除了基本的浮点数、整数、日期、字符串等,还可以是键值对或数组等复杂的数据结构,可以嵌套数组或者子文档,即文档的字段值可以是一个文档或者数组类型的,支持数据的不一致存储。如下所示即为用BSON对象表示滇池流域非点源污染时空数据信息的一条记录:

{

ID:"001",

Name:"DianchiRoad",

RoadGrade:5,

RoadWidth:16

Adress:{Area:"XishanDistrict",City:"Kunming"}

Company:[{DesignUnit:"RoadConstruction" , DesignCost:"10W"},{ ConstructionUnit:"RoadConstruction",ConstructionCost:"50W"}]

}

在记录中,道路有ID、Name、RoadGrade、RoadWidth、Adress、Company六个属性。ID和Name属性对应的值类型为字符型,RoadGrade和RoadWidth对应的值类型为整形,Adress对应的是键值对,Company对应的是数组,数组元素的类型是键值对。同时,MongoDB能将关系型数据库中本来要使用外键联接的多个集合归纳到一个集合中,减少了集合与集合之间的关联,提高了数据库的性能。如记录中,Adress中的Area和City需要建立Area和City对应的表Area和City,其中City表外键指向Area表,查询时需要二级联动查询。MongoDB的这种能够存储非结构化数据,以及支持数据不定长与不一致的特性正是本文提出文档型时空数据的关键。

3 文档型时空数据模型

由于现实世界的复杂性,设计通用的时空数据模型面临巨大困难,学者们更倾向于针对一个或一类地理问题设计时空数据模型并加以验证,现已在城市绿色空间、地下管网、地籍管理等领域有重大突破。滇池流域非点源污染时空变化研究是前人很少涉足的领域,包括点、线、面及其复合对象的时空变化规律,其地表变化过程复杂,建模困难。然而,建立滇池流域内非点源污染文档型时空数据模型来描述非点源污染的连续变化,能为解决滇池流域非点源污染相关问题提供理论依据和应用方法。

3.1 现有时空数据模型的不足

现有的关系数据模型,其内在的关系模式会制约时空数据处理及便捷访问。图2为关系数据库概念模型,包含两个时空要素类,其存储时空数据不足,具体如下。

1)非点源污染时空数据是一种非结构化的数据。其非结构化特点主要表现在:空间实体不固定,例如一条弧段可能包含两对坐标点,也可以包含10万对坐标点;空间实体具有非原子性特点,有的甚至是嵌套的,如一个多边形可能有多条弧段,每个弧段由多点构成。因此如果要用关系型时空数据库表示通常需要叠加复杂的多对多关系及其要素,一个概念模型通常含有多个关系,也即含有多张二维的关系表。其关系复杂,涉及的要素较多,最终造成数十甚至数百个表的数据规模,数据量庞大,同时不利于系统的维护。因此对于滇池流域非点源污染的时空数据这种非结构化的数据,不方便用二维表逻辑进行表示。

2)基于关系数据库建立的时空数据模型要求对象固化,而面对非点源污染时空数据具有的不一致、不定长特性时,就需要对其进行分类,增加了关系数据库的复杂性,成本较高,修改较难。

3)时间是地理实体和地理现象的另一个内在基本特征,是地理实体演变过程的一个重要组成部分,地理现象的特性随时间的变化而变化。基于关系数据库建立的时空数据模型的时间记录的是关系表记录的时间,往往会将各个时期的演变和关系破碎化和复杂化,增加时空关系的维护难度。

4)任务繁重。目前时空数据管理系统中缺乏完整的历史变化数据及动态变化过程的存储和管理,无法有效地进行动态跟踪及预测未来的发展趋势;针对滇池流域非点源污染模拟的时空数据建模方法在国内外的研究中涉及很少,没有通用的建模方式,因此对滇池流域非点源污染模擬时空数据的建模难度较大。

3.2 文档型时空数据模型创建

滇池流域非点源污染时空数据模型构建的核心和难点是准确、清晰地描述滇池流域非点源污染各类对象的时空变化过程,同时能兼容简单对象的时空变化过程。针对前文中对现有时空数据模型的比较和对滇池流域非点源污染时空变化特点的分析,并结合实际应用的需要,发现面向对象的方法能比较容易地描述以滇池流域非点源污染的时空变化。结合MongoDB数据库的特点,在物理实现上所有数据以模式自由的文档结构存储。根据滇池流域非点源污染时空数据变化特点,从建立动态空间数据和属性数据合一的非点源污染模拟时空数据库的角度出发进行设计,建立非点源污染文档型时空数据概念模型,如图3所示。

文档型时空数据模型兼具MongoDB文档模式自由和面向对象时空数据模型特性,支持松散的数据结构,采用BSON格式进行组织,存储复杂的时空数据类型,将不同结构、类型的时空数据存储进一张共同的大表中,实现一体化存储[14],主要包括以下几部分。

1)在对象管理上,利用MongoDB模式自由的特性,以水体为对象进行管理,将污染水域的各种对象导入一个库中。有效降低非点源污染时空数据管理系统设计和建设的复杂度。解决数据不一致、不定长导致的数据表增加或结构冗余的难题。

2)在空间上,将监测点、河流、湖泊整合在一起,以点、线、面的形式存储。对于非结构化的时空数据,通过充分利用MongoDB的文档特性,以面向对象方式来表达地理对象,以文档形式无限制地存储任意的时空变化类型对象驱动事件对象,一个对象可以自由嵌套许多原来对象的字段,实现非点源污染非结构化时空数据的存储与管理。

3)在不同属性数据建模中,对时空变化不活跃的地理现象,选用静态数据建模;而对时空变化活跃的地理现象,选用动态数据建模,区别表示随时间变化的信息和与时间变化无关的信息。

4)在时态上,由于水污染各个时期的演变关系破碎,导致维护工作繁重,因此针对不同历史频率的数据进行分别存储,以便区别对待数据输入时间和使用的时间,实现将水体各个时期的过程数据统一管理起来,忠实记录水体来龙去脉。对水体信息的历史状态进行保存、恢复、跟踪和预测。

5)对于滇池流域非点源污染的海量数据,采用本地磁盘上存储当前数据,而将历史数据存储在远程服务器大容量光盘上,同时,采用MapReduce技术对海量数据进行高级统计运算。

6)在查询效率提升中,通过时空数据所具有的空间特征,建立一系列的空间索引,同时也通过历史频率数据的存储建立时间和空间索引来提高查询的效率。

模型分为4个主要部分:ID、水体对象类、索引与事件。①从对象来看,对水体对象作惟一性标识和信息管理,用对象ID来标识不同对象,不同对象的内涵可能差别较大,这得益于MongoDB的模式自由特性,这些差别较大的对象仍然可以整合在一起。②在水体对象类中,将水体的基本属性和空间信息整合到一起,利用BSON格式类型来无限制嵌套存储任意的点、线、面对象字段。③采用阵列存储雨量的变化信息,能够兼容存储若干个有差别的雨量变化对象,有效地存储空间信息类、属性信息类以及时间信息类,同时记录时空对象变化类型驱动地理对象发生变化,时空对象变化类型即为降雨、季节变化、农作物灌溉、工业排污等各种不同的变化类型。图4即为连续记录未降雨、降小雨、降大雨的滇池流域随事件发生变化的成长树,通过降雨事件的驱动实现非点源污染时空数据实时、完整、有序的记载。在以后的模拟与研究中,可以通过大量的历史数据以及实时数据分析,获得降雨对流域非点源污染的影响以及它们之间的关联,从而有效降低降雨对流域非点源污染的影响。

从形态上来说,在不同事件的驱动下,利用对象状态变化来表达时空过程,水体时空对象变成一个可以成长的树。连续记录未降雨、降小雨、降大雨时候的水体时空数据,包括流域内的属性数据及空间数据。由于雨量变化的不同,树的结构亦不相同。从时间上来说,数据中的各雨量变化对象以实际发生的时序排列,在雨量变化对象中,记录了每一个流程的时间,将时态寓于对象的变化信息中。利用MongoDB的非点源污染时空数据库管理系统,通过将水体各个时期的实测数据或者模拟数据,依雨量变化的时间序列顺序进行存储管理,将各种要素复杂关系内化到水体对象中,一体化地存储各种水体要素,可以有效解决水体管理时空属性的特殊要求。如下为滇池流域中一个点在降雨开始以及降雨结束情况下的实时监测GPS数据,包括水体对象的基础数据信息、监测信息以及时间记录。

降雨开始监测信息:

{

"ID":"2015070901",

"MonitoringTime": [{"Time1": 14:49:56}]

"Name": "DianChi",

"Adress":{"Area":"xinan", "City":"Kunming"}

"Longitude":24°33'13.4172",

"Latitude": 102°26'20.1228",

"Data":[{"Depth":2.5, "Temp": 22.1, "DO": 11.33, "Achl": 33.2,"PH":08.35,"TP":2.12, "TN":3.66}]

"StorageTime": 14:49:57

}

降雨结束监测信息:

{

"ID":"2015070901",

"MonitoringTime":[

{" Time1": 14:49:56} ,

{" Time2":14:49:56}]

"Name":"DianChi",

"Adress":{"Area":"xinan" , "City":"Kunming" } ,

"Longitude":"24°33'13.4172"",

"Latitude": "102°26'20.1228" ",

"Data":[{"Depth1":2.5, "Temp1":22.1,"Achl1": 33.2,"DO1":11.33","pH1":08.35,"TP1":2.12,"TN1":3.66},{"Achl2": 28.5, "Depth2" :2.8, "Temp2": 19.5,"DO2": 11.33, " pH2": 08.04, "TP2": 2.38,"TN2":3.76}]

"StorageTime": [{" StorageTime1": 14:49:57},

{"StorageTime2": 15:30:13}]

}

在降雨前后的BSON文檔中,完整记录ID号为2015070901水体对象的详细信息,包含时间信息,空间信息和属性信息。其中时间信息为降雨开始监测时间Time1、降雨结束监测时间Time2、入库时间信息StorageT1和StorageT2;水体对象空间信息为水体对象经纬度信息Longitude和Latitude;水体对象属性信息包含水体水深(Depth)、水温(Temp)、浑浊度(DO)、水体叶绿素a含量(Achl)、pH、总氮(TN)、总磷(TP)等。

4 时空数据管理系统的设计与实现

4.1 系统数据库

滇池流域非点源污染模拟时空数据管理系统包含存储实时观测数据、模拟结果的观测数据库以及模拟数据库两个物理子库。图5为存储的时空数据。观测数据库主要有栅格、矢量、GPS、传感器、影像五类对象,模拟数据库包括栅格、矢量和影像、文本四类对象。

4.2 系统功能简介

根据滇池流域时空过程模拟研究以及数据挖掘的时空数据组织、入库、输出、存储、管理的需求,系统总体功能需求如图6。系统子功能包括Add、Update、Delete、Check等编辑功能;聚合功能、MapRduce等高级运算功能;数据导入导出功能;时间与空间等索引功能。

4.3 系统试验结果

从滇池流域实际情况出发,结合MongoDB文档特性、面向对象时空数据模型进行研究和开发。通过使用MongoDB驱动程序,编写代码,实现MongoDB服务器,数据库、集合、文档的访问与查询。经实践,完成了设定目标,实现系统总体功能模块。系统界面如图7。

5 小结

本研究提出基于文档型时空数据模型,利用事件驱动的特性,并应用于滇池流域非点源污染时空数据管理系统的设计和实现中。将非点源污染时空数据空间、属性数据、时间数据内化到水体对象中,能够有效地支持复杂、多源、非结构化的时空数据组织与存储,实现历史数据存储以及随时间变化的信息与不随时间变化的数据区分,它摆脱了传统的基于关系模式设计时空数据模型的弊端,不需要设计复杂的表关系。但是面对更为复杂的滇池流域非点源污染情况,由于选择MongoDB作为后台数据库,因此具有无法支持事务操作、占用空间过大等缺点。接下来,仍需要对文档型时空数据模型进一步优化,考虑对于现实世界的模型如何抽象,才能够更好地适应非关系数据库的数据组织、存储、管理与应用;同时,也需要考虑如何更好地结合云平台、大数据、物联网等新兴技术进行时空数据的研究。

参考文献:

[1] 王江彦.河南境内淮河流域农业非点源污染模拟研究[D].郑州:河南农业大学,2011.

[2] 赵 雷.域数据模型的研究与实现[D].江苏苏州:苏州大学,2006.

[3] 陈新保.基于对象、事件和过程的时空数据模型及其时变分析模型的研究[D].长沙:中南大学,2011.

[4] 王云献.基于时态GIS的房产信息管理系统的设计与实现[D].河南开封:河南大学,2009.

[5] 尹章才,李 霖.GIS中的时空数据模型研究[J].测绘科学,2005, 30(3):12-14.

[6] 陈新保,朱建军,陈建群.时空数据模型综述[J].地理科学进展,2009,28(1):9-17.

[7] 龚健雅,李小龙,吴华意.实时GIS时空数据模型[J].测绘学报,2014,43(3):226-232.

[8] 张 英.时空数据模型的建模研究与应用[D].山东青岛:青岛大学,2007.

[9] 黄照强,冯学智.时空数据表达研究[J].计算机应用研究,2005, 22(9):19-21.

[10] 王光磊.MongoDB数据库的应用研究和方案优化[J].中国科技信息,2011(20):93-94.

[11] 怀 特.Hadoop权威指南(中文版)[M].曾大聃,周傲英,译.北京:清华大学出版社,2010.

[12] CHODOROW K.深入学习MongoDB[M].巨 成,程显峰,译.北京:人民邮电出版社,2012.

[13] 沈 姝.NoSQL数据库技术及其应用研究[D].南京:南京信息工程大学,2012.

[14] 李光辉.基于动态距阀值的基态修正模型构建方法及其应用研究[D].广西桂林:桂林理工大学,2012.