[百度MapAPI在气象自动站监测的应用] 广西海洋气象信息网
摘 要:为了良好地提供气象自动站空间定位分布和气象资料实时监测服务,根据气象信息的特点,结合气象信息监测的要求,利用百度Map API技术,借助于visual studio开发平台和JavaScript技术,提出了基于公共地图应用接口实现气象自动站信息监测功能的构想,并且对其中的一些关键技术进行了介绍和实现。
关键词:计算机应用技术 百度 地图 API 气象 asp.net 数据库
中图分类号:TP3 文献标识码:A 文章编号:1672-3791(2012)05(c)-0009-02
近几年,随着信息技术的发展,地理信息的产业化、社会化拓展了地理信息服务在不同行业的应用,推动了全球化地理信息应用的发展。社会对地理信息服务的新需求也不断推动网络地图服务模式的发展,地理信息服务已从早期以地图为载体的信息传递方式发展到建立在计算机技术、网络技术、空间技术、通讯技术以及地理信息技术等基础上的现代地理信息服务模式。然而,传统GIS系统建设周期较长,过程复杂,建设成本和维护成本较高,并不适合中小信息化项目的建设开发。目前,许多网络服务商提供了免费的公共地图API服务。此服务能有效地降低了运营成本和周期,降低维护难度,使得开发人员能将工作重点置于数据服务和资源调度上,减少了传统的底层数据的大量维护工作。目前,已经有越来越多的网站和网络应用程序利用地图服务及其应用程序接口(API),将扩展的地图服务整合到自身的使用之中。
目前,青岛市气象局已在青岛市布设了多个气象地面自动站。这些地面自动气象站包括四要素、六要素和七要素自动站,自动气象站的空间分布密度非常大,在软件开发时使用以往的标量地图标注将会出现站点重叠现象,所以必须引入可以缩放且能分级显示的系统。青岛市气象局自主组织开发了一套基于Web的自动站监测软件,其中一个模块采用了百度地图API技术,具有在地图上实时显示以经纬度为坐标的站点分布,并能实时展现自动站当前状态信息;后续开发中,可以叠加等值线多普勒回波图的功能,能够根据气温降水风等要素的变化和通讯状态显示不同的站点状态警示,可检索单个站点的要素变化曲线或直方图。本文重点介绍如何通过百度地图API接口,实现青岛市气象自动站点的空间分布矢量图示功能,实现各站点实时气象要素的即时显示功能。
1 百度地图API背景
百度地图API是一套公共应用程序接口,该API提供了大量的实用工具用以处理地图,并通过各种服务向地图添加内容,从而使开发人员能够在web应用程序上创建功能全面的地图应用程序。百度地图API为开发者提供和丰富的函数、控件、事件和封装的类,提供了很多的专题图服务接口供用户使用。它尽量将复杂的底层逻辑进行隐藏和封装,简化了开发流程,使得开发者只需面对接口进行二次开发和功能扩展即可。
百度地图API提供了基于移动设备和浏览器的两套API。本次开发采用了面向浏览器的API接口,并开发采用客户端、应用服务器和数据服务器三层结构进行设计。其中客户端主要实现地图加载、地图浏览和查询功能,客户端的设计重点是地图浏览和查询界面,以及把用户访问和查询请求发送给服务器。应用服务器则负责处理用户的访问和查询请求,数据服务器用于存取各类空间数据和属性信息,采用Oracle数据库存取数据信息,并在接到查询指令后执行相应的操作。
2 需求与功能设计
本次开发采用的百度地图API是由JavaScript编写,而开发语言用的是微软公司的Visual Studio 2008平台下的asp.net。数据库则采用了oracle数据库。
本次开发的重点是借助百度地图API接口,实现青岛市气象自动站点的空间分布矢量图示功能,实现各站点实时气象要素的即时显示功能。
根据需求本模块实现的详细功能主要是:实现基于经纬度的坐标定位;实现各自动站点地名标注;实现各站实时数据轮显;显示当前站点的基本信息。
3 数据库设计
根据需求,数据库需要2张基本表:自动站信息表aws_base_info和自动站数据表data。
aws_base_info表中主要字段:
STN VARCHAR2(10) //站号 SNAME VARCHAR2(100) //站名
LAT NUMBER //站点纬度 LON_ NUMBER //站点经度HEIGHT NUMBER //站点高度
Data表主要存放站号、站点名称、气温、气压、风速、风向、相对湿度等气象要素。各数据表之间通过站号和站名进行关联。
4 前台显示模块
前台显示主要实现两部分功能:一是对符合条件的数据自数据表中进行检索查询;二是实现后台数据与前台页面程序交互,并借助百度地图API实现轮询显示。
(1)定义一个结构体,抽象为自动站的基本信息和数据信息:
Public struct AUTOSTATION{
public string staName;//站名 public string staLang;//经度
public string staLat;//维度 public float HRain;//降雨量
public float temperature;//气温 public float staPres;//气压
public float Wind;//风速 public string infowindows;//信息窗口内容
public DateTime fdate;//时间 }
(2)其次定义结构体数组,并在数据库取符合条件的实时数据后对数组进行赋值:
AUTOSTATION[] auto=new AUTOSTATION[data.Rows.Count];//站点数
for ( int i=0;i
