爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 7115|回复: 5

极射投影如何在插值后·显示另一半

[复制链接]
发表于 2014-5-4 21:57:29 | 显示全部楼层 |阅读模式
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
3.png
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




密码修改失败请联系微信:mofangbao
发表于 2014-5-4 22:03:12 | 显示全部楼层
本帖最后由 longlivehj 于 2014-5-4 22:04 编辑

红色
密码修改失败请联系微信:mofangbao
回复

使用道具 举报

发表于 2014-5-4 22:05:18 | 显示全部楼层
好专业啊!
密码修改失败请联系微信:mofangbao
回复

使用道具 举报

 楼主| 发表于 2014-5-4 22:06:42 | 显示全部楼层

什么意思?????
密码修改失败请联系微信:mofangbao
发表于 2014-5-4 22:20:55 | 显示全部楼层
Jillou娄 发表于 2014-5-4 22:06
什么意思?????

不好意思,没编辑完,小手一抖,就发出去了。
现在看到已经解决了,厉害!
建议不要采用obj_anal_ic_deprecated,“deprecated”,从源码也可以看到,它对cressman插值的实现是不完整的。现在有了obj_anal_ic_Wrap和obj_anal_ic,用于替换你程序中的版本。
密码修改失败请联系微信:mofangbao
发表于 2014-5-5 14:38:16 | 显示全部楼层
谢谢lz的分享  
密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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