爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 5999|回复: 8

各位大神,怎么在ncl上画沿着两个点的经纬度剖面图

[复制链接]

新浪微博达人勋

发表于 2020-6-10 16:34:20 | 显示全部楼层 |阅读模式

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

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

x
load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_code.ncl"
load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_csm.ncl"
load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/contributed.ncl"
;************************************
begin
in = addfile("200310.nc","r")
T = in->t
FT = short2flt(T)-273.15
copy_VarCoords(T,FT)
;************************************
; calculate great circle along transect
;************************************
  leftlat  =  40
  rightlat =  42.7
  leftlon  =  -71.3
  rightlon =  -70

  npts     =  10                    ; number of points in resulting transect

  dist     = gc_latlon(leftlat,leftlon,rightlat,rightlon,npts,2)
  points   = ispan(0,npts-1,1)*1.0
;********************************
; interpolate data to great circle
;********************************
  trans   = linint2_points(T&longitude,T&latitude,T,True,dist@gclon,dist@gclat,2)
  copy_VarAtts(T,trans)          ; copy attributes

  ;trans!0      = "z_T"           ; create named dimension and assign
  ;trans&z_T    = T&time           ; coordinate variable for 0th dimension only
  trans!1 = "level"
  trans&level =T&level
  trans@_FillValue = T@missing_value
  trans@scale_factor = T@scale_factor
  ;trans = trans*trans@scale_factor
;********************************
; create plot
;********************************
  wks = gsn_open_wks("png","trans")       ; send graphics to PNG file


  gsn_define_colormap(wks,"rainbow")
  res                     = True          ; plot mods desired
  res@tmXBMode            = "Explicit"    ; explicitly label x-axis
  res@tmXBValues          = (/points(0),points(npts-1)/) ; points to label
; label values
  res@tmXBLabels          = (/leftlat +", "+leftlon,rightlat+", "+rightlon/)

  res@cnFillOn            = True         ; turn on color
  res@lbLabelAutoStride   = True         ; nice label bar label stride
  res@gsnSpreadColors     = True         ; use full range of colormap
  res@cnLinesOn           = True        ; turn off countour lines
  res@lbOrientation       = "vertical"   ; vertical label bar
  res@pmLabelBarOrthogonalPosF = -0.05        ; move label bar closer to plot

  res@tiMainString        = "Transect"   ; add title
  res@tiXAxisString       = "lat/lon along transect"
  res@trYReverse          = True         ; reverse y axis
;  res@trXReverse          = True         ; reverse x axis (neg longitudes)
; res@cnLevelSpacingF     = 1.0          ; set contour spacing

  plot = gsn_csm_contour(wks,trans,res)  ; create plot

end
这是我参照ncl官网的例子写的脚本,但是出现报错,不知道这个报错是什么意思?
gsn_csm_contour: Fatal: the input data array must be 1D or 2D
fatal:Illegal right-hand side type for assignment
fatal:["Execute.c":8637]:Execute: Error occurred at or near line 61 in file V-profile.ncl


密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2020-6-10 16:51:58 | 显示全部楼层
密码修改失败请联系微信:mofangbao
回复

使用道具 举报

新浪微博达人勋

发表于 2020-6-10 16:57:45 | 显示全部楼层
这个绘图例子的官网网址可以分享一下吗
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2020-6-10 18:04:26 | 显示全部楼层
lc2016 发表于 2020-6-10 16:57
这个绘图例子的官网网址可以分享一下吗

http://www.ncl.ucar.edu/Applications/transect.shtml
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2020-6-10 20:11:18 | 显示全部楼层
密码修改失败请联系微信:mofangbao
回复

使用道具 举报

新浪微博达人勋

发表于 2020-6-11 21:30:16 | 显示全部楼层
数据不对?要1维2维数据,你是不是维度更多了?
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2020-6-11 21:40:04 | 显示全部楼层
数据不对?要1维2维数据,你是不是维度更多了? 感觉你这数据应该至少是3维.TIME 、lat、lon。你要沿着lon维度剖面的话,那你的数据就要指定成T = in->t(0,0,:)这样试试
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2020-6-13 15:43:07 | 显示全部楼层
t_imba 发表于 2020-6-11 21:40
数据不对?要1维2维数据,你是不是维度更多了? 感觉你这数据应该至少是3维.TIME 、lat、lon。你要沿着lon ...

好的,谢谢老哥,我试试
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2020-6-13 23:06:59 | 显示全部楼层
官网是这样的datax   = linint2_points_Wrap(data1&lon,data1&lat,data1(nt,:,:,:), False \ ,dist@gclon, dist@gclat, 2),nt是有值的,他其实是画了某一个时刻的,你这个输出的结果是多个时刻的,最后改一下,
plot = gsn_csm_contour(wks,trans(0,:,:),res)  ; create plot
大概就是这个意思吧,因为官网那个代码是连续的,那个nt是一个数。
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

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

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

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