爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 6744|回复: 5

addfile的status改成w后,生成的文件多出了很多维数变量,如何处理?

[复制链接]
发表于 2015-8-25 22:36:37 | 显示全部楼层 |阅读模式

登录后查看更多精彩内容~

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
hi,
  目的是修改将扰动加入到一个wrfinput文件中,使用addfile("","w")对原始文件修改,但是出来的结果却多出了很多维数变量。
  下面是我的脚本:
+++++++++++++++++++++++++++++++++++++++++++++++
load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_code.ncl"
load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_csm.ncl"
load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/contributed.ncl"
load "$NCARG_ROOT/lib/ncarg/nclscripts/wrf/WRF_contributed.ncl"
begin
     datadir="./"
     file1="wrfinput_d01_c00.c00"
     file2="wrfinput_d01_p01.p01"
     file3="wrfinput_d01.d01"
     file4="wrfinput_d01.d01_new"
     ff1=addfile(datadir+file1+".nc","r")
     ff2=addfile(datadir+file2+".nc","r")
     ff3=addfile(datadir+file3+".nc","w")
     varnames1=getfilevarnames(ff1)
     varnames2=getfilevarnames(ff2)
     varnames3=getfilevarnames(ff3)
     varlens=dimsizes(varnames1)
     do i=1,varlens-1
         print(i+"  "+varnames3(i)+"  "+varnames1(i)+"  "+varnames2(i))
         ss=(ff3->$varnames3(i)$) + (ff1->$varnames1(i)$) - (ff2->$varnames2(i)$)
         ff3->$varnames3(i)$=ss
         delete(ss)
     end do
     ;dimnames=getvardims(ff3)
     ;delete([/dimnames(12:336)/])  经过测试,发现这两行不管用
end

+++++++++++++++++++++++++++++++++++++++++++++++


出来结果的部分头文件信息:
------------------------------------------------------------------------
netcdf wrfinput_d01 {
dimensions:
        Time = UNLIMITED ; // (1 currently)
        DateStrLen = 19 ;
        west_east = 274 ;
        south_north = 209 ;
        bottom_top = 49 ;
        bottom_top_stag = 50 ;
        soil_layers_stag = 4 ;
        west_east_stag = 275 ;
        south_north_stag = 210 ;
        DIM0009 = 5 ;
        land_cat_stag = 33 ;
        soil_cat_stag = 16 ;
        ncl12 = 1 ;
        ncl13 = 209 ;
        ncl14 = 274 ;
        ncl15 = 1 ;
        ncl16 = 209 ;
        ncl17 = 274 ;
        ncl18 = 1 ;
        ncl19 = 209 ;
        ncl20 = 274 ;
        ncl21 = 1 ;
        ncl22 = 49 ;
        ncl23 = 1 ;
        ncl24 = 50 ;
        ncl25 = 1 ;
        ncl26 = 4 ;
        ncl27 = 1 ;
        ncl28 = 4 ;
        ncl29 = 1 ;
        ncl30 = 209 ;
        ncl31 = 274 ;
        ncl32 = 1 ;
        ncl33 = 49 ;
        ncl34 = 209 ;
        ncl35 = 275 ;
        ncl36 = 1 ;
        ncl37 = 49 ;
        ncl38 = 210 ;
        ncl39 = 274 ;
        ncl40 = 1 ;
        ncl41 = 50 ;
        ncl42 = 209 ;
        ncl43 = 274 ;
        ncl44 = 1 ;
        ncl45 = 50 ;
        ncl46 = 209 ;
        ncl47 = 274 ;
        ncl48 = 1 ;
        ncl49 = 50 ;
        ncl50 = 209 ;
        ncl51 = 274 ;
        ncl52 = 1 ;
        ncl53 = 49 ;
        ncl54 = 209 ;
        ncl55 = 274 ;
        ncl56 = 1 ;
        ncl57 = 49 ;
        ncl58 = 209 ;
        ncl59 = 274 ;
        ncl60 = 1 ;
        ncl61 = 209 ;
        ncl62 = 274 ;
        ncl63 = 1 ;
        ncl64 = 209 ;
        ncl65 = 274 ;
        ncl66 = 1 ;
        ncl67 = 49 ;
        ncl68 = 209 ;
        ncl69 = 274 ;
        ncl70 = 1 ;
        ncl71 = 49 ;
        ncl72 = 209 ;
        ncl73 = 274 ;
        ncl74 = 1 ;
        ncl75 = 49 ;
        ncl76 = 1 ;
        ncl77 = 49 ;
        ncl78 = 1 ;
        ncl79 = 49 ;
        ncl80 = 1 ;
        ncl81 = 49 ;
        ncl82 = 1 ;
        ncl83 = 49 ;
        ncl84 = 1 ;
        ncl85 = 49 ;
        ncl86 = 1 ;
        ncl87 = 49 ;
        ncl88 = 1 ;
        ncl89 = 1 ;
        ncl90 = 1 ;
        ncl91 = 1 ;
        ncl92 = 49 ;
        ncl93 = 209 ;
        ncl94 = 274 ;
        ncl95 = 1 ;
        ncl96 = 209 ;
        ncl97 = 274 ;
        ncl98 = 1 ;
        ncl99 = 209 ;
        ncl100 = 274 ;
        ncl101 = 1 ;
        ncl102 = 209 ;
        ncl103 = 274 ;
        ncl104 = 1 ;
        ncl105 = 209 ;
        ncl106 = 274 ;
        ncl107 = 1 ;
        ncl108 = 209 ;
        ncl109 = 274 ;
        ncl110 = 1 ;
        ncl111 = 209 ;
        ncl112 = 274 ;
        ncl113 = 1 ;
        ncl114 = 1 ;
        ncl115 = 1 ;
        ncl116 = 1 ;
        ncl117 = 1 ;
        ncl118 = 1 ;
        ncl119 = 1 ;
        ncl120 = 1 ;
        ncl121 = 1 ;
        ncl122 = 1 ;
        ncl123 = 49 ;
        ncl124 = 209 ;
        ncl125 = 274 ;
        ncl126 = 1 ;
        ncl127 = 49 ;
        ncl128 = 209 ;
        ncl129 = 274 ;
        ncl130 = 1 ;
        ncl131 = 49 ;
        ncl132 = 209 ;
        ncl133 = 274 ;
        ncl134 = 1 ;
        ncl135 = 49 ;
        ncl136 = 209 ;
        ncl137 = 274 ;
        ncl138 = 1 ;
        ncl139 = 49 ;
        ncl140 = 209 ;
        ncl141 = 274 ;
        ncl142 = 1 ;
        ncl143 = 49 ;
        ncl144 = 209 ;
        ncl145 = 274 ;
        ncl146 = 1 ;
        ncl147 = 49 ;
        ncl148 = 209 ;
        ncl149 = 274 ;
        ncl150 = 1 ;
        ncl151 = 49 ;
        ncl152 = 209 ;
        ncl153 = 274 ;
        ncl154 = 1 ;
        ncl155 = 5 ;
        ncl156 = 1 ;
        ncl157 = 5 ;
        ncl158 = 1 ;
        ncl159 = 1 ;
        ncl160 = 209 ;
        ncl161 = 274 ;
        ncl162 = 1 ;
        ncl163 = 209 ;
        ncl164 = 274 ;
        ncl165 = 1 ;
        ncl166 = 209 ;
        ncl167 = 274 ;
        ncl168 = 1 ;
        ncl169 = 209 ;
        ncl170 = 274 ;
        ncl171 = 1 ;
        ncl172 = 209 ;
        ncl173 = 274 ;
        ncl174 = 1 ;
        ncl175 = 33 ;
        ncl176 = 209 ;
        ncl177 = 274 ;
        ncl178 = 1 ;
        ncl179 = 16 ;
        ncl180 = 209 ;
        ncl181 = 274 ;
        ncl182 = 1 ;
        ncl183 = 16 ;
        ncl184 = 209 ;
        ncl185 = 274 ;
        ncl186 = 1 ;
        ncl187 = 4 ;
        ncl188 = 209 ;
        ncl189 = 274 ;
        ncl190 = 1 ;
        ncl191 = 4 ;
        ncl192 = 209 ;
        ncl193 = 274 ;
        ncl194 = 1 ;
        ncl195 = 4 ;
        ncl196 = 209 ;
        ncl197 = 274 ;
        ncl198 = 1 ;
        ncl199 = 4 ;
        ncl200 = 209 ;
        ncl201 = 274 ;
        ncl202 = 1 ;
        ncl203 = 209 ;
        ncl204 = 274 ;
        ncl205 = 1 ;
        ncl206 = 209 ;
        ncl207 = 274 ;
        ncl208 = 1 ;
        ncl209 = 209 ;
        ncl210 = 274 ;
        ncl211 = 1 ;
        ncl212 = 209 ;
        ncl213 = 274 ;
        ncl214 = 1 ;
        ncl215 = 209 ;
        ncl216 = 274 ;
        ncl217 = 1 ;
        ncl218 = 209 ;
        ncl219 = 274 ;
        ncl220 = 1 ;
        ncl221 = 209 ;
        ncl222 = 274 ;
        ncl223 = 1 ;
        ncl224 = 1 ;
        ncl225 = 1 ;
        ncl226 = 1 ;
        ncl227 = 1 ;
        ncl228 = 1 ;
        ncl229 = 209 ;
        ncl230 = 274 ;
        ncl231 = 1 ;
        ncl232 = 209 ;
        ncl233 = 274 ;
        ncl234 = 1 ;
        ncl235 = 209 ;
        ncl236 = 274 ;
        ncl237 = 1 ;
        ncl238 = 209 ;
        ncl239 = 274 ;
        ncl240 = 1 ;
        ncl241 = 209 ;
        ncl242 = 275 ;
        ncl243 = 1 ;
        ncl244 = 210 ;
        ncl245 = 274 ;
        ncl246 = 1 ;
        ncl247 = 209 ;
        ncl248 = 274 ;
        ncl249 = 1 ;
        ncl250 = 209 ;
        ncl251 = 274 ;
        ncl252 = 1 ;
        ncl253 = 209 ;
        ncl254 = 275 ;
        ncl255 = 1 ;
        ncl256 = 209 ;
        ncl257 = 275 ;
        ncl258 = 1 ;
        ncl259 = 210 ;
        ncl260 = 274 ;
        ncl261 = 1 ;
        ncl262 = 210 ;
        ncl263 = 274 ;
        ncl264 = 1 ;
        ncl265 = 210 ;
        ncl266 = 274 ;
        ncl267 = 1 ;
        ncl268 = 209 ;
        ncl269 = 274 ;
        ncl270 = 1 ;
        ncl271 = 209 ;
        ncl272 = 274 ;
        ncl273 = 1 ;
        ncl274 = 209 ;
        ncl275 = 274 ;
        ncl276 = 1 ;
        ncl277 = 209 ;
        ncl278 = 274 ;
        ncl279 = 1 ;
        ncl280 = 209 ;
        ncl281 = 274 ;
        ncl282 = 1 ;
        ncl283 = 209 ;
        ncl284 = 274 ;
        ncl285 = 1 ;
        ncl286 = 49 ;
        ncl287 = 1 ;
        ncl288 = 49 ;
        ncl289 = 1 ;
        ncl290 = 49 ;
        ncl291 = 1 ;
        ncl292 = 49 ;
        ncl293 = 1 ;
        ncl294 = 1 ;
        ncl295 = 1 ;
        ncl296 = 1 ;
        ncl297 = 1 ;
        ncl298 = 1 ;
        ncl299 = 1 ;
        ncl300 = 1 ;
        ncl301 = 209 ;
        ncl302 = 275 ;
        ncl303 = 1 ;
        ncl304 = 209 ;
        ncl305 = 275 ;
        ncl306 = 1 ;
        ncl307 = 210 ;
        ncl308 = 274 ;
        ncl309 = 1 ;
        ncl310 = 210 ;
        ncl311 = 274 ;
        ncl312 = 1 ;
        ncl313 = 209 ;
        ncl314 = 274 ;
        ncl315 = 1 ;
        ncl316 = 209 ;
        ncl317 = 274 ;
        ncl318 = 1 ;
        ncl319 = 209 ;
        ncl320 = 274 ;
        ncl321 = 1 ;
        ncl322 = 209 ;
        ncl323 = 274 ;
        ncl324 = 1 ;
        ncl325 = 209 ;
        ncl326 = 274 ;
        ncl327 = 1 ;
        ncl328 = 209 ;
        ncl329 = 274 ;
        ncl330 = 1 ;
        ncl331 = 1 ;
        ncl332 = 209 ;
        ncl333 = 274 ;
        ncl334 = 1 ;
        ncl335 = 209 ;
        ncl336 = 274 ;
variables:
        char Times(Time, DateStrLen) ;
        float XLAT(Time, south_north, west_east) ;
                XLAT:FieldType = 104 ;
                XLAT:MemoryOrder = "XY " ;
                XLAT:description = "LATITUDE, SOUTH IS NEGATIVE" ;
                XLAT:units = "degree_north" ;
                XLAT:stagger = "" ;

。。。。。。。。。。。。。。。。。。。。
------------------------------------------------------------------------

请教,这个怎么将这些多余的维数变量在源文件中给删除掉?

谢谢
密码修改失败请联系微信:mofangbao
发表于 2015-8-26 08:51:19 | 显示全部楼层
除了定义变量维数的方法外,可以修改程序
在计算ss之前, 令
ss=ff3->$varnames3(i)$;;
这样可以把变量的属性赋值到ss, 另外可以尝试用nco来操作netcdf文件
密码修改失败请联系微信:mofangbao
回复 支持 1 反对 0

使用道具 举报

发表于 2015-8-26 00:02:51 | 显示全部楼层
变量维数定义名字
密码修改失败请联系微信:mofangbao
 楼主| 发表于 2015-8-26 09:06:29 | 显示全部楼层
yanhp2009 说的方法可行,谢谢
密码修改失败请联系微信:mofangbao
发表于 2015-8-26 09:10:14 | 显示全部楼层
LZ 的意思应该是只对 wrfinput 变量的数值进行修改,不对坐标、属性等进行修改。
那么在最后一步 赋值时,可以试试使用 (/  /) ,

     do i=1,varlens-1
         print(i+"  "+varnames3(i)+"  "+varnames1(i)+"  "+varnames2(i))
         ss=(ff3->$varnames3(i)$) + (ff1->$varnames1(i)$) - (ff2->$varnames2(i)$)
         ff3->$varnames3(i)$=(/ ss /)
         delete(ss)
     end do

如果没有(/ /) ,之前的脚本会将 wrfinput 中的变量 全部变成 ss ,所以会维数什么的全变了。
加上 (/ /) ,就只对变量的数值进行改变,其他都没有变。
密码修改失败请联系微信:mofangbao
 楼主| 发表于 2015-8-26 09:13:21 | 显示全部楼层
夏朗的芒果 的方法也可行
密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Copyright ©2011-2014 bbs.06climate.com All Rights Reserved.  Powered by Discuz! (京ICP-10201084)

本站信息均由会员发表,不代表气象家园立场,禁止在本站发表与国家法律相抵触言论

快速回复 返回顶部 返回列表