- 积分
- 22666
- 贡献
-
- 精华
- 在线时间
- 小时
- 注册时间
- 2011-12-3
- 最后登录
- 1970-1-1
|
GrADS
系统平台: |
|
问题截图: |
|
问题概况: |
实际操作中,用cressman插值后的极射投影只显示一半 |
我看过提问的智慧: |
看过 |
自己思考时长(天): |
1 |
登录后查看更多精彩内容~
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
本帖最后由 Jillou娄 于 2014-5-6 08:16 编辑
写了一段代码如下,但用Cressman插值后的格点只有一半,不知道如何通过设置显示另一半,求高人指点.......这是两个warning,但没有fatal error:
warning:_NhlCreateSplineCoordApprox: Attempt to create spline approximation for X axis failed: consider adjusting trXTensionF value
warning:IrTransInitialize: error creating spline approximation for trXCoordPoints; defaulting to linear
难道是由于极射投影不可以通过Cressman这种线性插值来实现???
lon=stringtofloat(str_get_field(argu1,1,delim)) ;LON
lat=stringtofloat(str_get_field(argu1,2,delim)) ;LAT
h500_p1=stringtofloat(str_get_field(argu1,3,delim)) ;DATA
lon@units="degree_east"
lat@units="degree_north"
;;;;;;;;Cressman interpolation;;;(station to grid: using cressman interpolation);;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;lat is from 0S-90N,lon is from 0E-355E(19*72)
;olat is from 0S-90N,lon is from 0-358E()
olon=new(181,"float")
olat=new(46,"float")
h500_p1_grid=new((/46,181/),"float")
do i=0,180
olon(i)=2*i
end do
do i=0,45
olat(i)=2*i
end do
printVarSummary(olon)
printVarSummary(olat)
olon!0="lon" ;svd1(LAT,LON)
olon@units="degree_east"
olon&lon=olon
olat!0="lat"
olat@units="degree_north"
olat&lat=olat
h500_p1_grid@_FillValue=-999
rscan=(/10,9,8/)
h500_p1_grid=obj_anal_ic_deprecated(lon,lat,h500_p1,olon,olat,rscan,False)
printVarSummary(h500_p1_grid)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;plot;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
wks = gsn_open_wks("pdf","500hpa_jja_p1_NH")
gsn_define_colormap(wks,"BlAqGrYeOrReVi200")
res = True
res@tiMainString ="h500_jja_NH_p_1 "
res@cnInfoLabelOn = False
res@cnFillOn = True ;turn off linefill
res@cnLinesOn = False
res@gsnPolar = "NH"
res@mpMinLatF = 0
;res@cnLevelSelectionMode = "ExplicitLevels"
;res@cnLevels = 0.5
; res@gsnDraw = False ; do not draw picture
;res@gsnFrame = False ; do not advance frame
res@AddCyclic=True
plot= gsn_csm_contour_map_polar(wks,h500_p1_grid,res)
解决方法:
由于极射投影360°和0°是一条线,为避免插值错误,差值点最好小于360度
修改的地方单列出来:
olon=new(180,"float")
olat=new(46,"float")
h500_p1_grid=new((/46,180/),"float")
do i=0,179
olon(i)=2*i
end do
do i=0,45
olat(i)=2*i
end do
OK同时在坛友的建议下将Cressman插值命令“obj_anal_ic_deprecated”换成“obj_anal_ic”或"obj_anal_ic_Wrap"
如果差值不成功,可以试着调整rscan,即影响半径
h500_p1_grid=obj_anal_ic_deprecated(lon,lat,h500_p1,olon,olat,rscan,False)
奇怪的是,它们的pattern居然变化了。。。OoO
|
|