发新话题
打印

江西省流域降水资料查询系统简介

江西省流域降水资料查询系统简介

江西省流域降水资料查询系统简介

王 欢 , 袁正国 , 刘晓晖

(江西省环境预报中心,江西 南昌 330046)

 
  摘 要:简要地介绍了江西省流域降水资料查询系统。该系统采用目前较为流行的ASP等动态网页技术,使用户通过Internet或Intranet访问流域网站,动态地查询江西省各流域内测站降水资料。
  关键词:流域 降水 查询 系统
 
  近年来,Internet的广泛普及和应用,为信息共享创造了良好的环境,信息的传播速度较以往有了千万倍的提高,同时也为气象业务和服务的发展提供了一种全新的技术方法。为了实现资源共享,减少重复劳动,我们应用ASP等动态网页技术,对流域降水资料的查询进行了开发研究。
1 ASP的主要特点
  ASP(Active Serve Pages)是一种未经编译的开放的应用软件,它使用户能够利用HTML和ActiveX强有力的功能创建功能强大的、与平台无关的Web应用系统。其主要特点如下:
  (1) 使用VBScript、JScript等简单易懂的脚本语言,结合HTML代码,即可快速地编制形成网站的应用程序。
  (2) 无须编译,容易编写,可在服务器端直接执行。
  (3) 使用普通的文本编辑器,如Windows的记事本即可进行编辑设计。
  (4) 与浏览器无关。用户端只要使用可执行HTML码的浏览器,即可浏览ASP所设计的网页内容。ASP所使用的脚本语言VBScript和JScript均在Web服务器端执行,用户端的浏览器不需要执行这些脚本语言。
  (5) ASP能与任何ActiveXScript语言相容。除了可使用VBScript或JScript语言设计外,通过plug-in的方式,还可使用由第三方所提供的其他脚本语言,如REXX、Perl、Tcl等。
  (6) ASP的源程序不会被传输到客户浏览器,因而可以避免所写的源程序被他人剽窃,从而提高了程序的安全性。
  (7) 可使用服务器端的脚本来产生客户端的脚本。
  (8) ActiveX Server Components(ActiveX服务器控件)具有无限可扩充性。可以使用Visual Basic、Java、Visual C++、Cobol等编程语言来编写你所需要的ActiveX Server Component。
2 系统设计思路和流程图
  我们在1台惠普服务器上安装了Windows 2000操作系统及其IIS4.0作为Web服务器,同时安装了MS-SqlServer 2000数据库软件,将其作为数据服务器(理论上应将Web服务器和数据服务器分别放在2台计算机上,考虑到流域降水数据库较小,在数据访问量不大的情况下将它们安装在一起,以节省硬件资源)。本系统采用ASP等动态网页技术,通过Microsoft的ODBC访问数据库(图1)。

3 查询系统软件介绍
3.1 数据库结构
  在流域雨量数据库中,我们以多站单要素为基本结构,共建立了16个表,包括08时~08时、20时~08时、08时~20时、20时~20时雨量4个要素和日、旬、月、年4种资料类型。其中表的数据结构为:
  字段名称  数据类型
   日期    文本
   站名1   数字
   ……    ……
   站名83   数字
3.2 数据库查询
  首先新建1个ODBC数据源,打开“控制面板”,双击“32位ODBC”图标,在“用户DSN”选项卡中,单击“增加”钮,弹出“建立新的数据源”对话框,然后单击“MicrosoftAccessDriver(*.mdb)”,按“确定”,键入“DBVALLEY”到数据库名框,最后在ASP程序中加入以下代码即可访问流域雨量数据库:
  <%
  Stanum=″58606″ //南昌站
  Elenam=″R0808″ //08-08的雨量
  Dates=″20001231″ //2000年12月31日
  set myRecordset=Server.CreateObject(″ADODB.RecordSet″) //创建1个数据对象< /FONT>
  SQL=″SELECTZ″& Stanum&″FROM Year″&Elenam&″WHEREDATES=″″&Dates&″″< /FONT>
  myRecordset.OpenSQL,″DSN=DBVALLEY″ //打开数据集
  ……
  利用打开的数据集对象myRecordset访问数据表。例如:用myRecordset(″Z″&Stanum)可读取南昌站2000年12月31日08时~08时雨量。
  ……
  myRecordset.close  //打开数据集
  setmyRecordset=nothing  //释放数据对象
  %>
3.3 查询系统功能
  按照江西的水系和地理特征把全省分为8大流域:鄱阳湖和赣江下游、修河和辽河、饶河、信江、抚河、锦江和袁河、赣江中游、赣江上游。现以鄱阳湖和赣江下游流域为例来介绍本系统所具有的5项查询功能。
3.3.1 查询降水概况
  可列出各流域降水的主要气候特点和降水特征量。
3.3.2 编制雨量表格
  以表格图的形式列出各流域日、旬、月、年雨量,并在表格中自动产生单站和流域的极大、极小、平均值。
3.3.3 制作雨量分布图
  可制作各流域日、旬、月、年雨量分布图,并在图注中列出流域各站的雨量和流域的极大、极小、平均值。雨量分布图制作利用了HTML语言中的图层(Style)叠加原理,将雨量数据与底图数据合成1张分布图。其实现代码如下:
  <div id=″Lydt″ style=″position:absolute; left:200px;top:10px; z-index:1″><imgsrc=″Valley.Files/<%= Lynam%>ly.jpg″>
  <font color=White><b>< /FONT>
  <%for i=1 to ZS%>< /FONT>
  <divid=″L<%=i-1%>″ style=″position:absolute; left:<%=Lys(i-1,2)%>;top:<%=Lys(i-1,3)%>″alt=″sos″><%=Lys(i-1,4)%></div>
  <%next%>
  </b></font>
  注:数组项Lys(i-1,2)、Lys(i-1,3)分别表示各站雨量数据相对于底图左、上位置(单位:像素点);Lys(i-1,4)是各站雨量数据。
3.3.4 过程雨量排序
  统计出某流域内任意站每年在某一固定时段内累积雨量,并按累积雨量排序,以表格图的形式列出前10位统计值。其实现代码如下:
  <%
  ′计算过程雨量
  if sm<=em then< /FONT>
  dy=0
  else
  dy=1  ′跨年度
  end if
  k=0
  for i=0 to UBound(StanamS)< /FONT>
  j=cint(StanamS(i))
  for y=sy to ey< /FONT>
  Lyr(k,0)=Lys(j,0)
  Lyr(k,1)=Lys(j,1)
  Lyr(k,2)=cStr(y)
  SDate=cStr(y)&ToDates(sm)&ToDates(sd)
  EDate=cStr(y+dy)&ToDates(em)&ToDates(ed)
  Lyr(k,3)=FormatNumber(SumLyr(SDate,EDate,Lys(j,1),Elenam),1,True)
  k=k+1
  next
  next
  %>
3.3.5 滑动雨量排序
  计算出某流域内任意站在某一固定时段内界于某值域之间的滑动雨量统计值,并按统计值排序,以表格图的形式列出前10位统计值。其实现代码如下:
  <%
  ′计算滑动累积雨量
  SDates=ToDates(sy)&ToDates(sm)&ToDates(sd)
  EDates=ToDates(ey)&ToDates(em)&ToDates(ed)
  Dates=SDates
  Z=0
  do while Dates<=EDates< /FONT>
  SDate=Dates
  EDate=GetDates(Dates,DayL-1)
  for i=0 to UBound(StanamS)< /FONT>
  j=cint(StanamS(i))
  Z=Z+1
  ReDimPreserveLyr(4,Z) ′站名,站号,起始日期,累积雨量
  Lyr(0,Z-1)=Lys(0,j)
  Lyr(1,Z-1)=Lys(1,j)
  Lyr(2,Z-1)=Dates
  V1=SumLyr(SDate,EDate,Lys(1,j),Elenam)
  Lyr(3,Z-1)=FormatNumber(V1,1,True)
  if(V1<Above) or (V1>Below) then
  Z=Z-1
  end if
  next
  Dates=GetDates(Dates,1)
  loop
  %>
4 结语
  由于我省流域预报工作才刚刚开展,本查询系统只是提供了一些基本的雨量查询和统计查询功能,还不够完善,有待进一步改进。

参考文献

1 汪晓平.ASP网络开发技术[M].北京:人民邮电出版社,2000.
第一作者简介:王 欢(1972-),男,工程师,主要从事天气预报研究.

TOP

发新话题