NCL 按经纬度范围截取nc文件

本文所用代码基于Linux系统
用ChatGPT写了一个范本然后自己改吧了一下,感觉ChatGPT写的代码还是只有框架,里面的细节十分差劲,不知道是我的指令不行还是我们冷门学科给的训练量不够

begin
	fpath = "/ncep_6h/"
	com = (/"uwnd","vwnd"/)
	
	lat_min = -31.0   ; Minimum latitude
    lat_max = 31.0    ; Maximum latitude
  	lon_min = 122.0     ; Minimum longitude
 	lon_max = 284.0   ; Maximum longitude

	do t=2010,2010
	do c=0,1	
	fname := fpath+com(c)+".10m.gauss."+t+".nc"
	f=addfile(fname,"r")
	lat  := f->lat
	lon  := f->lon
 	lat_indices = lat({lat_min:lat_max})
  	lon_indices = lon({lon_min:lon_max})
	ti := f->time
	print("interpolation begion")
	tmp = f->$com(c)$(:,{lat_min:lat_max}, {lon_min:lon_max})
  	tl := dimsizes(ti)	
  	latl := dimsizes(lat_indices)	
  	lonl := dimsizes(lon_indices)
  	data1 := tofloat(tmp)
  	data_out := reshape(data1,(/tl, 1, latl, lonl/)) 
	data_out!0="time"
	data_out!1="level"
	data_out!2="lat"
	data_out!3="lon"
	copy_VarAtts(tmp,data_out)
	print("interpolation end")
	f_out = addfile(com(c)+".10m.gauss.test."+t+".nc","c")
	f_out->$com(c)$ = data_out(:,:,:,:)
	f_out->lat = lat_indices
	f_out->lon = lon_indices
	end do
	end do
end
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值