陈晴,吕终亮,郑卫江,胡永亮,滕舟(.浙江省气象信息网络中心,杭州 3007;.中国气象局国家气象中心预报系统与开放实验室,北京0008)
基于空间数据库的气象数据存储及实时更新
陈晴1,吕终亮2,郑卫江2,胡永亮1,滕舟1
(1.浙江省气象信息网络中心,杭州310017;2.中国气象局国家气象中心预报系统与开放实验室,北京100081)
摘要:
关键词:
Model Builder建模技术;栅格数据;空间数据库引擎(ArcSDE)
地理信息系统(Geographic Information System,GIS)是以采集、存储、管理、显示与分析地球表面与空间位置、地理分布有关数据的计算机信息系统,是一种分析和处理海量空间数据的技术[1]。随着GIS系统在更加复杂化、集成度更高和并发性更强等方面的应用需求,系统所需的空间数据量急剧地增长,用户对空间数据并发的需求也日渐突出。GIS中用于存储和管理空间数据的数据库,经历了从文件系统到关系型数据库扩展、到面向对象数据库、再到对象-关系数据库的演变历程[2]。空间数据库技术是GIS的底层支撑技术,而空间数据库引擎是GIS前端访问空间数据库的必经桥梁。随着GIS技术的不断发展,各种类型的空间数据引擎层出不穷。目前,国内外大型GIS的空间数据引擎产品在设计和实现方面各有所长。主要有ESRI公司的ArcSDE、MapInfo公司的SpatialWare以及国内SuperMap公司的XSDE等。
目前,基于GIS的气象信息化研究已经比较普遍[3-5],我们在“气象应急服务系统中”尝试应用ArcSDE和Oracle关系型数据库对气象空间数据和属性数据进行统一管理,方便基于GIS技术应用系统进行数据访问。本文基于COM的GIS二次开发技术和ArcGIS Model Builder建模技术,开发组件构建模型,结合ArcSDE的工作机制对气象自动出图系统进行改进,系统通过自动调用模型对各类实时的气象数据进行处理,形成栅格数据后存储到ArcSDE中,增强了气象数据的共享和访问能力。
1.1气象自动出图系统总体架构
气象自动出图系统是一套基于GIS技术,以后台运行的方式自动生成气象专题地图,满足气象服务材料制作需求的系统[6]。系统总体框架由服务器、数据服务层以及客户端这三层结构组成,其总体架构如图1所示。
1.2业务处理流程
基于ComGIS的二次开发技术开发组件,利用ArcGIS Model Builder技术制作模型获取气象领域的多格式数据源(文件),对数据进行转换、分析处理,将数据上传到ArcSDE中,向数据库添加执行成功记录。
图1 气象自动出图系统总体架构
系统后台通过任务配置管理用户设置的时间,定时运行模型。前台通过用户界面,对后台模型运行状况进行监测,出现异常时给用户一个友好的提示。系统同时具有捕捉错误的功能,并将不同的错误分为两类(致命错误、一般错误)记录在系统自带的数据库中,系统针对不同的错误进行相应处理。对于严重错误,系统将重启服务器;对于一般错误,系统将重置任务,隔段时间后再次执行模型。用户也可以使用手动运行功能设置模型参数并运行模型。主要流程如图2所示。
2.1基于COM的GIS二次开发技术
ComGIS基于GIS技术与COM技术,是一种面向对象技术和构件式技术的GIS软件。其基本思想是把GIS的各种功能模块进行分类,划分为不同类型的控件,每个控件完成各自相应的功能,各GIS控件之间以及GIS控件与其他非GIS控件之间,通过可视化的开发工具集成起来。组件式GIS基于组件对象平台,具有标准的接口,允许跨语言应用,因而使GIS软件的可配置性、可扩展性和开放性更强,使用更灵活,二次开发更方便[6]。
系统基于.NET Framework开发环境,以ArcGIS Desktop、ArcObjects和ArcGIS Engine为开发平台,利用COM组件库和ActiveX控件开发基于GIS的组件。
2.2基于ArcGIS Model Builder的气象数据转换
ArcGIS Desktop是ESRI公司推出的为企业构建完整地理信息系统的综合GIS软件平台,是一系列整合的应用程序的总称。ArcGIS Model Builder作为其中的一个应用程序,是一种高效的机制,它为设计和实现空间处理模型(包括工具、脚本和数据)提供了一个图形化的建模框架[7],通过对模型的创建、编辑和处理工作实现复杂的GIS任务。模型类似于数据流程图,通过直接拖拽的方式将工具和数据按照有序地组织成完整流程并执行。在Model Builder中,方法和流程可以共享。
图2 业务流程图
MICAPS数据是目前气象领域较为广泛的数据应用格式,不能直接被地理信息系统共享及访问。从数据结构上来说,矢量数据与栅格数据是GIS中两种主要的空间数据结构。矢量数据分为点、线、面三种类型,同类型的矢量数据可以形成矢量图层[5]。MICAPS数据中,不同类型的信息可存储在一个图层中,而常用的GIS软件特别是ArcGIS的数据组织中不允许将类型不同的矢量数据表达在同一图层中的。因此要使MICAPS数据在ArcGIS软件中共享和访问,首先要解决MICAPS气象资料数据的转换问题。以MICAPS4类(如云图、雷达以及模式输出产品等)数据作为例子,首先需要将MICAPS4类文件转换栅格数据(如Grid文件),将转换后的数据重新进行组织形成多个图层[5],在ArcGIS软件中应用。
在构建模型过程中,除了应用空间数据导入组件、数据合并组件等ArcGIS自身提供的地理处理组件外,还利用COM组件库和ActiveX控件开发基于GIS的处理气象数据的模型组件,完成整个数据处理流程。其中,ImportRadar组件和ImportCloudy组件分别实现了雷达、卫星云图的气象数据到GIS支持的栅格数据格式的转换[5]。图3为云图原始文件(二进制文件格式)经过加工转换录入空间数据库的过程。
图3 云图数据的加工转换过程
2.3空间数据库引擎ArcSDE
ArcSDE(Spatial Database Engine)是美国ESRI公司推出的空间数据库引擎,是结合客户/服务器模式和数据库管理技术创建的一种技术[8]。ArcSDE是数据库系统中管理地理数据库的接口,允许往关系数据库中加入空间数据,提供地理要素的空间位置及形状等信息。ArcSDE处于应用程序和关系数据库管理系统之间,利用关系数据库在数据存储、数据完整性等方面的先进技术手段[9],将海量空间数据(包括矢量数据、栅格数据和元数据)有机地组织和管理起来,通过长事务处理、空间索引、版本管理等机制[10],提供对空间数据的多用户高效的并发访问。ArcSDE支持矢量、栅格、CAD等数据的存储,将数据移植到一个空间数据及属性数据集成的关系数据库管理系统(RDBMS)中,如SQL Server,DB2,Sybase,Oracle等[11]。
系统中对于以文件形式存储的气象数据,如实时获取的雷达、云图等栅格数据,采用空间数据库技术进行统一管理,利用空间索引机制提高数据的访问效率。服务器端的ArcSDE连接到Oracle数据库后,利用ArcGIS Desktop中的ArcCatalog功能模块管理空间数据,应用程序通过空间数据库引擎ArcSDE访问Oracle中的气象数据,数据经过转换处理后进入空间数据库。
3.1问题描述
我们在ArcGIS Model Builder平台上利用自己开发的组件和ArcGIS自带的组件根据需求搭建模型。在对数据进行更新处理时先删除SDE中的原数据,然后同名上传新数据。在模型处理时,将ArcGIS Desktop自带的删除SDE中的栅格数据组件delete(management)和向SDE拷贝栅格数据组件copy Raster(management)放置在不同的模型中,以避免SDE中数据删除不成功时,上传新数据也不成功。
在实现的过程中,当其他用户对SDE中的栅格数据进行操作时,SDE中的该数据被锁住,就无法对ArcSDE中的数据进行删除,新的数据就无法覆盖原数据。事实上,当对ArcSDE中的数据进行删除操作时,已经与SDE空间数据库进行了连接,当删除不成功时,连接并没有断开。气象数据转变成栅格数据的包括雷达OHP、雷达DBZ、云图等多种气象数据,而且这些数据每半小时或每小时都需要更新。建立连接是一个费时的活动,系统需要分配其内存资源。如果某些数据库连接后,不能保证使用完它后能被正确关闭,将导致数据库系统中的内存泄漏、连接数超过设定,最终将不得不重启ArcSDE空间数据库引擎。
3.2对气象自动出图系统的改进措施
当ArcSDE中的数据被锁住时,编写一个del.sql文件删除Oracle的process_information表里除本机用户外的其他用户的进程,删除SDE空间下tables_lock表里面的记录。编写执行del.sql的批处理文件del.bat。
将模型部署到气象自动出图系统(MeteoCarto-Builder)上,当ArcSDE中的数据被锁住时捕捉错误,根据返回的错误类型执行del.bat批处理,重新执行模型。以下是部分代码的实现:
public static string m_strSpeError = "特殊错误";
public string Execute()
{…
try{…
GP.Execute(m_ModelName,parameters,null);//执行模型
…}
catch(Exception ex)
{…
m_exeResult = "模型调用失败!: " + Return-Messages(GP)+ ex.ToString();//捕捉GP执行时返回的错误消息
String strDisMethod = DealwithExeResult(strDis-Method,strIsError,exeType);//通过调用函数获取解决错误的方法
if(strDisMethod== "删除SDE进程信息并重新执行模型")
{This.Execute();}
…}
}
private string DealwithExeResult(string strDisMethod,string strIsError)//根据错误类型执行相应处理
{…
if(GetErrorType(ExeResult)== m_strSpeError)//根据错误信息得到错误类型
{System.Diagnostics.Process.Start("delpath\ del.bat");
strDisMethod = "删除SDE进程信息并重新执行模型";
…
return strDisMethod;
}
}
通过对系统的改进,当ArcSDE中的数据死锁时,系统自动解锁,通过对模型的调用,实现自动对各类实时的气象数据进行处理,上传到ArcSDE中。云图数据在ArcSDE中显示的效果如图4所示。
图4 云图的栅格数据
本文基于COM的ArcObject组件的二次开发技术和ArcGIS Model Builder建模技术,完成各类气象数据的导入、转化、分析处理,形成相应的栅格数据存储到ArcSDE中。并从ArcSDE的工作机制出发解决当ArcSDE中的数据被锁住时,根据捕捉到的错误,自动解锁,实现ArcSDE中数据的实时更新,自动用新数据同名覆盖原数据,提高了气象数据查询、检索的效率,以实现其在Internet环境下的高效组织和便捷服务[13]。与此同时气象数据可访问性更好,利于目前较多基于GIS技术应用系统的访问。
参考文献:
[1]肖邱勇,李光强.空间数据性能对比实验分析[J].计算机工程与应用,2014,50(21):139-142.
[2]祝青,胡奇光.空间数据库引擎技术研究[J].软件导刊,2009,8(3):165-166.
[3]张永华,肖文名,何婉文,等.基于ArcGIS和VML的气象信息发布平台[J].应用气象学报,2011,22(4):498-504.
[4]郑卫江,吴焕萍,罗兵,等.GIS技术在台风预报服务产品制作系统中的应用[J].应用气象学报,2010,21(2):250-255.
[5]孙利华,吴焕萍,郑金伟,等.基于Flex的气象信息网络发布平台设计与实现[J].应用气象学报,2010,21(6):745-761
[6]吴焕萍,罗兵,王维国等.GIS技术在决策气象服务系统建设中的应用[J].应用气象学报,2008,19(3):380-383.
[7]An Overview of Model Builder.http:// webhelp.esri.com/arcgiSDEsktop/9.3/index.cfm?TopicName=An_overview_of_ModelBuilder.
[8]张晶晶.基于ArcSDE的水土保持遥感数据库系统研究与实现[J].武汉:华中科技大学,2007.
[9]张红忠,赵强.ArcSDE数据库连接池技术在WebGI中的应用[J].计算机系统应用,2008,17(5):90-93.
[10]熊丽华,杨峰.基于ArcSDE的空间数据库技术的应用研究[J].计算机应用,2004,24(3):90-96.
[11]Robert WEST.Understanding ArcSDE[R].Californ -ia USA:ESRI,2001.
[12]李航,岳丽华.基于COM和ArcSDE的遥感图像数据库开发[J].计算机应用,2005,25(5):1212-1214.
[13]李集明.基于Internet面向社会公益性共享的气象科学数据存储检索策略研究[J].气象科技,2007,35(4):589-592.
According to the business requirement of meteorology service products in China Meteorological Administration emergency platform,discusses the secondary development of GIS based on COM technology and ArcGIS Model Builder modeling technology,builds models similar to work flow diagrams.Then MeteoCartoBuilder is used to call models to process multiform meteorological data to form raster data and store the raster data into the Spatial Database Engine(ArcSDE).At the same time,updates the raster data in ArcSDE in real time,thus the data of meteorological product can be updated automatically,managed conveniently and have a strong real-time to meet the needs of real-time update of data in another system.
Keywords:
Model Builder Modeling Technology;Raster Data;Spatial Database Engine(ArcSDE)
The Storage and Real-Time Updating of Meteorologic Data in Spatial Database
CHEN Qing1,LV Zhong-liang2,ZHENG Wei-jiang2,HU Yong-liang1,TENG Zhou1
(1.Zhejiang Provincial Meteorological Information and Network Center,Hangzhou 310017;2.Forecast System and Open Laboratory of National Meteorological Center,China Meteorological Administration,Beijing 100081)
Abstract:
结合中国气象局应急平台气象服务产品生成业务的需要,详细讨论基于COM的GIS二次开发技术和ArcGIS Model Builder建模技术,以类似工作流的方式构建模型,通过气象自动出图系统(MeteoCartoBuilder)自动调用模型对各类气象数据进行处理加工,形成栅格数据后存储到空间数据库引擎ArcSDE中,同时实现ArcSDE中栅格数据的实时更新。达到气象产品数据自动化更新,管理方便,具有很强的实时性,以满足第三系统数据实时更新的需要,在气象服务产品制作中表现出较强的应用能力。
文章编号:1007-1423(2016)15-0051-05
DOI:10.3969/j.issn.1007-1423.2016.15.013
作者简介:
陈晴(1984-),女,浙江杭州人,硕士研究生,工程师,研究方向为计算机网络技术、计算机支持的协同工作、气象数据加工处理
收稿日期:2016-03-24修稿日期:2016-05-15