应用气象学报  2008, 19 (1): 116-122   PDF    
基于WebGIS的气象信息显示和查询系统
刘旭林, 赵文芳, 刘国宏     
北京市气象信息中心, 北京 100089
摘要: 针对北京市气象局气象观测数据Web显示系统功能较弱这一状况, 采用开源性WebGIS软件MapServer和免费的PostgreSQL数据库软件, 结合PHP, Java applet技术开发了基于WebGIS的气象信息发布系统。该系统以直观形式将实时数据与地理信息结合在一起, 实现了数据的动态查询和统计查询, 尤其是实现了风向杆和等值线以及等值面的叠加。该系统为预报工作提供了及时、有效、科学的辅助决策支持。
关键词: WebGIS    气象数据    MapServer    
Meteorological Information Display and Query System Based on WebGIS
Liu Xulin, Zhao Wenfang, Liu Guohong     
Beijing Meteorological Information Center, Beijing 100089
Abstract: With the rapid development of detection technique in meteorology, more and more real-time detection data are obtained in Beijing Municipal Meteorological Bureau, but the integrated display system for all kinds of detection data is relatively left behind. Considering the situation, a meteorological information display and query system is developed, free software Mapserver and PostgreSQL are used in the system. Mapserver is an open source development platform which multi-format geographic data are supported on Internet. MapServer is not a full-featured WebGIS system. Instead, MapServer is good at rendering geographic data like maps, images, and vector data on the web. Beyond browsing GIS data, MapServer allows you to create "geographic image maps" that are, maps that can direct users to the content. Many kinds of geographic format data are supported, interface for second development in many language is provided, and it can be used in many operation systems. MapFile is a kind of file format, in which the color and style of map elements are defined. Map elements are managed and organized by MapFile in Mapserver. What users need to do is just to setup up Mapserver and configure Web server correctly and create their own MapFile, then their WebGIS system is built successfully. PostgreSQL is also an open source Database software. Usually, PostgreSQL is used to manage their data, such as GIS database. It is very easy to build a WebGIS system by using Mapserver and PostgreSQL. In Beijing Municipal Meteorological Bureau, Linux system is chosen as WebGIS operation system. First, Mapserver and PostgreSQL need to be installed under Linux system. In addition, some configurations need be done to make sure they can work together. Second, detection data database has to be built. Database is used to store meteorological observation data and at the same time makes query more efficient. The third step is to handle station data which is very important. Station data are converted into geographic format data, which are points displayed on maps. Last is to create MapFile according to the file format of MapFile. In the system, real-time data including temperature, precipitation, humidity and other observation data are showed on maps directly, and the dynamic search and query for data are realized. For example, different time is input by users, different observation data of different time are displayed on maps. Especially the temperature and precipitation contours can also be displayed in the system. In addition, wind vector is displayed on map as map symbol which is created by wind observation data. In conclusion, multi-data integrated display is realized in the system. Multi-data information can be known for forecasters directly from it, with which immediate, efficient and scientific assistant decision support are supplied.
Key words: WebGIS     meteorological data     MapServer    
引言

WebGIS是Web (World Wide Web) 技术应用于GIS (Geog raphic Information System) 开发的产物[1]。利用Web技术在网络上发布地理信息, 就能从Internet的任意一个节点浏览WebGIS站点中的空间数据、制作专题图、进行各种空间检索和空间分析, 这就为地理信息的开放和共享提供了切实可行的技术。WebGIS有利于信息共享, 并易于实现数据分布式管理[2]

随着2008年北京奥运会的不断临近, 北京市气象局加快了业务现代化建设的步伐, 对自动站及其他探测设备的布局和观测时次进行了密集, 然而相应的数据Web显示系统相对滞后。针对这一状况, 开发了LDAD (本地探测资料综合显示系统) 系统, 该系统利用MapServer构建气象信息WebGIS平台, 将实时数据与地理信息结合在一起, 采用PHP和Mapscript结合的编程方式, 实现了实时气象数据的发布和综合查询等功能[3]

1 利用MapServer构建气象信息WebGIS平台的开发技术

MapServer是由美国明尼苏达大学 (University of Minnesota) 开发的开源WebGIS软件, 采用CGI技术, 在服务器端通过CGI应用程序连接Web Server和GIS空间数据库, 客户端仅须使用浏览器就可以对空间数据进行查询分析[4-6]。它支持多种平台和多种数据库[7]; 提供MapScript接口, 可通过PHP, Perl, Python以及Java进行二次开发。

本地探测资料综合显示系统使用PHP, Java Applet技术对MapServer进行二次开发, 通过调用MapScript提供的API来实现对地图进行操作和查询的基本功能; 将气象数据看作为地理空间数据的属性数据, 动态修改站点数据的DBF文件; 并配置MapFile文件; 向用户提供气象信息的空间、属性双向可视化查询。

1.1 MapFile的配置

MapFile[8]是以“.map”为扩展名的文件, 定义了地图要素之间的关系、绘制模式和地图数据存放的路径。MapServer通过读取MapFile文件, 获取地理数据的路径和定义的绘制模式来绘制和显示地图, 如果MapFile记录的信息有误, MapServer将无法正常工作。MapFile的语法很简单, 关键字包括对象名、对象属性 (keyword)、对象结束标记“END”。它将各种地图要素, 如Lengend (图例), Scalebar (比例尺), Layer (图层), Projecton (投影), Lable Object (标注对象) 等组织成具有层次关系的对象系统[9]

该系统中的MapFile定义了以下几个图层:城区、郊区、区县界、水库、政府所在地、观测站点、降水、风向风速、相对湿度、温度、气压。观测要素是作为站点的属性来标注的, 通过将每个要素图层中的LABELITEM定义为站点shape文件的dbf属性表中相对应的字段来实现。例如, 在站点属性表dbf中, 字段“temp”表示的是温度, 那么在MapFile中温度图层, 将LABELITEM定义为“temp”。

1.2 风向杆的实现

将风向杆[10]作为一种字体来标注, 风速决定字体大小, 风向决定方向。首先将风向杆字体文件ESRIWeather.ttf添加到MapServer指定的字体文件路径中, 然后修改字体配置文件fonts.txt, 添加一行“weather ESRIWeather.ttf”, 并在MapFile中风向风速图层里添加LABELANGLEITEM表示标注角度, 在CLASS里添加TEXT说明是字体标注[11]。如下所示:

………..

LABELANGLEITEM fxjd

CLASSITEM″CLASS″

CLASS

  EXPRESS ION″aws″

  TEXT ([fxzj])

………

接下来, 将风速换算成风向杆字体大小的等级, 再加上字体的起始ASCII值 (&#227), 便得到风速所对应的风向杆字体的ASCⅡ码值。最后将ASCⅡ码值赋给dbf表中的字段fxzj。

1.3 等值线和等值面的实现

等值线[12]和等值面由后台程序处理成Shapefile格式和raster格式, 并动态生成配置文件MapFile, 然后发送到页面。MapServer会根据MapFile来动态加载等值线和等值面文件, 并显示。

2 系统结构和主要功能 2.1 系统结构

本地探测资料综合显示系统采用三层式体系结构 (图 1):第一层为信息层, 包括气象数据和空间信息, 分别存储于PostgreSQL数据库和shape文件; 第二层为逻辑层 (即中间层), 主要包括CGI应用程序和MapScript模块, 处理客户提出的请求, 在本地执行所有的地理空间位置信息检索和对应的气象数据提取工作, 将满足搜索条件的数据在服务器端缓冲区存储, 然后将整个缓冲区的数据发往客户端应用程序; 第三层为应用层, 提供对雨量、温度、气压、湿度等要素的统计、查询等功能。

图 1. 系统体系结构 Fig 1. System structure

2.2 系统功能

本地探测资料综合显示系统以1:10万的北京气象站点分布图为基本背景地图 (包括行政区划、河流、水库、政府标注等要素), 将气象要素 (温度、湿度、降水、气压、风向风速等) 和等值线作为专题图层来显示。输入相应的网址就可以直接从Internet上访问该系统。实现的功能主要包括图形操作、信息查询、统计查询和等值线、等值面的动态叠加。该系统提供了Java模式和HTML模式的发布。在Java模式下, 可以进行任意比例尺的缩放和多个站点的信息查询, 而在HTML模式下只能进行固定比例尺的缩放和单个站点的信息查询。

2.2.1 图形操作

图形操作功能包括图形放大、缩小、漫游、复位等, 系统还可以动态选择图层。图 2中的图层 (显示选项里) 列出了地图的所有图层, 小方框勾上的图层表示是地图中可见的图层。用户可以自己选择要显示的图层, 地图会动态刷新。

图 2. 气象显示和查询系统的首页 Fig 2. The homepage of meteorological display and query system

2.2.2 气象信息显示

主要包括在地图上显示站点的位置和气象要素的观测值, 以及温度、降水量等值线、等值面的叠加。

图 2显示的是北京自动气象站的基本气象要素信息 (温度、湿度、降水、气压、风向风速等) 和地理信息 (行政区划、水库、河系、道路、等高线、站点等); 数据是实时观测的整点数据和分钟数据。默认显示当前时次的数据, 用户可以选择时间 (显示选项中) 查看不同时期数据。

图 3为逐小时温度等值线、等值面在地图上的叠加。

图 3. 自动气象站温度等值线页面 Fig 3. Temperature contour web page of automatic weather station

2.2.3 气象信息查询

查询的内容主要包括观测的气象要素 (温度、湿度、降水、气压、风向风速) 以及台站的相关信息如经纬度、海拔高度、台站号; 降水量观测站的降水量统计信息 (用户可以根据自己的需求选择时间段和查询条件), 花粉、负离子等特种观测数据 (表 1是Java模式下站点信息查询结果)。

表 1 Java模式下查询结果 (多个记录集) Table 1 Query results on Java mode (multi-records)

2.2.4 信息统计

统计信息查询主要包括最高温度、最低温度、平均温度、极端气温变化等信息的统计结果查询。提供固定时次 (白天、夜间、全天) 和任意时次的查询。图 4是统计信息查询的主页面。选择时间后, 地图上的最高温度、最低温度、平均温度等会动态变化。

图 4. 自动气象站统计分析页面 Fig 4. Statistics analysis of automation weather station Web page

3 台站地理数据的管理

Shapefile[13]是ESRI提供的一种矢量数据格式, 一个Shapefile由一组文件组成, 其中必要的基本文件包括坐标文件 (.shp)、索引文件 (.shx) 和属性文件 (.dbf)。坐标文件 (.shp) 用于记录空间坐标信息, 索引文件 (.shx)[14]主要包含坐标文件的索引信息, 文件中每个记录包含对应的坐标文件记录距离坐标文件的头文件的偏移量。属性文件 (.dbf) 用于记录属性信息, 它是一个标准的DBF文件[15]

该系统根据观测站点的经纬度生成一系列的坐标点, 并存储为Shapefile文件格式, 提供给MapServer软件, 从而实现观测站点在地图上的显示。观测站点的要素观测值 (温度、降雨、风速风向等) 记录在属性文件DBF里。气象信息的查询和显示就是通过更新属性文件DBF里面的观测值来实现的。

3.1 站点Shapefile的属性文件结构

站点信息表主要是存储站点的基本信息, 例如经纬度, 海拔高度, 站点类别, 站点ID号 (与属性文件里面的id相对应) 等相关信息, 具体结构见表 2

表 2 站点信息表 Table 2 Station information

stnn记录的是站点的站号, sname记录站点的名称, lat, lon记录站点的纬、经度, stntype记录站点的类型 (自动站、雨量站等), id记录站点的编号, 从1开始计数。ztime记录观测时间, temp, humid和press记录站点的温度、湿度、气压, spd和dir记录风速和风向, pre记录降水。

观测站点Shapefile的属性文件DBF结构见表 3

表 3 站点属性数据表 Table 3 Station attribute

id记录站点的编号, 从1开始计数。stnn记录的是站点的站号, sname记录站点的名称, lat, lon记录站点的纬、经度, class记录站点的类型 (自动站、雨量站等), temp, humid, press记录站点的温度、湿度、气压, spd和dir记录风速和风向, pre记录降水, fxjd用来记录风向杆字体的ASCII码值, 它是由风向和风速的值计算出来的。

3.2 属性文件更新流程

表 2中根据观测时间取出满足条件的记录集, 写入缓冲区, 然后根据字段spd和dir的值计算出风向杆字体的ASCII码值存入缓冲区, 再将缓冲区的内容写到DBF文件中。具体流程如图 5所示。

图 5. 属性文件更新流程图 Fig 5. Flow chart of update attribute file

4 结论

该系统投入业务化运行后, 给预报员和其他气象工作人员提供了非常直观的浏览数据方式, 大大提高了工作效率。尤其是实时数据等值线等值面图, 对预报员作决策提供了很好的辅助, 统计数据的等值线等值面图也给科研人员研究天气提供了有利依据。另外, 生成等值线和等值面, 对原始观测数据也是一个有力的检验。如果原始数据有误, 生成的等值线的值的级别会异常得多, 预报员可以很直观地发现, 并找出错误的站点数据, 从而进行一些数据修正。在以后的工作中, 该系统有待进一步的完善, 以便更好地为预报人员服务。

参考文献
[1] 刘光媛, 聂庆华, 赵明. 基于AcrIMS开发WebGIS的农业环境信息系统研究. 地理空间信息, 2007, 5, (1): 40–42.
[2] 叶青, 陈冰廉. WebGIS技术及其在气象领域的应用. 广东气象, 2004, 25, (3): 40–43.
[3] 庄立伟, 刘庚山, 王石立, 等. 基于WEBGIS的农业气象信息共享与发布技术应用研究. 应用气象学报, 2004, 15, (6): 745–753.
[4] Maged N, Kamel Boulos, Honda K, WebGIS in practice IV:Publishing your health maps and connecting to remote WMS soureces using the Open Source UMN MapServer and DM Solution MapLab. International Journal of Health Geographics, 2006, 5: 6. DOI:10.1186/1476-072X-5-6
[5] Mitchell T.Web Mapping Illustrated (Using Open Source GIS Toolkits).Oreilly; 1st edition (June 2005). http://www.oreilly.com/catalog/webmapping/chapter/ch03.pdf.
[6] Raghavan V, Masumoto S, Santitamnont Petal, Development of training materail and internationalization of MapServer for promoting FOSS4G. Geoinformatics, 2004, 15, (2).
[7] http://mapserver.gis.umn.edu/doc.html, 2005-10-25
[8] 宋现峰, 刘军志, 吴建国, 等. 开源代码技术的FLASH地图实现方法. 地球信息科学, 2006, 8, (4): 101–105.
[9] http://mapserver.gis.umn.edu/doc/perlmapscript-reference.html, 2005-10-10.
[10] Song Guiting, Hou Yijun, Qi Peng, Wind vector retrieval using dual polarization imagery of ASAR. Progress in Nature Science, 2006, 16, (11): 1183–1187. DOI:10.1080/10020070612330127
[11] http://nautilus.baruch.sc.edu/bb/viewtopic.php?t=169&start=0&postdays=0&postorder=asc&highlight,, 2005-10-22.
[12] 陈欢欢, 李星, 丁文秀. Surfer 8.0等值线绘制中的十二种插值方法. 工程地球物理学报, 2007, 4, (1): 52–57.
[13] 张丽莉, 吴健生, 王家林. 地学数据文件向Shapefile文件的转换. 物探化探计算技术, 2004, 26, (1): 78–84.
[14] ESRI. ESRI Shapefile Technical Description. An ESRI White Paper. 1998.
[15] 韩鹏, 徐占华, 褚海峰, 等. 地理信息系统开发———ArcObjects方法. 武汉: 武汉大学出版社, 2005: 4-6.