- 积分
- 3652
- 贡献
-
- 精华
- 在线时间
- 小时
- 注册时间
- 2015-4-22
- 最后登录
- 1970-1-1
|
发表于 2017-5-23 22:41:00
|
显示全部楼层
您好!请问您一个问题,我新建了一个格点数组,并按照您给的方法给维度赋值
avetasi = new((/nlati,nloni/),"float")
lat = latGlobeF(nlati, "lat", "latitude", "degrees_north")
print(lat)
avetasi!0 = "lat"
avetasi&lat = lat
lon = lonGlobeF(nloni, "lon", "longitude", "degrees_east")
avetasi!1 = "lon"
avetasi&lon = lon
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
if (i .eq. 4)then
avetasi = dim_avg_n(tasi(:1592,:,:),0)-273.15
else
avetasi = dim_avg_n(tasi,0)-273.15
end if
printVarSummary(avetasi)
; print(avetasi)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; 调整平均后的数据经度位置适合地图
newtasi = new((/nlati,nloni/),"float")
lni = nloni - 1 ;less 1 nloni
hni = nloni / 2 ;half nloni
hlni = hni - 1 ;half less 1 nloni
; print(hlni)
; print(hni)
; print(lni)
newtasi(:,0:hlni) = avetasi(:,hni:lni)
newtasi(:,hni:lni) = avetasi(:,0:hlni)
printVarSummary(newtasi)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; 取东亚面积
EA_newtasi = newtasi({20:50},{75:150})
printVarSummary(EA_newtasi)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
其中之所以要调整数据经度位置,是因为我的数据和ncl默认世界地图在经度上不匹配,相差180度
而我把经度调整后,执行、报错如下
Variable: newtasi
Type: float
Total Size: 111360 bytes
27840 values
Number of Dimensions: 2
Dimensions and sizes: [lat | 145] x [lon | 192]
Coordinates:
lat: [-90..90]
lon: [180..178.125]
Number Of Attributes: 1
_FillValue : 9.96921e+36
fatal:NclOneDValGetRangeIndex: Non-monotonic coordinate value being used, can't complete coordinate subscript
fatal:Could not obtain coordinate indexes, unable to perform subscript
fatal:["Execute.c":8640]:Execute: Error occurred at or near line 143 in file draw_EA_tas.ncl
错误位置也就是选取东亚经纬度的这一句
EA_newtasi = newtasi({20:50},{75:150})
之所以是选取经纬度而不是格点,是应为各种模拟结果的格点不一
而在之前没有给数组赋值维度,报错总是出现newtasi的第一维没有命名以致变量坐标有误。
所以想请您帮忙,在脚本已经写成这样的情况下,如何解决上述错误?
同时也想请您指点,如何解决一直困扰我的数据和地图相差180°的问题?
|
|