- 积分
- 230
- 贡献
-
- 精华
- 在线时间
- 小时
- 注册时间
- 2013-4-15
- 最后登录
- 1970-1-1
|
楼主 |
发表于 2014-3-28 12:59:07
|
显示全部楼层
我觉得 我的根本问题 还是在插值的问题上,我把我插值的过程给您看看吧。
这是待插值的数据说明:(只给出了一部分,我用的变量都是 nj_o,ni_o格点的)
netcdf gx1v3.020.clim.1984-2000 {
dimensions:
time = UNLIMITED ; // (1 currently)
d2 = 2 ;
ni_a = 192 ;
nj_a = 94 ;
ni_i = 320 ;
nj_i = 384 ;
ni_l = 192 ;
nj_l = 94 ;
ni_o = 320 ;
nj_o = 384 ;
ni_r = 19 ;
nj_r = 1 ;
variables:
double time(time) ;
time:long_name = "time" ;
time:units = "days since 0000-01-01 00:00:00" ;
time:calendar = "noleap" ;
time:bounds = "time_bound" ;
float domain_o_lat(nj_o, ni_o) ;
domain_o_lat:long_name = "latitude" ;
domain_o_lat:units = "degrees north" ;
float domain_o_lon(nj_o, ni_o) ;
domain_o_lon:long_name = "longitude" ;
domain_o_lon:units = "degrees east" ;
float domain_o_area(nj_o, ni_o) ;
domain_o_area:long_name = "cell area" ;
domain_o_area:units = "rad^2" ;
float domain_o_aream(nj_o, ni_o) ;
domain_o_aream:long_name = "cell area from map file" ;
domain_o_aream:units = "rad^2" ;
float avXo2c_o_So_t(time, nj_o, ni_o) ;
avXo2c_o_So_t:long_name = "temperature" ;
avXo2c_o_So_t:units = "kelvin" ;
avXo2c_o_So_t:missing_value = 1.e+30f ;
avXo2c_o_So_t:_FillValue = 1.e+30f ;
avXo2c_o_So_t:cell_method = "time: mean" ;
此外,我查看了nj_o,ni_o,nj_o是[-79.22002...72.1858],ni_o是[320.56,...359.9,1.0625,....320.2] 384*320
然后,我要插成的格点是:lat[90,...-78];lon[0,..361] 196*362
下面是我主要的程序(file1是待插值的数据文件,file2是需要插成的格点数据文件)
lon = file2->lon
lat_old = file2->lat
lat = lat_old(::-1)
lat_o = file1->domain_o_lat
lon_o = file1->domain_o_lon
lat_obs = lat_o(:,0)
lon_ob = lon_o(0,:)
lon_obs = lon_ob
lon_obs(0:283) = lon_ob(36:319)
lon_obs(284:319) = lon_ob(0:35)
field2 = file1->$变量名$
field2!0 = "time"
field2!1 = "lat"
field2!2 = "lon"
field2&lat = lat_obs
field2&lon = lon_obs
a = linint2_Wrap(field2&lon,field2&lat,field2,True,lon,lat,0)
a1 = a(:,::-1,:)
file3->$变量名$ = a1
以上是我插值的主要程序,请您帮我看看 是不是这里面出现了错误? |
|