2. 中国矿业大学(北京)地球科学与测绘工程学院,北京 100083;
3. 中国矿业大学资源与地球科学学院, 徐州 221116;
4. 中国科学院研究生院资源与环境学院, 北京 100049;
5. 陕西师范大学旅游与环境学院, 西安 710062
2. College of Geoscience and Surveying Engineering, China University of Mining & Technology, Beijing 100083;
3. School of Resources and Earth Science, China University of Mining & Technology, Xuzhou 221116;
4. College of Resources and Environment, Graduate University of Chinese Academy of Sciences, Beijing 100049;
5. College of Tourism and Environment, Shaanxi Normal University, Xi'an 710062
公共气象服务是指气象部门使用各种公共资源或公共权力,向政府决策部门、社会公众、生产部门提供气象信息和技术的过程[1]。因此,政府的气象服务是所有气象业务产品向社会提供服务的出口,是气象工作的出发点和归宿[2-3]。长期以来,国家及地区级气象局所发布的气象服务产品,其产品形式单一,且基本以图形图像和文字说明为主,没有将本部门的数据以更科学更直观的方式显示给公众及气象预报员。如中国气象局发布的风云卫星服务产品,单纯是将图形图像放到网页中,不能实现云图的放大缩小等常用的GIS浏览功能,更是没有卫星云图的定量统计和分析功能[4-5]。
WebGIS是Web技术应用于GIS开发的产物。利用Web技术在网络上发布地理信息,就能从Internet的任意一个节点浏览WebGIS站点中的空间数据、进行各种空间检索和空间分析。这就为气象数据的共享和在线浏览分析,做好公共气象服务提供了切实可行的技术[6]。因此,将WebGIS与气象服务相结合,实现卫星云图的网络发布、查询、浏览及分析,将为区域的公众及气象预报专业人员等用户提供最直接的气象信息,为区域气象部门制作气象预警预报提供更可靠的参考依据[7]。此外,由于卫星云图叠加了丰富的社会地理信息,使云图的附加价值大为增加,服务范围大为扩展,从而可以更好地服务当地公众,提供更多的专业气象服务。
经预报员使用MICAPS系统处理生成的风云卫星云图,含有丰富的气象信息,但因数据格式特殊,不能被常用的WebGIS发布平台识别,也就不能直接用于发布,将其转换为能够被识别的格式并且适合目前网络带宽下的传输和显示就成了研究重点。秦荣茂、赵苏琦和朝柯等都研究了该类云图转换为位图图像的方法,以便于在单机中查看,但是都没有结合当地地理信息以使该类云图的服务效果得到提升[8-10]。薛胜军教授曾指导其学生周先菊、戴伟、袁媛和张亮等完成了厦门市卫星云图等资料的在线发布、显示和查询,收到了很好的效果,但是没有对云图的定量分析及实现方法等做进一步的研究[11-14]。作者以ArcGIS Engine和ArcGIS Server作为二次开发工具,研究了该类卫星云图数据实现网上在线浏览和分析的关键技术并做了具体实现。编写的后台程序自动提取MICAPS下的卫星云图,实现云图向ArcGIS软件下栅格img格式的转换,并根据产品的类别自动地保存到对应目录中。然后再通过前台的网络发布平台根据产品的类型和生成时间在对应目录中自动搜索预在线浏览的云图,并以WebService的形式发布到Internet,实现云图的在线浏览查询和简单的定量统计分析。
1 云图数据解析对MICAPS系统下风云卫星数据的解析,是进行网络发布浏览的前提。本文采用的风云卫星数据,为经过前期处理附带投影和经纬度坐标的图像数据,并具有统一的格式,主要体现在文件名、文件头及数据区这三部分。其文件的文件名基本形式为yymmddhhmm.000,通过对云图数据文件名的解析,可以获取卫星云图的生成时间。
其文件头共128个字节,记录了云图数据的基本信息,包括图像生成时间、X和Y方向像元数目、投影方式(兰伯特和墨卡托)、中心及左下角经纬度坐标、图像类型(红外、水汽和可见光)、缩放系数、数据说明等信息。这些信息所占用的字节数都是固定的,可以自定义一个结构体,用于存储卫星图像的基本信息[15]。
云图文件中除了最前面的128个字节外,其余都是数据区,可理解为二维的灰度矩阵,其值为256级的灰度值,并且按逆序存储,即在云图显示时,最先显示的是最下一行,从左到右。
在解析了云图数据格式之后,作者采用C#编程的方式实现了对云图的准确判读。由于云图数据的文件头部分编码为Text格式,故对于前面128个字节,采用C#中的StreamReader(流读取器)类读取文本流。作者前期曾采用ASCII码编码的方式读取头文件信息,但是在数据说明项部分,读出的数据为乱码,经多次查验,是由于存在中文字符的问题。单个中文字符在ASCII码编码中占用两个字节,而在处理字符串时看成了一个字符。故作者后来选用了GB2312的编码方法,在此编码方式下,读取文件头部分时并不是读取128个字符,而是128减去其中文字符数。对于其数据区,采用BinaryReader(二进制读取器)类读取,根据图像X方向和Y方向的大小,定义二维数组存储灰度值。读取时,首先跳过128个字符,即文件头部分,然后采用二重循环,依次读取灰度值到二维数组中。经过上述步骤,就完成了云图数据的读取。
2 云图数据转换在将卫星云图数据读到内存中之后,为使数据能够被常用GIS软件识别以适合网络发布浏览,将云图数据转换为常用GIS软件的格式是比较容易想到和实现的方法。
2.1 云图转换预分析在GIS软件下,数据分两种结构类型,即矢量和栅格。矢量数据结构是通过记录坐标的方式尽可能地表示点、线、面(多边形)等地理实体,如ESRI公司的shp格式等。栅格数据结构是将地物表面分为均匀紧密相邻的网格阵列,如ArcGIS软件下生成的img格式等。
作者前期曾采用Shapelib库实现了云图数据向shp格式的转换,成功生成了shp格式的卫星云图。实现方法是根据云图数据在X和Y方向上像元的个数CountX和CountY,然后绘制(CountX-1)×(CountY-1) 个矩形面,并给每个矩形的属性中添加当前灰度值。由此可知,如果云图在X和Y方向上像元的个数为512×512,则生成的shp格式云图有511×511=261121个图元,即使采用压缩算法,对图元的数量也不会减少多少,因为卫星云图的相邻像元的灰度值大部分是不相同的。作者曾采用了行程编码的思想对其压缩,压缩效果也是微乎其微,最终得到的云图数据还是达到了30多MB。如此大量的图元,即使在单机ArcGIS Desktop软件中打开并进行颜色渲染,就已经相当地吃力,更不用说实现在网络上的传输和实时颜色渲染了。
因此,将云图数据转换为矢量格式的地理数据是不可取的。于是作者尝试将其转为栅格格式的地理数据。栅格数据是由具有属性信息的像元构成的空间矩阵,其可以是单波段的,也可以是多波段的,每个波段就是具有不同属性值的像元组成的一个图层。
在ArcGIS软件下,单波段栅格数据的绘制显示方法主要有三种,通过特定值绘制像元、用分等级的颜色来绘制分级后的像元和用分等级颜色绘制拉伸后各像元的值。通过特定值绘制像元的方法是为栅格的像元值建立RGB颜色对照表并与之关联,使栅格像元值与RGB颜色值对应,但是通常特定值的数目不会超过25。由于卫星云图灰度级别有256级,故此种方法不可取。采用分等级的基于一个色系的颜色来绘制像元更达不到在MICAPS软件环境下显示的效果。卫星云图在MICAPS软件环境下的渲染是调用其自身定义的调色板文件来完成的。
对于多波段栅格数据的绘制显示方法比较固定,一般是选取栅格数据的三个波段,指定为红、绿、蓝三个颜色值波段,并且三个波段的属性值介于0到255之间,通过三个波段的合成色来表示属性值。在MICAPS软件环境下,显示云图也是根据云图的灰度值获得其RGB值来渲染的,故此种方法可行,满足了生成的云图和在MICAPS软件环境下显示云图相同效果的要求。
于是作者采用ArcGIS Engine转换生成多波段的栅格img格式的卫星云图。在生成栅格img图像之前,为使该栅格云图的颜色设置跟在MICAPS软件环境打开该云图的颜色一致,故须明确定义栅格云图的颜色设置。对于各种风云卫星云图产品,其在MICAPS软件环境下对应的调色板文件在MICAPS的安装目录下的modual->awxProduct3Common->PAL文件夹内,并以pal为后缀名。其中以I开头的为红外图像的调色板,W开头的为水汽图像的调色板,V开头的为可见光图像的调色板。调色板文件为Text编码格式,其第一行为调色板说明,其余为数据区。数据区共分为四列,第一列为图像的灰度值,后面的三列从左到右分别为其在MICAPS软件下显示时的B、G和R颜色值。
2.2 云图转换生成通过以上的分析,作者设计生成的多波段栅格云图为四波段,云图中的第四个波段存储图像的灰度值,第一、二和三波段分别存储灰度值对应的R、G和B值。因为在ArcGIS软件下,显示多波段栅格数据时,系统会自动地指定其第一、二和三波段为红、绿和蓝波段,从而在显示多波段栅格云图时无需做其他设置就达到了MICAPS软件环境下显示云图的相同效果。
在ArcGIS Engine下,生成四波段栅格云图的步骤如下:
(1) 定义并计算单个栅格像元的大小。根据卫星云图的头文件信息中可以获知云图左下角和云图中心的经纬度坐标以及云图在X和Y方向上像元的数目,进而可以容易地得到云图中单个像元在X和Y方向即经度和纬度上的增量[16-17]。
(2) 设置栅格云图的起始坐标。在ArcGIS Engine下,栅格数据集的起始坐标为左下角的坐标,这和卫星云图中存储的起始坐标不谋而合,其也是从左下角坐标开始存储的。
(3) 设置坐标系统。在ArcGIS软件下,坐标系统分投影坐标系和地理坐标系。投影坐标系统是将三维地理坐标系统上的经纬网投影到二维平面地图上使用的坐标系统,其实质就是平面坐标系统,通常以长度如米为单位;地理坐标系统是确定地物在地球上位置的坐标系,是最常用的坐标系对象,它是以角度即经纬度为地图的存储单位。由于风云云图的范围比较大,因此设置栅格云图的坐标系为地理坐标系统下常用的WGS-1984系统。
(4) 创建栅格工作空间(RasterWorkspace)和栅格数据集(RasterDataset)。在ArcGIS Engine中,RasterWorkspace对象就是一个要素数据集的容器,其主要用于在该工作空间下打开、创建和设置数据集对象。在创建工作空间后,根据前面栅格数据的设置,在该空间下创建空的栅格数据集,并指定波段数为4。
(5) 根据云图在X和Y方向上像元的个数,创建PixelBlock(像素块,实际为二维灰度矩阵)类型的数组,数组的元素数为4,其主要用来临时存储四个波段的数据。
(6) 采用三重循环,依次将云图中像元的颜色R、G、B和灰度值保存到创建的PixelBlock数组中。然后将PixelBlock数组写入到栅格数据集中,并保存。至此就完成了栅格风云卫星图像的转换输出。
经过以上步骤,就生成了栅格img格式的卫星图像,而且自带颜色和投影设置。如图 1为采用此种方法调用MICAPS软件下的I-01.pal调色板生成的四波段红外图像,图 2为采用此种方法调用W-01.pal调色板生成的四波段水汽图像。
通过以上方法生成的四波段栅格卫星云图,采用WebService的形式将其发布到Internet,实现云图的在线浏览、查询和分析,将一改过去传统的单一图片发布的状况,为公众和气象预报员提供一个专业的风云卫星数据浏览、查询和分析平台,更好地做到气象为民服务。由于ArcGIS Server不仅具备发布地图服务的功能,而且还能提供灵活的编辑和强大的分析能力,用其可构建集中管理的、支持多用户的、具备高级GIS功能的企业级GIS应用和服务,这也就为云图的在线发布和分析提供了可行性[18]。
3.1 云图的发布在栅格云图发布之前,首先发布一个地图服务,即卫星云图的地理底图,以配合云图的浏览定位。在该地理底图中可添加道路、水系、建筑、商业服务站点等特征图层,并设置各个图层的显示样式和缩放比例范围以方便Web浏览用户识别地理位置,并将其保存为ArcGIS的mxd格式的地图文档。然后通过ArcGIS的ArcCatalog组件的GIS Servers将其以Map Service的形式发布,完成地理底图的发布。
此时再实现云图的发布实质就是在当前地理底图中添加要发布的栅格云图。为实现程序能自动地搜索到栅格云图,将云图产品按照产品类别的不同保存到不同的目录中,并对云图文件的文件名格式化,文件名的命名采用卫星云图的头文件中的数据说明项,即云图文件在MICAPS软件下打开后显示的内容,如“2009年12月3日5时0分FY2E红外图像”。
如此即可通过文件名的读取快速准确地检索到要查看的图像,设计程序根据选择的产品类型和生成时间来查询云图。如果存在满足条件的文件,则采用AJAX的方式,将查询到的文件名动态地加载到可供加载的图像产品名列表中。采用AJAX是因为它能实现页面的部分刷新,即在加载图像产品名时只刷新加载图像产品名列表的下拉框控件,对页面的其他部位不进行刷新,这样就使得Web程序能够更为迅捷地回应用户动作,并避免了在网络上发送没有改变过的信息。
在从栅格云图文件名中提取云图生成时间时,程序以年月日时分作为分割字符,第一个数字字符串为年,依次类推,从而得到该文件的月日时分等时间信息。根据时间差,如果查询到满足条件的文件名,则采用HttpContext. Response的方式返回查询到的文件名。因为文件名中存在中文,故在返回文件名时,设置输出流的HTTP字符集为“GB2312”,否则返回的中文部分为乱码。
根据用户选择的产品类别可定位到服务器中存储产品的目录,从选择的图像产品可定位到目录中具体的文件,然后通过加载栅格图层的形式加载栅格卫星云图到ArcGIS Server的Map控件中。在ArcGIS Server下,加载栅格图层的方法是首先根据图像产品的存储目录创建栅格工作空间IRasterWorkspace,并在该工作空间下根据栅格图像的文件名打开其栅格数据集IRasterDataset,然后从栅格数据集中创建栅格图层IRasterLayer,再将该栅格图层加载到Map控件中并置为顶层就完成了数据的加载。ArcGIS Server的Map控件,内置了对地图的浏览,通过滚动和拖动鼠标的形式即可实现云图的放大、缩小和漫游。因此,也就实现了卫星云图的查询和浏览。
3.2 云图的Web分析对于卫星云图的分析,在MICAPS软件环境下,也仅仅实现了云图的打开查看、漫游显示及动画的播放输出,只是从定性的角度为预报员制作预警预报提供辅助的决策。作者提出了采用GIS的空间分析方法来定量地对云图进行分析,并取得了部分研究成果。限于风云卫星数据仅有一个波段的信息即卫星云图的灰度值,因此对于云图的分析也就是对栅格图层中第四波段的分析。作者以红外云图和水汽图为例,下面简单介绍了对这两类云图的定量统计与分析。
对于红外云图,其主要用来反映云顶的温度,云顶温度是反映云团降水强弱的最重要的特征量。云顶温度与云图的灰度存在着一定的对应关系,温度值越低,灰度值越大,所产生的降水强度也越大[19]。当Web浏览用户在红外云图上圈定关注区域后,采用GIS的统计分析方法,计算选择区域的面积及最小包围盒的直径,从而也就可以得到关注区域内云体的面积及最小包围盒的直径。并统计选择区域内云体温度的最大值、最小值及平均值,从而可以利用这些指标结合当地经验定量地估算当地的降水量及降水强度[20]。
对于水汽图,其主要用来反映空气中的水汽含量,一般是通过多幅水汽图的连续观测,了解水汽的输送状况及运动状态,主要用于分析预报暴雨和强对流产生的可能性及发展趋势。在分析水汽云图时,当Web浏览用户在水汽云图中圈定关注区域后,也是采用GIS的统计分析方法,计算选择区的面积及最小包围盒的直径,从而也就可以得到关注区域内云块的面积及最小包围盒的直径,再统计出选择区域内总的水汽含量及单位面积水汽含量,为气象预报员分析预报强降雨提供参考依据[21]。
在用ArcGIS Server的实现中,添加放置分析功能的工具栏,并将之与Map控件关联,实现Map控件与工具栏的联动,然后在工具栏中添加自定义的量测统计工具,包括对线和面的绘制支持,以便于在云图中统计面积、计算距离和最小包围盒的直径以及计算云图的参数,从而就实现了卫星云图在Web中的简单定量的统计分析。
4 系统应用根据本文前面介绍的云图的转换、发布和分析方法,作者采用ArcGIS Engine和ArcGIS Server构建了风云卫星云图的转换、网络发布和浏览平台程序,并将该Web浏览分析平台嵌入到包头市公共气象服务系统平台中。
4.1 系统介绍编写的后台处理程序自动定时提取转换MICAPS软件下的风云卫星数据,并按云图的类型保存到不同的文件夹中,完成数据的转换。前台程序根据浏览用户查询检索卫星云图的类型和时间自动地搜索文件,如果搜索到并选择查看,程序则自动地加载云图并渲染。
系统采用的地理底图为内蒙古自治区行政区划图,并在地理底图中添加了公路、河流湖泊、铁路、绿地、乡镇、学校、商业服务站点和各企事业单位等图层,然后设置了各个图层不同的缩放显示比例尺。在添加栅格卫星云图时,设置该栅格图层的透明度为35%,以利于透过卫星云图实现地理底图中的大致目标定位。
4.2 应用实例该Web浏览分析平台嵌入到包头市公共气象服务系统后,取到了非常好的效果。经测试,该平台可以高效地运行于当前的Web环境中,其转换生成的栅格img格式的红外图像大小约为1010KB,水汽图像约为870KB,并且两类图像的加载和渲染的时间开销仅为2到3秒,因此完全能够适应当前带宽的传输及满足当前主流电脑的浏览和分析的需要。该平台嵌入到包头市公共气象服务系统后,用户可通过自定义查询的方式加载要查看的卫星图像,然后通过GIS分析模块统计分析选中区域的云层温度值或水汽含量等指标。如图 3,为作者在该平台中查询并添加了2010年1月4日6时0分FY2E红外图像,然后统计选中区域的面积和云块的平均温度值。
基于GIS的风云卫星数据Web浏览与分析平台的建立,使当地气象局在公共气象服务平台的建设方面迈进了一大步,为公众了解气象和气象预报员制作气象预警预报提供了一个气象信息辅助决策平台,使气象预报员能够做出更及时更精确的气象预警预报。本文重点研究了风云卫星数据的在线浏览的关键技术,并结合ArcGIS Engine和ArcGIS Server,建立了风云卫星数据后台处理程序和前台发布平台,实现了MICAPS软件下不同风云卫星数据的Web浏览与简单的定量分析。但该平台还不够完善,如何做到云图中云型和云系的自动识别和引入更多的云图分析模型,实现云图的动画分析和路径追踪,同时通过对多通道卫星资料的处理形成对公共气象服务更具有实际意义的降水定量产品,以与多种地理信息数据集成分析,提供降水对该区域植被、人口、河流等的影响程度,将对气象预警预报具有更重要的意义,也是本文进一步的研究方向[22-25]。
[1] |
黎健. 公共气象服务的认识和思考[J]. 浙江气象, 2009, 30(4): 7-13. |
[2] |
吴焕萍, 罗兵, 王维国, 等. GIS技术在决策气象服务系统建设中的应用[J]. 应用气象学报, 2008, 19(3): 380-384. DOI:10.11898/1001-7313.20080316 |
[3] |
矫梅燕. 探索公共气象服务发展的体制机制创新[J]. 浙江气象, 2009, 30(4): 3-6. |
[4] |
毛卫星, 王秀荣, 刘海波. 全国气象业务服务信息系统中图形产品的研制开发[J]. 新疆气象, 2005(5): 1-3. |
[5] |
朱健, 周亦平, 李建, 等. 基于B/S架构的公共气象服务历史资料共享检索系统研发[J]. 浙江气象, 2009, 30(z1): 79-83. DOI:10.3969/j.issn.1004-5953.2009.z1.019 |
[6] |
刘旭林, 赵文芳, 刘国宏. 基于WebGIS的气象信息显示和查询系统[J]. 应用气象学报, 2008, 19(1): 116-122. DOI:10.11898/1001-7313.20080119 |
[7] |
吴焕萍. GIS技术在气象领域中的应用[J]. 气象, 2010, 36(3): 90-100. DOI:10.7519/j.issn.1000-0526.2010.03.013 |
[8] |
秦荣茂, 杨华. MICAPS系统中云图数据转换为位图的实现[J]. 电脑知识与技术, 2007(6): 1603. |
[9] |
赵苏琦, 赵芳文, 曹士民. MICAPS卫星云图的二次开发[J]. 气象, 2000, 26(12): 36-37. DOI:10.3969/j.issn.1000-0526.2000.12.009 |
[10] |
朝柯, 马晓刚. MICAPS云图格式转换及应用[J]. 辽宁气象, 2000(4): 29. |
[11] |
周先菊. 基于. NET的气象业务WebGIS的研究与应用[D]. 武汉: 武汉理工大学, 2009.
|
[12] |
袁媛. 基于WebGIS的台风信息系统研究[D]. 武汉: 武汉理工大学, 2009.
|
[13] |
戴伟. 基于ArcGIS Server平台的WebGIS台风预报系统应用研究[D]. 武汉: 武汉理工大学, 2009.
|
[14] |
张亮. 基于地理空间数据库的WebGIS系统应用研究[D]. 武汉: 武汉理工大学, 2009.
|
[15] |
中国气象局. MICAPS3. 0用户使用手册[C]. 中国气象局, 2008, 1-287.
|
[16] |
许健民. FY-2气象卫星的数据处理[J]. 上海航天, 2005, 22(z1): 82-86. DOI:10.3969/j.issn.1006-1630.2005.z1.017 |
[17] |
王华荣, 朱小祥, 谢向明. 基于FY-2C红外资料进行夜间云检测的方法研究[J]. 气象, 2010, 36(6): 105-111. DOI:10.7519/j.issn.1000-0526.2010.06.017 |
[18] |
刘光, 唐大仕. WebGIS开发-ArcGIS Server与.NET[M]. 北京: 清华大学出版社, 2009: 26-37.
|
[19] |
祝建, 陆英壮. 卫星云图的识别与降水的预报[J]. 黑龙江气象, 2004(3): 8-9. |
[20] |
刘健. 中国区域云特性分析及在FY-2云检测中的应用[J]. 应用气象学报, 2009, 20(6): 673-681. DOI:10.11898/1001-7313.20090604 |
[21] |
傅昺珊. 风云2号卫星云图在短时强对流天气预报中的应用[J]. 气象科技, 2004, 32(5): 363-366. |
[22] |
郑新江, 王峰, 张凤英, 等. 华北强天气的水汽图象特征研究[J]. 应用气象学报, 1995, 6(2): 167-174. |
[23] |
许健民, 方宗义. 《卫星水汽图像和位势涡度场在天气分析和预报中的应用》导读[J]. 气象, 2008, 34(5): 3-8. DOI:10.7519/j.issn.1000-0526.2008.05.001 |
[24] |
周毓荃, 陈英英, 李娟, 等. 用FY-2C/D卫星等综合观测资料反演云物理特性产品及检验[J]. 气象, 2008, 34(12): 27-35. DOI:10.7519/j.issn.1000-0526.2008.12.004 |
[25] |
何立, 覃丹宇, 黄小燕, 等. FY2卫星云图分析系统在热带气旋北冕过程中的应用[J]. 气象, 2010, 36(9): 21-28. DOI:10.7519/j.issn.1000-0526.2010.09.004 |