- 积分
- 206
- 贡献
-
- 精华
- 在线时间
- 小时
- 注册时间
- 2016-11-25
- 最后登录
- 1970-1-1
|
1金钱
1
现有1979年6月的气象台753站资料,想把站点插值到格点,画1979年6月1日降水图,站点数据按经纬度输出画的降水量分布图没有问题,但是最终插值后画的等值线图却不对,不知道是哪里出了问题,请问有谁知道吗??感激不尽
以下是我的txt以及所用到的程序:
我的txt格式如下:分别是站点号,纬度,经度,年,月,日,降水量0.1mm
- 54423 40.59 117.57 1979 6 13 0.4
- 54423 40.59 117.57 1979 6 14 16.0
- 54423 40.59 117.57 1979 6 15 0.1
- 54423 40.59 117.57 1979 6 16 0.4
- 54423 40.59 117.57 1979 6 17 0.0
- 54423 40.59 117.57 1979 6 18 0.0
- 54423 40.59 117.57 1979 6 19 8.9
- 54423 40.59 117.57 1979 6 20 1.0
- 54423 40.59 117.57 1979 6 21 99999.0
- 54423 40.59 117.57 1979 6 22 0.0
- 54423 40.59 117.57 1979 6 23 99999.0
- 54423 40.59 117.57 1979 6 24 36.3
- 54423 40.59 117.57 1979 6 25 21.7
- 54423 40.59 117.57 1979 6 26 99999.0
- 54423 40.59 117.57 1979 6 27 0.0
- 54423 40.59 117.57 1979 6 28 0.0
- 54423 40.59 117.57 1979 6 29 3.1
- 54423 40.59 117.57 1979 6 30 4.5
- 54429 40.12 117.57 1979 6 1 0.0
- 54429 40.12 117.57 1979 6 2 4.5
- 54429 40.12 117.57 1979 6 3 99999.0
- 54429 40.12 117.57 1979 6 4 0.0
- 54429 40.12 117.57 1979 6 5 60.5
- 54429 40.12 117.57 1979 6 6 7.5
- 54429 40.12 117.57 1979 6 7 11.7
复制代码
2、 在 fortran 中读入这些资料并按照 GrADS 的规定将数据进行输出
- Program sta2grd
- Implicit none
- !这里是程序的变量声明
- Character*8 stid
- Real lon,lat,year,month,day,rain,tim
- integer nlev,flag
- !变量声明结束
- !程序开始
- tim=0.0
- nlev=1
- flag=1
- Open(1,file='F:\jiangshui\753\1979-2014\out\oldrain\pipei\1979_6pipei.txt',status='old')
- open(2,file='F:\jiangshui\753\1979-2014\out\oldrain\grd\1979601sta.grd',status='replace',form='binary')
- 10 Read(1,*,end=100)stid,lat,lon,year,month,day,rain
- if(day==1.0)then
- !缺测处理
- if(int(rain)==99999)then
- rain=99999
- else
- rain=rain*10
- endif
- Print*,stid,lat,lon,rain,day
- write(2)stid,lat,lon,tim,nlev,flag,rain
- else
- end if
- !pause
- Goto 10
- 100 continue
- Close(1)
- nlev=0
- Write(2)stid,lat,lon,tim,nlev,flag
- close(2)
- !程序结束
- End
复制代码 3、 为生成的站点数据编写 CTL(数据描述文件)
- DSET F:/jiangshui/753/1979-2014/out/oldrain/grd/1979601sta.grd
- DTYPE station
- STNMAP F:/jiangshui/753/1979-2014/out/oldrain/grd/sta.map
- UNDEF 99999.00
- TITLE Rain Data Sample
- *这里的时间可以根据上面示例文件中的第一行的时间填写
- TDEF 1 linear 01jun1979 24hr
- VARS 1
- rain 0 99 Rain Data
- ENDVARS
复制代码
4、 为站点的二进制数据生成站点映射文件( *.map 文件) 有生成成功
5. 看看站点数据如何
画的图如图1
6、 生成一个格点的背景场,为插值做准备
- Program gen_grid
- Implicit none
- !这里是定义的变量
- integer i,j
- integer,parameter::x=29,y=17
- real grid
- !程序开始
- grid=1.0
- Open(1,file='F:\jiangshui\753\1979-2014\out\oldrain\grd\1979601grid.grd',status='replace',form='binary')
- Do i=1,y
- Do j=1,x
- Write(1)grid
- Enddo
- Enddo
- close(1)
- !程序结束
- End
复制代码 7、为生成的格点场配置 CTL 文件
- DSET F:\jiangshui\753\1979-2014\out\oldrain\grd\1979601grid.grd
- TITLE Grid Data Sample
- UNDEF -999.0
- XDEF 29 LINEAR 70.0 2.5
- YDEF 17 LINEAR 15.0 2.5
- ZDEF 1 LEVELS 1000
- TDEF 1 LINEAR 01jul1979 24hr
- VARS 1
- g 0 99 Grid Data
- ENDVARS
复制代码
8、编写 gs 脚本进行插值后作出图形
- 'reinit'
- 'open F:\jiangshui\753\1979-2014\out\oldrain\grd\grid.ctl'
- 'open F:\jiangshui\753\1979-2014\out\oldrain\grd\sta.ctl'
- 'set lon 70 140'
- 'set lat 15 55'
- 'set mpdset hires'
- 'define a=oacres(g,rain.2,8,5,3,2,1)'
- 'define al=maskout(a,g-1)'
- 'define aa=smth9(al)'
- 'd aa'
- 'printim F:\jiangshui\753\1979-2014\out\oldrain\grd\sta_grid32.png white'
- ;
复制代码
最后出的图(图2)值特别大,跟站点分布图的值不一样,研究了很久,实在不知道哪里错了,希望各位大大提点,不甚感激。
|
最佳答案
查看完整内容
原始资料里的降水的缺测值全部都处理成99999.0了?我看第一张图上还有30开头的五位数,那个应该没有处理吧
|