[ncl-talk] a question about assigning value mode?

dyjbean at gmail.com dyjbean at gmail.com
Wed Oct 22 04:09:55 MDT 2014


i'm processing merra-land daily production, the variable latitude and longitude are both double. 
the below is my code : 

+++++++++++++++++++++++++++++++++++++++++++++++++++ 
1 load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_code.ncl" 
2 load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_csm.ncl" 
3 load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/contributed.ncl" 
4 load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/shea_util.ncl" 
5 
6 begin 
7 files = systemfunc("sh sortname.sh") 
8 setfileoption("nc","Format","LargeFile") 
9 fallvars = addfiles(files,"r") 
10 ListSetType(fallvars,"cat") 
11 runoff = fallvars[:]->runoff 
12 slat = fallvars[:]->latitude(0:360) 
13 slon = fallvars[:]->longitude(0:539) 
14 
15 dims=dimsizes(runoff) 
16 
17 lat=new((/dims(1)/),float,"No_FillValue") 
18 lon=new((/dims(2)/),float,"No_FillValue") 
19 time=new((/dims(0)/),integer,"No_FillValue") 
20 srunoff=new((/dims(2),dims(1),dims(0)/),float,runoff at _FillValue) 
21 
22 lon!0="lon" 
23 lon at long_name="longitude" 
24 lon at units="degrees-east" 
25 lon=tofloat(slon) 
26 print(slon(0)+" "+slon(539)) 
27 print(lon(0)+" "+lon(539)) 
28 
29 lat!0="lat" 
30 lat at long_name="latitude" 
31 lat at units="degrees-north" 
32 lat=tofloat(slat) 
33 
34 time!0="time" 
35 time at long_name="time" 
36 time at units="days since 1980-1-1 0" 
37 time=yyyymm_time(1980,2013,"integer") 
38 
39 srunoff!0="lon" 
40 srunoff!1="lat" 
41 srunoff!2="time" 
42 srunoff&lon=lon 
43 srunoff&lat=lat 
44 srunoff&time=(/time/) 
45 srunoff at units = "kg.m-2.s-1" 
46 srunoff at long_name = "Overland runoff" 
47 ;srunoff=(/runoff(longitude|:,latitude|:,time|:)/) 
48 do i=0,dims(0)-1 
49 do j=0,dims(1)-1 
50 do k=0,dims(2)-1 
51 srunoff(k,j,i)=(/runoff(i,j,k)/) 
52 end do 
53 end do 
54 end do 
55 
56 printVarSummary(runoff) 
57 printVarSummary(srunoff) 
58 end 
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++= 
in the line 25,32,37, if i change them with the following fashion: 

lon&lon=tofloat(slon) 
lat&lat=tofloat(slat) 
time&time=yyyymm_time(1980,2013,"integer") 

then, the wrong result will generate from line 26 and 27, 
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 

(0) -180 179.3333282470703 
(0) -254807 0 

...... 

Variable: srunoff 
Type: float 
Total Size: 318142080 bytes 
79535520 values 
Number of Dimensions: 3 
Dimensions and sizes: [lon | 540] x [lat | 361] x [time | 408] 
Coordinates: 
lon: [-180..179.3333] 
lat: [-90..90] 
time: [-931605192..0] 
Number Of Attributes: 3 
long_name : Overland runoff 
units : kg.m-2.s-1 
_FillValue : 1e+15 

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

if i change them with direct assignment, like the line 25,32,37,the right result will appear 
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 
(0) -180 179.3333282470703 
(0) -180 179.333 


Variable: srunoff 
Type: float 
Total Size: 318142080 bytes 
79535520 values 
Number of Dimensions: 3 
Dimensions and sizes: [lon | 540] x [lat | 361] x [time | 408] 
Coordinates: 
lon: [-180..179.3333] 
lat: [-90..90] 
time: [198001..201312] 
Number Of Attributes: 3 
long_name : Overland runoff 
units : kg.m-2.s-1 
_FillValue : 1e+15 

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

i want to know why the "lon&lon, lat&lat, time&time" style gave wrong results? 

thanks


dyjbean at gmail.com
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mailman.ucar.edu/pipermail/ncl-talk/attachments/20141022/dda463bc/attachment.html 
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: image/jpeg
Size: 46225 bytes
Desc: not available
Url : http://mailman.ucar.edu/pipermail/ncl-talk/attachments/20141022/dda463bc/attachment.jpe 


More information about the ncl-talk mailing list