2. 湖南省气象局, 长沙 410007;
3. 中国科学院南京地理与湖泊研究所, 南京 210008;
4. 中国气象局预测减灾司, 北京 100081;
5. 南京大学大气科学系, 南京 210093
2. Hunan Provincial Meteorological Bureau, Changsha 410007;
3. Nanjing Institute of Geography and Limnology, CAS, Nanjing 210008;
4. Department of Forecasting Services and Disaster Mitigation, CMA, Beijing 100081;
5. Department of Atmospheric Sciences, Nanjing University, Nanjing 210093
近几年来,国际上普遍开展了将GIS技术应用于气象的研究和尝试[1~4],收到了一定的成效,但专门针对气象应用的成熟GIS系统仍在研制之中,而且大多数都是在现有商业GIS系统的基础上加以扩展或进行二次开发而成。比如美国NCAR正与ESRI合作研究气象专用数据模型来扩展ArcGIS[4],并举办了针对ArcGIS的气象数据模型专题研讨会。
我国将GIS与气象结合起步稍晚,但也已进行了积极的探索[5~8]。1997~2000年,中国气象局预测减灾司组织开展全国第三次农业气候区划试点工作,就曾组织力量研究GIS在农业气候区划中的应用。但上述这些工作基本上都建立在对现有商业GIS软件的简单应用或二次开发之上。
由于气象业务的特殊性,现有成熟的商业GIS在气象上的应用并不很成功,原因可以归纳为以下几个方面:(1) 现有商业GIS不能很好地处理气象时态数据;(2) 现有商业GIS不能很好地支持气象应用模型的集成;(3) 现有商业GIS使用复杂,给该技术的普及带来了困难;(4) 现有商业GIS中的相当一部分功能并非气象部门所必需的,而气象应用所需要的某些功能它们恰恰不具备;(5) 十分昂贵,作为社会公益性事业部门的气象部门难以大量引进。
基于上述原因,开发适合在气象部门应用的气象行业GIS具有重大的意义,它将对整个气象业务服务工作产生深远的影响,为气象防灾减灾工作搭建一个坚实的基础平台。
1 系统开发的目标与技术原则气象地理信息系统 (MeteoGIS) 的开发目标是:立足于新时期气象防灾减灾工作对GIS技术的实际需求,运用最新的开发策略和技术手段,开发出具有气象行业特色、适合在气象领域应用的专业GIS软件,作为各类气象业务的支撑平台。系统开发的核心是一个不依赖于任何商业GIS系统的独立GIS内核,针对气象防灾减灾工作特点简化需求不是很迫切的部分功能,同时强化气象应用急需的部分功能,重点支持气象应用模型的集成。
为了实现上述目标,该系统的开发必须坚持前瞻性、实用性和通用性相结合的原则,采用先进的平台和开发工具从底层开发。底层开发是指不依赖某个GIS平台软件,开发者自己开发GIS的空间数据操纵、表现、分析处理和应用等功能。这种开发方式工作量大,技术难度高,开发周期长,但开发者拥有完全的主动权,能最大限度地满足自身行业的需求[9]。为了从根本上解决气象部门面临的业务技术难题,必须坚持从底层开发,以保证气象部门拥有完全的自主知识产权和软件版权。
气象地理信息系统的开发是一个循序渐进的过程,首先开发出GIS核心功能组件,形成一个可以灵活扩展的GIS内核,然后在此基础上逐步增加对气象应用模型的支持,实现一个面向气象应用的完整GIS系统。
2 开发模式与开发平台 2.1 MeteoGIS的开发模式当前最流行的软件开发模式是基于组件的开发 (CBD) 模式[10~12]。组件是被封装成单独的二进制单元且可复用的自描述程序,可以通过属性、方法和事件进行访问[10],它是对象的进一步完善,也是CBD这种新的软件开发模式的核心。
CBD技术是由面向对象编程 (OOP) 技术发展起来的,它比OOP技术更加优越[10~11],具有其他软件开发模式不可比拟的优势,是当前一个主要的软件技术潮流[12]。
因为CBD可降低软件开发和维护成本,该技术已被引入GIS开发领域,它已逐渐成为GIS开发的主流模式[9]。通过把GIS功能分别封装成一个个组件,可以使系统具有很好的灵活性、开放性和可扩展性。组件式GIS是GIS软件发展的必然趋势,国外主要GIS软件在20世纪90年代中期都进行了组件化改造,并于20世纪末相继完成[13]。
MeteoGIS的开发采用基于组件的开发模式,其开发过程由组件体系结构规划、组件开发和应用系统构建3个阶段组成,这是基于组件开发模式的3个必不可少的技术环节[12]。
2.2 MeteoGIS的开发平台软件组件化革命是以组件基础设施的形式到来的[12]。支持组件开发的组件基础设施主要有COM、DCOM、COM +、.NET、EJB以及CORBA等。其中微软最新推出的.NET框架是一个广泛而强大的开发平台,它能帮助程序员花较少的时间编写出安全、健壮的代码,同时允许不同语言使用相同的公共类和服务,使相互间的交互更加有效,而且使得组件的部署更加容易。.NET引入了一种新的组件模型,开发人员可以使用标准语言的语法来创建、发布和导出组件,这些组件潜在地可以被每个人在任何时间访问。
鉴于.NET框架将是Windows操作系统未来版本的核心[14],而且其他操作系统支持的.NET框架也将不断推出,在.NET框架下开发组件式GIS应为明智之举。而作为.NET框架下首选编程语言的C#语言,是一种完全面向对象的、强类型的安全型编程语言[14],它吸收了多种流行编程语言的优点,具有很强的生命力。所以,MeteoGIS的开发选用了微软.NET为开发平台,利用Visual Studio.NET集成开发环境,采用C#语言编程,用面向对象的方法开发出各类GIS功能组件。
3 MeteoGIS的设计 3.1 数据流程设计MeteoGIS的数据流程如图 1所示。
|   | |
| 图 1. MeteoGIS的数据流程图 | |
MeteoGIS的核心是一个分布式时空数据库以及对数据库中的数据进行各类操作并制图输出的GIS内核引擎。时空数据库采用SQL Server 2000实现,对数据库的操作通过C #语言编写的接口组件来完成。
3.2 数据库设计数据库设计是GIS设计的核心内容,其主要任务是确定空间数据库的数据模型以及数据结构,并提出空间数据库相关功能的实现方案。常用的空间数据模型有混合数据模型、全关系型数据模型、对象-关系型数据模型和面向对象的数据模型等,它们各有优缺点。
但就气象应用而言,这几种数据模型都不太适用,因为气象数据具有典型的时态特征。为此,在MeteoGIS的开发过程中,我们研究并实现了一种专门用于气象数据建库的时空数据模型,实现了气象数据与GIS的无缝集成。
这种数据模型以关系型数据库管理系统SQL Server2000为基础,使用C#语言编写程序加以扩展,通过ADO.NET技术实现了一个.NET平台上的通用数据库访问组件。
MeteoGIS的数据库访问机制如图 2所示。
|   | |
| 图 2. MeteoGIS的数据库访问机制示意图 | |
3.3 组件结构设计
MeteoGIS由一系列封装完好的组件组成,而在逻辑上它们又可以划分为如下3组:GIS内核组件群、气象专用功能组件群和二次开发支持组件群。
GIS内核组件群实现基本的GIS功能,是整个系统的核心。如前所述,气象地理信息系统并不需要通用GIS的全部功能,而且它的部分功能又将是通用GIS所不具备的。气象专用功能组件群支持气象数据的存取和气象应用模型的集成。二次开发支持组件群不仅支持用户将MeteoGIS集成到自己的应用系统中去,同时还提供用户无限扩展该系统的接口。
3.4 功能设计按照GIS功能的常规划分方法,可把MeteoGIS的功能归纳为如下几个方面:
(1) 数据采集与输入 MeteoGIS的数据采集与输入功能主要是针对气象数据的。对标准的地理背景数据,系统提供转换接口,支持格式公开的Shapef ile等常用格式。对地面气象观测数据,支持气象部门通用的文件格式,系统提供从这些文件中提取数据自动入库的工具。对其他气象数据,根据需要作灵活处理。
(2) 数据编辑与更新 数据编辑与更新是针对时空数据库的,只要权限足够,用户可以直接修改库中数据。对原始格式数据文件,系统不提供编辑修改功能。对数据源动态更新的情况,系统可以设定数据库的自动更新规则,实现数据库的自动更新。
(3) 数据存储与管理 时空数据库统一采用Microsoft SQL Server 2000,用通用数据库访问组件加以扩展。作为基于客户机/服务器体系结构的新一代大型关系型数据库管理系统,SQL Server 2000在ADO.NET中得到了优化,其性能优于其他大型关系数据库管理系统,使它成为.NET框架下数据库应用开发的最佳选择。
(4) 空间查询与分析 空间查询与分析除了基本地理背景信息的查询分析之外,重点支持气象数据的查询检索、空间内插和专业分析模型,对气象部门应用较少的空间分析功能如路径分析、网络分析等暂作简化处理。
(5) 数据显示与输出 数据显示与输出功能是MeteoGIS的重要功能。在GIS进入气象领域之前,气象可视化软件已得到广泛应用,如国内的MICAPS和国外的METLAB等,都致力于气象信息的图形可视化。但这些软件与GIS有一个本质的区别,即它们没有一个核心空间数据库和对该数据库中的数据进行查询检索、空间索引、模型分析和可视化表达的GIS功能引擎,所以在功能上也有很大区别。
4 系统实现的关键技术 4.1 .NET平台上的组件开发技术.NET平台上的组件开发技术是MeteoGIS开发的关键技术,因为MeteoGIS的所有组件均在此平台上用C #语言开发。在C #中,有两种不同类型的自定义控件,一类为单一控件,它通常派生于UserControl或Windows标准控件;另一类为复合控件,带有一个或多个子控件。在第二类自定义控件中,我们利用基类来管理子控件并分配键盘和鼠标事件给合适的子控件来提供键盘、鼠标和绘图处理程序。MeteoGIS组件的设计使用统一建模语言 (UML) 来完成。
4.2 .NET平台上的组件复用技术在基于组件的开发中,组件复用技术是十分重要的,它不仅关系到系统的性能,而且如果处理不好极易出现难于排除的异常。在MeteoGIS的开发中,使用聚集和委托来实现组件的复用。通过使用聚集和委托,就能得到与面向对象编程中的继承和多态一样的功能。
4.3 多线程处理技术线程 (Thread) 是最小可执行代码段[10]。MeteoGIS的开发中运用了多线程处理技术,这主要是出于两方面的考虑,一是对处理时间较长的操作,如与后台数据库相连接或大量绘图时,运用多线程技术可以改善系统对用户操作的响应速度;二是目前多处理器计算机已经逐渐流行,运用多线程技术无疑能充分利用系统资源,改善系统性能。
4.4 空间索引技术在本系统的开发中,采用记录地物外接矩形的方法来提高空间操作的效率。该方法虽然没有建立真正的空间索引文件,但在空间地物检索和绘图操作时依靠空间计算可以大大提高系统的运行效率。
5 推广应用前景气象地理信息系统 (MeteoGIS) 是专门针对气象防灾减灾的实际需求而设计开发的,可用于气象防灾减灾的各个领域。
由于MeteoGIS提供了各类气象数据的连接接口,在某种程度上可以说,把某种类型的气象数据作为一个图层导入MeteoGIS系统,就可以轻而易举地建立基于对该类气象数据进行分析处理的气象业务系统。比如,利用MeteoGIS提供的数据接口将新一代天气雷达的探测资料导入MeteoGIS中加以分析运算和可视化,再结合适当的预报模型,就可以建立基于GIS的短时天气预报系统;如果从人工影响天气的角度来考虑云水资源的时空分布,就可以结合相应的分析模型来建立基于GIS的人工影响天气作业指挥系统。目前MeteoGIS已应用于“湖南省人工影响天气作业指挥系统”等系统的建设中。
6 结语本文从气象业务对GIS的实际需求出发,探讨了开发气象地理信息系统的重要意义、技术可行性以及具体的实现途径;探讨了微软.NET平台的优势以及基于这一平台开发GIS组件的基本原理、方法与技术流程;采用C #语言编程具体实现了一个面向气象应用的组件式时态GIS,并分析了其应用前景。
地理信息系统的底层开发技术十分复杂,牵涉到的技术问题很多,限于篇幅,仅对某些关键技术作了简要介绍。该系统将在今后的实际应用中不断得到检验,并逐步完善。
致谢 在MeteoGIS开发和本文写作过程中,得到中国气象局、中国气象局预测减灾司、中国气象局科技发展司、中国气象科学研究院、国家气象中心、国家卫星气象中心、南京大学城市与资源学系、湖南省气象局、安徽省气象局、青海省气象局等单位有关领导、专家的关怀、支持与热心指导,在此致以诚挚的谢意!| [1] | Patterson W. Integrating ArcView and the Spatial Analyst Extension with the PRISM Climate Expert System, ESRI 1997 International Users Conference. Environmental Systems Research Institute, San Diego, CA, 1997. | 
| [2] | Shipley S T, Graffman I A. ArcView GIS is a Weather Processing System. ESRI International User Conference, Environmental Systems Resource Institute. San Diego, California, 1998. | 
| [3] | Wel F J M van der. Introducing GIS Technology at the Royal Netherlands Meteorological Institute. ESRI International User Conference, Environmental Systems Research Institute. San Diego, California, 1997. | 
| [4] | Wilhelmi O, Boehnert J. GIS Initiative:Developing an atmospheric data model for GIS. Unidata Seminar, August 30, 2004. | 
| [5] | 李本纲, 陶澍, 林健枝, 等. 地理信息系统与主成分分析在多年气象观测数据处理中的应用. 地球科学进展, 2000, 15, (5): 509–515. | 
| [6] | 盛绍学, 马晓群. 基于GIS的安徽省重大农业气象灾害测评系统. 南京气象学院学报, 1998, 21, (4): 703–708. | 
| [7] | 钱锦霞, 张建新. 基于City Star地理信息系统的农业气候资源网格点推算. 中国农业气象, 2003, 24, (1): 47–50. | 
| [8] | 张洪亮, 邓自旺. 基于DEM的山区气温空间模拟方法. 山地学报, 2002, 20, (3): 360–364. | 
| [9] | 龚健雅, 杜道生, 李清泉, 等. 当代地理信息技术. 北京: 科学出版社, 2004: 42-53. | 
| [10] | Faison T. Component-Based Development with Visual C#. Hungry Minds, Inc, 2002. | 
| [11] | Szyperski C, Gruntz D, Murer S. Component Software:Beyond Object-Oriented Programming. Pearson Education Limited, 2003. | 
| [12] | Malveau R, Mowbray T J. Software Architect Bootcamp. Prentice Hall PTR, 2001. | 
| [13] | 方裕, 周成虎, 景贵飞, 等. 第四代GIS研究. 中国图象图形学报, 2001, 6(A), (9): 817–823. | 
| [14] | Maiani B, Still J, Kastroulis A, et al. Visual C#.NET:A Guide for VB6 Developers. Wrox Press Ltd, 2002. | 
 2005, 16 (4): 547-553
 2005, 16 (4): 547-553
			 
  
