爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 6359|回复: 3

[其他] ncl中的赋值语句不起作用.....

[复制链接]
发表于 2015-11-18 21:01:35 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 东风急流 于 2015-11-20 10:52 编辑

现在想用卫星资料的地表温度二进制数据(TSK1.dat)去替换wrfrst中的地表温度TSK,TSK1.dat数据是我们自己写入的300*400数组,用绘图如下
未命名.jpg
这里的边界在差值的时候出现了一些小值,因此想在替换的时候做一个判断:小于250K的不错替换
我的ncl程序如下:


;======================================================
; This script is used to read a binary file and write the var to the netCDF file.
;======================================================
begin
    nx=300
    ny=400
    a=addfile("/home/lw/soil/TSK/wrfrst_d01_2013-07-02_12:30:00.nc","w")
    tsk=new((/1,nx,ny/),"float")
    tsk=a->TSK
  print(tsk(0,160,20)) ;打印替换前的变量值
  ;delete(tsk@_FillValue)

    tsk1=new((/nx,ny/),"float")
    tsk1=fbindirread("/home/lw/soil/TSK/TSK1.dat",0,(/nx,ny/),"float")   
  print(tskl(160,20))  打印要去做替换的值
  delete(tsk1@_FillValue)
;-----------------------
; change the field  
;-----------------------
   do i=1,300,1
     do j=1,400,1
       if(tsk1(i-1,j-1).gt.250) then
         tsk(0,i-1,j-1)=tsk1(i-1,j-1)
       end if
      enddo                                                                                                                                                                                       
   end do
  print(tsk(0,160,20))打印替换后的变量值
;-----------------------
;write the field
;-----------------------
   a->TSK=tsk
end

运行后最后显示数据没有被替换:
Copyright (C) 1995-2013 - All Rights Reserved
University Corporation for Atmospheric Research
NCAR Command Language Version 6.1.2
The use of this software is governed by a License Agreement.
See http://www.ncl.ucar.edu/ for more details.

Variable: tsk (subsection)
Type: float
Total Size: 4 bytes
            1 values
Number of Dimensions: 1
Dimensions and sizes: [1]
Coordinates:
Number Of Attributes: 7
  _FillValue : 9.96921e+36
  FieldType : 104
  MemoryOrder : XY
  description : SURFACE SKIN TEMPERATURE
  units : K
  stagger :
  coordinates : XLONG XLAT
(0) 9.96921e+36

Variable: tskl (subsection)
Type: float
Total Size: 4 bytes
            1 values
Number of Dimensions: 1
Dimensions and sizes: [1]
Coordinates:
(0)  313.9202

Variable: tsk (subsection)
Type: float
Total Size: 4 bytes
1 values
Number of Dimensions: 1
Dimensions and sizes: [1]
Coordinates:
Number Of Attributes: 7
_FillValue : 9.96921e+36
FieldType : 104
MemoryOrder : XY
description : SURFACE SKIN TEMPERATURE
units : K
stagger :
coordinates : XLONG XLAT
(0) 9.96921e+36


大家帮帮忙吧~~



密码修改失败请联系微信:mofangbao
发表于 2015-11-20 10:58:32 | 显示全部楼层

回帖奖励 +1 金钱

缺测值不参加计算,只有非缺测值才会替换掉,楼主不应该把delete(tsk@_FillValue)
注释掉,且楼主可以用where更简洁一些,tsk(0,:,:)=where(tsk1.gt.250, tsk1,tsk(0,:,:).
密码修改失败请联系微信:mofangbao
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2015-11-20 11:25:49 | 显示全部楼层
pxqxjy 发表于 2015-11-20 10:58
缺测值不参加计算,只有非缺测值才会替换掉,楼主不应该把delete(tsk@_FillValue)
注释掉,且楼主可以用wh ...

谢谢,确实不该这样。这个where函数挺好用的啊,收入啦~~
密码修改失败请联系微信:mofangbao
发表于 2016-1-6 19:29:22 | 显示全部楼层
好想法
密码修改失败请联系微信:mofangbao
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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