3 192022 4 192022 5 192022 8 192022

  • Slides: 112
Download presentation

3 1/9/2022

3 1/9/2022

4 1/9/2022

4 1/9/2022

5 1/9/2022

5 1/9/2022

8 1/9/2022

8 1/9/2022

9 1/9/2022

9 1/9/2022

10 1/9/2022

10 1/9/2022

11 1/9/2022

11 1/9/2022

12 1/9/2022

12 1/9/2022

13 1/9/2022

13 1/9/2022

14 1/9/2022

14 1/9/2022

15 1/9/2022

15 1/9/2022

例1 -1:FORTRAN 6. 0程序 REAL DATA(144, 73, 17, 6, 365) ………… 获取DATA …………… !……

例1 -1:FORTRAN 6. 0程序 REAL DATA(144, 73, 17, 6, 365) ………… 获取DATA …………… !…… 写入DATA …………… OPEN(8, FILE = 'E: DATATEST. DAT', & FORM = 'UNFORMATTED', & ACCESS = 'DIRECT', RECL = 1 ) IREC = 0 DO 100 IT = 1, 365 DO 100 IW = 1, 6 DO 100 IZ = 1, 17 DO 100 IY = 1, 73 DO 100 IX = 1, 144 IREC = IREC+1 WRITE(8, REC=IREC)DATA(IX, IY, IZ, IW, IT) 100 CONTINUE END 28 1/9/2022

例1 -2:FORTRAN 6. 0程序 REAL DATA(144, 73, 17, 6, 365) ………… 获取DATA …………… !……

例1 -2:FORTRAN 6. 0程序 REAL DATA(144, 73, 17, 6, 365) ………… 获取DATA …………… !…… 写入DATA …………… OPEN(8, FILE = 'E: DATATEST. DAT', & FORM = 'UNFORMATTED', & ACCESS = 'DIRECT', RECL = 144*73 ) IREC = 0 DO IT = 1, 365 DO IW = 1, 6 DO IZ = 1, 17 IREC = IREC+1 WRITE(8, REC=IREC)(((DATA(IX, IY, IZ, IW, IT), & IX = 1, 144), IY = 1, 73) END DO END 29 1/9/2022

例1 -3:FORTRAN 6. 0程序 REAL DATA(144, 73, 17, 6, 365) ………… 获取DATA …………… !……

例1 -3:FORTRAN 6. 0程序 REAL DATA(144, 73, 17, 6, 365) ………… 获取DATA …………… !…… 写入DATA …………… OPEN(8, FILE = 'E: DATATEST. DAT', FORM = 'UNFORMATTED', RECORDTYPE = 'STREAM') WRITE(8) DATA END & & 144*73*17*6*365*4(字节)= 1, 565, 447, 040(字节) 问题:如果不同变量层数不等?数据文件太大? 30 1/9/2022

n. Time 1, Level then levels n. Time 1, Level ? , Variable Ps

n. Time 1, Level then levels n. Time 1, Level ? , Variable Ps t=1 1000, Variable u 850, 700, 500, 300, 200, 1000, Variable v 850, 700, 500, 300, 200, 1000, Variable z 850, 700, 500, 300, 200, 100 t = 2, 3, 4, 5 1000, Variable T 850, 700, 500, 300, 200, 1000, Variable q n. Time 2, Level ? , Variable Ps 850, 700, 500, 300 ………… ? , Variable Ts n. Time 2, Level ? , Variable P n. Time 3, Level ? , Variable Ps ………… n. Time 3, Level ? , Variable P n. Time 4, Level ? , Variable Ps ………… 有Ps, n. Time 4, Level ? , Variable P n. Time 5, Level ? , Variable Ps z, T, q, Ts, P共 8 ………… n. Time 5, Level ? , Variable P 个物理量 数据文件中的数 据结构(例): u, v, 31 1/9/2022

例2 -1:FORTRAN 6. 0程序 33 REAL PS(72, 46), U(72, 46, 7), V(72, 46, 7),

例2 -1:FORTRAN 6. 0程序 33 REAL PS(72, 46), U(72, 46, 7), V(72, 46, 7), Z(72, 46, 7), & T(72, 46, 7), Q(72, 46, 5), TS(72, 46), P(72, 46) OPEN(8, FILE=‘E: Gr. ADSTTDATAMODEL. DAT', & FORM='UNFORMATTED', ACCESS='DIRECT', RECL=72*46) IREC = 0 DO IT=1, 5 ………… 获取一个时次的 U, V, Z, T, Q, PS, TS, p …………… !…… 写入一个时次的 PS, U, V, Z, T, Q, TS, p …………… IREC = IREC+1 WRITE(8, REC = IREC)PS DO K=1, 7 IREC = IREC+1 WRITE(8, REC = IREC)((U(I, J, K), I=1, 72), J=1, 46) END DO ………… 顺序写入 V, Z, T ……………… DO K=1, 5 IREC = IREC+1 WRITE(8, REC = IREC)((Q(I, J, K), I=1, 72), J=1, 46) END DO IREC = IREC+1 WRITE(8, REC = IREC)TS IREC = IREC+1 WRITE(8, REC = IREC)P END DO END 1/9/2022

例2 -2:FORTRAN 4. 0程序 34 REAL PS(72, 46), U(72, 46, 7), V(72, 46, 7),

例2 -2:FORTRAN 4. 0程序 34 REAL PS(72, 46), U(72, 46, 7), V(72, 46, 7), Z(72, 46, 7), T(72, 46, 7), Q(72, 46, 5), TS(72, 46), P(72, 46) OPEN(8, FILE=‘MODEL. DAT', FORM='UNFORMATTED', ACCESS = 'DIRECT', RECL = 72*46*4 ) IREC = 0 DO IT=1, 5 ………… 获取一个时次的 U, V, Z, T, Q, PS, TS, p …………… !…… 写入一个时次的 PS, U, V, Z, T, Q, TS, p …………… IREC = IREC+1 WRITE(8, REC=IREC)PS DO K=1, 7 IREC = IREC+1 WRITE(8, REC=IREC)((U(I, J, K), I=1, 72), J=1, 46) END DO ………… 顺序写入 V, Z, T ……………… DO K=1, 5 IREC = IREC+1 WRITE(8, REC=IREC)((Q(I, J, K), I=1, 72), J=1, 46) END DO IREC = IREC+1 WRITE(8, REC=IREC)TS IREC = IREC+1 WRITE(8, REC=IREC)P END DO END & & 1/9/2022

例2 -3:FORTRAN 6. 0程序 REAL U(72, 46, 7), V(72, 46, 7), Z(72, 46, 7),

例2 -3:FORTRAN 6. 0程序 REAL U(72, 46, 7), V(72, 46, 7), Z(72, 46, 7), & T(72, 46, 7), Q(72, 46, 5), PS(72, 46), & TS(72, 46), P(72, 46) OPEN(8, FILE = 'E: Gr. ADSTTDATAMODEL. DAT', & FORM = 'UNFORMATTED', & RECORDTYPE = 'STREAM') DO IT = 1 , 5 ………… 获取一个时次的 U, V, Z, T, Q, PS, TS, p …………… !…… 写入一个时次的 PS, U, V, Z, T, Q, TS, p …………… WRITE(8) PS,U,V,Z,T,Q,TS,P END DO END 35 1/9/2022

数据描述文件(例1) 例1: UNIT=10的数据文件,3800字节。 § ………… § XDEF 19 LINEAR 0. 0 5. 0 §

数据描述文件(例1) 例1: UNIT=10的数据文件,3800字节。 § ………… § XDEF 19 LINEAR 0. 0 5. 0 § YDEF 10 LINEAR 0. 0 5. 0 § ZDEF 5 LEVELS 1000 850 700 500 300 § ………… 例2: UNIT=20的数据文件,3800字节。 § ………… § XDEF 5 LINEAR 0. 0 5. 0 § YDEF 10 LINEAR 0. 0 2. 5 § ZDEF 19 LINEAR 1000. 0 100. 0 § ………… 39 1/9/2022

数据描述文件(例2) § § § § DSET E: Gr. ADSTTdataMODEL. DAT TITLE 5 Days Data

数据描述文件(例2) § § § § DSET E: Gr. ADSTTdataMODEL. DAT TITLE 5 Days Data of Sample Model Output UNDEF -2. 56 E 33 XDEF 72 LINEAR 0. 0 5. 0 YDEF 46 LINEAR -90. 0 4. 0 ZDEF 7 LEVELS 1000 850 700 500 300 200 100 TDEF 5 LINEAR 02 JAN 1987 1 DY VARS 8 PS 0 99 Surface Pressure(地面气压) : h. Pa U 7 99 U winds(等压面上的纬向风) : m/s V 7 99 V winds (等压面上的经向风) : m/s Z 7 99 Geopotential heights (等压面的位势高度) : gpm T 7 99 Temperature (等压面上的温度) : K Q 5 99 Specific Humidity (等压面上的比湿) : Kg/Kg TS 0 99 Surface temperature (地面温度) : K P 0 99 Precipitation (降水量) : g/S § ENDVARS 40 1/9/2022

41 1/9/2022

41 1/9/2022

(4)设置网格点值与纬度的对应关系-续 3 § YDEF 46 LINEAR -90. 0 4. 0 § YDEF 46 LINEAR

(4)设置网格点值与纬度的对应关系-续 3 § YDEF 46 LINEAR -90. 0 4. 0 § YDEF 46 LINEAR 0. 0 2. 0 § YDEF 20 LEVLES -64. 10,-62. 34,-60. 58,-58. 83,-57. 07, -55. 32,-53. 56,-51. 80,-50. 05,-48. 29, -46. 54,-44. 78,-43. 02,-41. 27,-39. 51, -37. 76,-36. 00,-34. 24,-32. 49,-30. 73 51 1/9/2022

(5)设置垂直网格点的映射关系-续 § 例如: Ø ZDEF 10 LINEAR 1000 -100 ¡表示共 10 层等压面,其值各为 1000,900,800, 700

(5)设置垂直网格点的映射关系-续 § 例如: Ø ZDEF 10 LINEAR 1000 -100 ¡表示共 10 层等压面,其值各为 1000,900,800, 700 等等。 Ø ZDEF 17 LEVELS 1000 925 850 700 600 54 500 400 300 250 200 150 100 70 50 30 20 10 Ø ZDEF 7 LEVELS 1000 850 700 500 300 200 100 注意:若等压面只有一层,则需用LINEAR映射 关系 1/9/2022

(7)变量描述 § VARS PS U V Z T Q 8 0 7 7 7

(7)变量描述 § VARS PS U V Z T Q 8 0 7 7 7 99 99 7 99 5 99 TS 0 99 P 0 99 § ENDVARS 57 Surface Pressure(地面气压) : h. Pa U winds(等压面上的纬向风) : m/s V winds (等压面上的经向风) : m/s Geopotential heights (等压面的位势高度) : gpm Temperature (等压面上的温度) : K Specific Humidity (等压面上的比湿) : Kg/Kg Surface temperature (地面温度) : K Precipitation (降水量) : g/S 1/9/2022

(8)根据需要在数据描述文件中可选的记录 § § § § 59 DTYPE <grib> <station> INDEX file-name. IDX STNMAP file-name.

(8)根据需要在数据描述文件中可选的记录 § § § § 59 DTYPE <grib> <station> INDEX file-name. IDX STNMAP file-name. MAP OPTIONS <keywords> FILEHEADER bytes THEADER bytes XYHEADER bytes 1/9/2022

(8)根据需要在数据描述文件中可选的记录-续 1 DTYPE 以及 INDEX 和 STNMAP § GRIB数据 Ø DTYPE GRIB Ø INDEX

(8)根据需要在数据描述文件中可选的记录-续 1 DTYPE 以及 INDEX 和 STNMAP § GRIB数据 Ø DTYPE GRIB Ø INDEX D: DATAGBEX. IDX Ø 在DOS环境中使用gribmap形成GRIB数据的idx文件 Ø gribmap -i GRIB数据描述文件 § STATION数据 Ø DTYPE STATION Ø STNMAP D: DATASTNEX. MAP Ø 在DOS环境中使用stnmap形成STATION数据的map 文件 Ø stnmap -i 站点数据描述文件 60 1/9/2022

例3: FORTRAN 6. 0程序 REAL PS(72, 46), U(72, 46, 7), V(72, 46, 7), Z(72,

例3: FORTRAN 6. 0程序 REAL PS(72, 46), U(72, 46, 7), V(72, 46, 7), Z(72, 46, 7), & T(72, 46, 7), Q(72, 46, 5), TS(72, 46), P(72, 46) CHARACTER CDATE(5)*2 DATA CDATE/’ 01’ , ’ 02’ , ’ 03’ , ’ 04’ , ’ 05’/ DO IT = 1 , 5 ………… 获得一个时次的 U, V, Z, T, Q, PS, TS, p …………… !… 每一个时次的 PS, U, V, Z, T, Q, TS, p 分别写一个文件 … OPEN(8, FILE=CDATE(IT)//’JAN 87. DAT‘ & , FORM='UNFORMATTED', RECORDTYPE='STREAM') WRITE(8)PS WRITE(8) U WRITE(8) V WRITE(8) Z WRITE(8) T WRITE(8) Q WRITE(8)TS WRITE(8) P CLOSE(8) END DO END 64 1/9/2022

数据描述文件(例3) § § § § § DSET E: Gr. ADSTTdata%d 2 jan 87. DAT

数据描述文件(例3) § § § § § DSET E: Gr. ADSTTdata%d 2 jan 87. DAT Options template yrev zrev TITLE 5 Days of Sample Model Output UNDEF -2. 56 E 33 XDEF 72 LINEAR 0. 0 5. 0 YDEF 46 LINEAR -90. 0 4. 0 ZDEF 7 LEVELS 1000 850 700 500 300 200 100 TDEF 5 LINEAR 02 JAN 1987 1 DY VARS 8 PS U V Z T Q TS P 0 7 7 5 0 0 § ENDVARS 65 99 99 Surface Pressure U winds V winds Geopotential heights Temperature Specific Humidity Surface temperature Precipitation 1/9/2022

Tips 1: ctl 文件 § § § 67 § § § § dset timedata.

Tips 1: ctl 文件 § § § 67 § § § § dset timedata. dat title time serial data xdef 144 linear 0 2. 5 ydef 73 linear -90 2. 5 zdef 12 levels 1000 925 850 700 600 500 400 300 250 200 150 100 tdef 480 linear jan 1958 1 mo vars 5 h 12 99 geo. height. u 12 99 u-wind v 12 99 v-wind w 12 99 w-wind t 12 99 temp. Endvars 1/9/2022

Tips 1: “ 99” x(lon)→y(lat)→z(lev)→vars(不同变量)→time …… …… IREC=0 DO 90 it=1, 480 …… ……

Tips 1: “ 99” x(lon)→y(lat)→z(lev)→vars(不同变量)→time …… …… IREC=0 DO 90 it=1, 480 …… …… DO 10 K=1, 12 IREC=IREC+1 WRITE(8, REC=IREC)((H(I, J, K), I=1, 144), J=1, 7 3) 10 CONTINUE …… …… DO 50 K=1, 10 IREC=IREC+1 WRITE(8, REC=IREC)((U(I, J, K), I=1, 144), J=1, 7 3) 50 CONTINUE …… …… 90 CONTINUE 68 1/9/2022

例1:“ 99 ”→“ -1, 10, 1 ” § “ -1, 10, 1 ”表示: x(lon)

例1:“ 99 ”→“ -1, 10, 1 ” § “ -1, 10, 1 ”表示: x(lon) → y(lat) → var(不 同变量) → z(lev) → time 的存储次序, 如: h 12 -1, 10, 1 geo. Height u 12 -1, 10, 1 u-wind v 12 -1, 10, 1 v-wind w 12 -1, 10, 1 w-wind t 12 -1, 10, 1 temp 70 1/9/2022

例1:“ 99 ”→“ -1, 10, 1 ” x(lon)→y(lat)→vars(不同变量)→z(lev)→time …… IREC=0 DO 10 K=1, 12

例1:“ 99 ”→“ -1, 10, 1 ” x(lon)→y(lat)→vars(不同变量)→z(lev)→time …… IREC=0 DO 10 K=1, 12 IREC=IREC+1 WRITE(8, REC=IREC)((H(I, J, K), I=1, 144), J=1, 73) IREC=IREC+1 WRITE(8, REC=IREC)((U(I, J, K), I=1, 144), J=1, 73) IREC=IREC+1 WRITE(8, REC=IREC)((V(I, J, K), I=1, 144), J=1, 73) IREC=IREC+1 WRITE(8, REC=IREC)((W(I, J, K), I=1, 144), J=1, 73) IREC=IREC+1 WRITE(8, REC=IREC)((T(I, J, K), I=1, 144), J=1, 73) 10 CONTINUE 71 …… 1/9/2022

例2:“ 99 ”→“ -1, 20, 1 ” x(lon)→y(lat)→z(lev)→time→vars(不同变量) …… IREC=0 DO 10 K=1, 12

例2:“ 99 ”→“ -1, 20, 1 ” x(lon)→y(lat)→z(lev)→time→vars(不同变量) …… IREC=0 DO 10 K=1, 12 IREC=IREC+1 WRITE(8, REC=IREC)((H(I, J, K), I=1, 144), J=1, 73) 10 CONTINUE DO 20 K=1, 10 IREC=IREC+1 WRITE(8, REC=IREC)((U(I, J, K), I=1, 144), J=1, 73) 20 CONTINUE …… DO 50 K=1, 12 IREC=IREC+1 WRITE(8, REC=IREC)((T(I, J, K), I=1, 144), J=1, 73) 50 CONTINUE 73 1/9/2022 ……

例3:“ 99 ”→“ -1, 30, 1 ” § “ -1, 30 ”表示: y(lat) →

例3:“ 99 ”→“ -1, 30, 1 ” § “ -1, 30 ”表示: y(lat) → x(lon) → var(不 同变量) → z(lev) → time 的存储次序, 即先放纬度方向,再放经度方向。 h 12 -1, 30, 1 geo. Height u 12 -1, 30, 1 u-wind v 12 -1, 30, 1 v-wind w 12 -1, 30, 1 w-wind t 12 -1, 30, 1 temp 74 1/9/2022

例3:“ 99 ” →“ -1, 30, 1 ” y(lat)→x(lon)→vars(不同变量)→z(lev)→time 75 …… IREC=0 DO 10

例3:“ 99 ” →“ -1, 30, 1 ” y(lat)→x(lon)→vars(不同变量)→z(lev)→time 75 …… IREC=0 DO 10 K=1, 12 IREC=IREC+1 WRITE(8, REC=IREC)((H(I, J, K), J=1, 73), I=1, 144 ) IREC=IREC+1 WRITE(8, REC=IREC)((U(I, J, K), J=1, 73), I=1, 144 ) IREC=IREC+1 WRITE(8, REC=IREC)((V(I, J, K), J=1, 73), I=1, 144 ) IREC=IREC+1 WRITE(8, REC=IREC)((W(I, J, K), J=1, 73), I=1, 144 ) IREC=IREC+1 1/9/2022 WRITE(8, REC=IREC)((T(I, J, K), J=1, 73), I=1, 144

Creating Data Files(1 -1 -1) § Examples of Creating a Gridded Data Set PROGRAM

Creating Data Files(1 -1 -1) § Examples of Creating a Gridded Data Set PROGRAM EXAMPLE 1 REAL Z(72, 46, 16), Q(72, 46, 10), PS(72, 46) …… OPEN(8, FILE=‘EXAM 1. dat', FORM='UNFORMATTED', & ACCESS='DIRECT', RECL=72*46) IREC=1 DO 10 K=1, 16 WRITE(8, REC=IREC)((Z(I, J, K), I=1, 72), J=1, 46) IREC=IREC+1 10 CONTINUE DO 20 K=1, 10 WRITE(8, REC=IREC)((Q(I, J, K), I=1, 72), J=1, 46) IREC=IREC+1 20 CONTINUE WRITE(8, REC=IREC)PS END 77 1/9/2022

Creating Data Files(1 -1 -2) § Data Descriptor File DSET EXAM 1. dat TITLE

Creating Data Files(1 -1 -2) § Data Descriptor File DSET EXAM 1. dat TITLE Sample Data Set UNDEF -9. 99 E 33 XDEF 72 LINEAR 1 1 YDEF 46 LINEAR 1 1 ZDEF 16 LINEAR 1 1 TDEF 1 LINEAR 1 JAN 2000 1 DY VARS 3 Z 16 99 heights data Q 10 99 humidity Ps 0 99 surface pressure ENDVARS 78 1/9/2022

Creating Data Files(1 -2 -1) § & 10 20 30 79 Examples of Creating

Creating Data Files(1 -2 -1) § & 10 20 30 79 Examples of Creating a Gridded Data Set REAL Z(72, 46, 16), Q(72, 46, 10), PS(72, 46) OPEN(8, FILE=‘EXAM 1. dat', FORM='UNFORMATTED', ACCESS='DIRECT', RECL=72*46*4) IREC=1 do 30 itime=1, 10 …………………… DO 10 K=1, 16 WRITE(8, REC=IREC)((Z(I, J, K), I=1, 72), J=1, 46) IREC=IREC+1 CONTINUE DO 20 K=1, 10 WRITE(8, REC=IREC)((Q(I, J, K), I=1, 72), J=1, 46) IREC=IREC+1 CONTINUE WRITE(8, REC=IREC)PS IREC=IREC+1 continue END 1/9/2022

Creating Data Files(1 -2 -2) § Data Descriptor File DSET EXAM 1. dat TITLE

Creating Data Files(1 -2 -2) § Data Descriptor File DSET EXAM 1. dat TITLE Sample Data Set UNDEF -9. 99 E 33 XDEF 72 LINEAR 0 5 YDEF 46 LINEAR -90 4 ZDEF 16 Levels 1000 850 700 600 500 400 300 250 200 150 100 70 50 30 20 10 TDEF 10 LINEAR 1 JAN 2000 1 DY VARS 3 Z 16 99 heights data Q 10 99 humidity Ps 0 99 surface pressure ENDVARS 80 1/9/2022

Creating Data Files(1 -2 -3) § Data Descriptor File DSET EXAM 1. dat TITLE

Creating Data Files(1 -2 -3) § Data Descriptor File DSET EXAM 1. dat TITLE Sample Data Set UNDEF -9. 99 E 33 XDEF 72 LINEAR -180 5 YDEF 46 LINEAR -90 4 ZDEF 16 Levels 1000 850 700 600 500 400 300 250 200 150 100 70 50 30 20 10 TDEF 10 LINEAR 1 JAN 2000 1 DY VARS 3 Z 16 99 heights data Q 10 99 humidity Ps 0 99 surface pressure ENDVARS 81 1/9/2022

Creating Data Files(1 -2 -4) § Data Descriptor File DSET EXAM 1. dat TITLE

Creating Data Files(1 -2 -4) § Data Descriptor File DSET EXAM 1. dat TITLE Sample Data Set UNDEF -9. 99 E 33 Options yrev zrev XDEF 72 LINEAR -180 5 YDEF 46 LINEAR -90 4 ZDEF 16 Levels 1000 850 700 600 500 400 300 250 200 150 100 70 50 30 20 10 TDEF 10 LINEAR 1 JAN 2000 1 DY VARS 3 Z Q Ps 16 10 0 ENDVARS 82 99 99 99 heights data humidity surface pressure 1/9/2022

Creating Data Files(2 -1) PROGRAM EXAMPLE 2 REAL X 1(100), X 2(100) DO 10

Creating Data Files(2 -1) PROGRAM EXAMPLE 2 REAL X 1(100), X 2(100) DO 10 I=1, 100 X=0. 2*(I-1) X 1(I) = SIN(X) X 2(I) = COS(X) 10 CONTINUE OPEN(8, FILE=‘EXAM 2. dat', FORM='UNFORMATTED', & ACCESS='DIRECT', RECL=100*4) WRITE (8, REC=1) X 1 WRITE (8, REC=2) X 2 END 83 1/9/2022

Creating Data Files(2 -2) § Data Descriptor File DSET EXAM 2. dat TITLE Sample

Creating Data Files(2 -2) § Data Descriptor File DSET EXAM 2. dat TITLE Sample Data Set UNDEF -9. 99 E 33 XDEF 100 LINEAR 1 1 YDEF 1 LINEAR 1 1 ZDEF 1 LINEAR 1 1 TDEF 1 LINEAR 1 JAN 2000 1 DY VARS 2 x 1 0 99 100 Data Points x 2 0 99 100 Data Points ENDVARS 84 1/9/2022

Creating Data Files(2 -3) § Data Descriptor File DSET EXAM 2. dat TITLE Sample

Creating Data Files(2 -3) § Data Descriptor File DSET EXAM 2. dat TITLE Sample Data Set UNDEF -9. 99 E 33 XDEF 1 LINEAR 1 1 YDEF 100 LINEAR -50 1 ZDEF 1 LINEAR 1 1 TDEF 1 LINEAR 1 JAN 2000 1 DY VARS 2 Y 1 0 99 100 Data Points Y 2 0 99 100 Data Points ENDVARS 85 1/9/2022

Creating Data Files(2 -4) § Data Descriptor File DSET EXAM 2. dat TITLE Sample

Creating Data Files(2 -4) § Data Descriptor File DSET EXAM 2. dat TITLE Sample Data Set UNDEF -9. 99 E 33 XDEF 10 LINEAR 60 8 YDEF 10 LINEAR 15 5 ZDEF 1 LINEAR 1 1 TDEF 1 LINEAR 1 JAN 2000 1 DY VARS 2 Y 1 0 99 100 Data Points Y 2 0 99 100 Data Points ENDVARS 86 1/9/2022

Creating Data Files(3 -1) PROGRAM EXAMPLE 3 REAL X 1(100), X 2(100) DO 10

Creating Data Files(3 -1) PROGRAM EXAMPLE 3 REAL X 1(100), X 2(100) DO 10 I=1, 100 X=0. 2*(I-1) X 1(I) = SIN(X) X 2(I) = COS(X) 10 CONTINUE OPEN(8, FILE=‘EXAM 3. dat', FORM='UNFORMATTED', & ACCESS='DIRECT', RECL=1*4) DO I=1, 100 WRITE (8, REC=I) X 1(I) END DO DO I=1, 100 WRITE (8, REC=100+I) X 2(I) END DO END 87 1/9/2022

Creating Data Files(3 -2) § Data Descriptor File DSET EXAM 3. dat TITLE Sample

Creating Data Files(3 -2) § Data Descriptor File DSET EXAM 3. dat TITLE Sample Data Set UNDEF -9. 99 E 33 XDEF 1 LINEAR 1 1 YDEF 1 LINEAR 1 1 ZDEF 100 LINEAR 1 1 TDEF 1 LINEAR 1 JAN 2000 1 DY VARS 2 Z 1 100 99 100 Data Points Z 2 100 99 100 Data Points ENDVARS 88 1/9/2022

Creating Data Files(4 -1) PROGRAM EXAMPLE 4 REAL X 1(100), X 2(100) DO 10

Creating Data Files(4 -1) PROGRAM EXAMPLE 4 REAL X 1(100), X 2(100) DO 10 I=1, 100 X=0. 2*(I-1) X 1(I) = SIN(X) X 2(I) = COS(X) 10 CONTINUE OPEN(8, FILE=‘EXAM 4. dat', FORM='UNFORMATTED', & ACCESS='DIRECT', RECL=1*4) DO I=1, 100 WRITE (8, REC=I*2 -1) X 1(I) WRITE (8, REC=I*2 ) X 2(I) END DO END 89 1/9/2022

Creating Data Files(4 -2) § Data Descriptor File DSET EXAM 4. dat TITLE Sample

Creating Data Files(4 -2) § Data Descriptor File DSET EXAM 4. dat TITLE Sample Data Set UNDEF -9. 99 E 33 XDEF 1 LINEAR 1 1 YDEF 1 LINEAR 1 1 ZDEF 1 LINEAR 1 1 TDEF 100 LINEAR 00 Z 01 JAN 2000 1 HR VARS 2 T 1 0 99 100 Data Points T 2 0 99 100 Data Points ENDVARS 90 1/9/2022

例子:有如下格式的月降水资料 § Year Month § § § § § 99 1980 1980 …… 1

例子:有如下格式的月降水资料 § Year Month § § § § § 99 1980 1980 …… 1 1 2 2 Stid Lat QQQ RRR SSS TTT 34. 3 44. 2 22. 4 33. 4 Lon -85. 5 -84. 5 -83. 5 -82. 5 Rainfall 123. 3 87. 1 412. 8 23. 3 145. 1 871. 4 22. 1 45. 8 1/9/2022

FORTRAN程序例 PARAMETER( NM=4 , NS=160 ) CHARACTER*8 STID( NS ) REAL RLAT( NS )

FORTRAN程序例 PARAMETER( NM=4 , NS=160 ) CHARACTER*8 STID( NS ) REAL RLAT( NS ) , RLON( NS ) , TIM INTEGER NLEV , NFLAG REAL RAIN( NM , NS ) 103 !------- Read ORIGINAL DATA -------------OPEN (10, FILE='E: GRADSTTexampleSTA 00. TXT') DO IS=1 , NS READ (10, '(a 8, 2 f 7. 1, 4 F 11. 7)') & STID(IS), RLAT(IS), RLON(IS), (RAIN(IM, IS), IM=1, NM) END DO 1/9/2022

例4 写为地面四个不同的要素 !------- WRITE STATION'S DATA RECORD ---------OPEN (11 , FILE = 'E: GRADSTTexampleSTA

例4 写为地面四个不同的要素 !------- WRITE STATION'S DATA RECORD ---------OPEN (11 , FILE = 'E: GRADSTTexampleSTA 01. DAT' , & FORM = 'UNFORMATTED' , RECORDTYPE = 'STREAM' ) !---- start a time report ---TIM = 0. 0 NLEV = 1 NFLAG = 1 DO IS = 1, NS WRITE (11) STID(IS) , RLAT(IS) , RLON(IS) , TIM , NLEV , NFLAG WRITE (11) (RAIN( IM , IS ) , IM = 1 , NM ) END DO !---- end a time report ---NLEV = 0 NFLAG = 0 WRITE (11) STID(1) , RLAT(1) , RLON(1) , TIM , NLEV , NFLAG END 104 1/9/2022

数据描述文件(例4) 105 § DSET E: GradsttEXAMPLESTA 01. DAT § DTYPE STATION § STNMAP E:

数据描述文件(例4) 105 § DSET E: GradsttEXAMPLESTA 01. DAT § DTYPE STATION § STNMAP E: GradsttEXAMPLESTA 01. map § UNDEF 9999. 9 § TITLE SEASONAL RAINFALL § TDEF 1 LINEAR JAN 2001 3 mo § VARS 4 § N 1 0 99 SPRING VARIATION § N 2 0 99 SUMMER VARIATION § N 3 0 99 AUTUMN VARIATION § N 4 0 99 WINTER VARIATION 1/9/2022 § ENDVARS

例5 写为地面同一要素的四个不同时间 !------- WRITE STATION'S DATA RECORD ---------OPEN (11 , FILE = 'E: GRADSTTexampleSTA

例5 写为地面同一要素的四个不同时间 !------- WRITE STATION'S DATA RECORD ---------OPEN (11 , FILE = 'E: GRADSTTexampleSTA 02. DAT' , & FORM = 'UNFORMATTED' , RECORDTYPE = 'STREAM' ) DO IM = 1 , NM !---- start a time report ---TIM = 0. 0 NLEV = 1 NFLAG = 1 DO IS = 1, NS WRITE (11) STID(IS) , RLAT(IS) , RLON(IS) , TIM , NLEV , NFLAG WRITE (11) RAIN( IM , IS ) END DO !---- end a time report ---NLEV = 0 NFLAG = 0 WRITE (11) STID(1) , RLAT(1) , RLON(1) , TIM , NLEV , NFLAG END DO END 106 1/9/2022

数据描述文件(例5) 107 § DSET E: GradsttEXAMPLESTA 02. DAT § DTYPE STATION § STNMAP E:

数据描述文件(例5) 107 § DSET E: GradsttEXAMPLESTA 02. DAT § DTYPE STATION § STNMAP E: GradsttEXAMPLESTA 02. map § UNDEF 9999. 9 § TITLE SEASONAL RAINFALL § TDEF 4 LINEAR JAN 2001 3 mo § VARS 1 § N 1 0 99 RAINFALL § ENDVARS 1/9/2022

例6 写为地面一个要素,高空四个不同层次一个要素 § § § § 108 PARAMETER (NL=4, NS=160) CHARACTER*8 STID(NS), CH 1

例6 写为地面一个要素,高空四个不同层次一个要素 § § § § 108 PARAMETER (NL=4, NS=160) CHARACTER*8 STID(NS), CH 1 REAL RLAT(NS), RLON(NS), PLEV(NL), TIM REAL RF(NS), RLEV(NL, NS) INTEGER NLEV, NFLAG DATA PLEV/1000. 0, 850. 0, 700. 0, 500. 0/ !------- Read ORIGINAL DATA -------------OPEN (10, FILE='E: GRADSTTexampleNPJRF. TXT') DO IS = 1, NS READ (10, '(a 8, 2 f 7. 1, F 11. 4)') STID(IS), RLAT(IS), RLON(IS), RF(IS) END DO OPEN (11, FILE='E: GRADSTTexampleSTA 00. TXT') DO IS=1, NS READ (11, '(a 8, 2 f 7. 1, 4 F 11. 7)') CH 1, R 2, (RLEV(IL, IS), IL=1, NL) END DO 1/9/2022

§ § § § § 109 !------- WRITE STATION'S DATA RECORD ---------OPEN (12, FILE='E:

§ § § § § 109 !------- WRITE STATION'S DATA RECORD ---------OPEN (12, FILE='E: GRADSTTexampleSTA 03. DAT', & FORM='UNFORMATTED', RECORDTYPE='STREAM') !---- start a time report ---TIM = 0. 0 NLEV = 5 NFLAG = 1 DO IS = 1, NS WRITE (12) STID(IS), RLAT(IS), RLON(IS), TIM, NLEV, NFLAG WRITE (12) RF(IS) WRITE (12) (PLEV(IL), RLEV(IL, IS), IL=1, NL) END DO !---- end a time report ---NLEV = 0 NFLAG = 0 WRITE (12) STID(1), RLAT(1), RLON(1), TIM, NLEV, NFLAG END 1/9/2022

数据描述文件(例6) 110 § DSET E: GradsttEXAMPLESTA 03. DAT § DTYPE STATION § STNMAP E:

数据描述文件(例6) 110 § DSET E: GradsttEXAMPLESTA 03. DAT § DTYPE STATION § STNMAP E: GradsttEXAMPLESTA 03. map § UNDEF 9999. 9 § TITLE YEAR RAINFALL § TDEF 1 LINEAR JAN 2001 3 mo § VARS 2 § RF 0 99 YEAR RAINFALL § SV 4 99 SEASONAL RAINFALL VARIATION § ENDVARS 1/9/2022

C 语言的头的形式如下 struct rpthdr { char id[8]; /* Character station id */ float lat;

C 语言的头的形式如下 struct rpthdr { char id[8]; /* Character station id */ float lat; /* Latitude of report */ float lon; /* Longitude of report */ float tim; /* Time in relative grid units */ int nlev; /* Number of levels following */ int flag; /* Level independent var set flag */ } 112 1/9/2022