[ncl-talk] Problem of using "get_isolines"

王淼 miaowang2015 at pku.edu.cn
Thu Jun 1 22:42:50 MDT 2017


Hi Dave,
    Many thanks for the explanation of this problem . It do help me understand this function better!
Best regards,
    Miao




-----原始邮件-----
发件人:"David Brown" <dbrown at ucar.edu>
发送时间:2017-06-02 07:16:50 (星期五)
收件人: "王淼" <miaowang2015 at pku.edu.cn>
抄送: "ncl-talk at ucar.edu" <ncl-talk at ucar.edu>
主题: Re: [ncl-talk] Problem of using "get_isolines"


The reason get_isolines returns longitudes that vary in the longitude cycle (-180 - 180) or (0,360) or (0- -360) is so that it can avoid discontinuities in the sequence of numbers, which is important for some applications. 
Instead of returning a sequence like (178, 179, 180, -179), it simply continues the sequence (178, 179, 180, 181).  The NCL map plotting code accepts as valid longitudes any number between -540 and +540, so returning the values this way is not at all a problem for NCL plotting, although admittedly there are situations where it is best to have the numbers confined to a single longitude cycle.
If you do need to get to a single cycle you can do it using the where function. Assuming you want to confine the values to the range -180 - 180, then these two statements should do it for you, assuming that lon is assigned the x value returned from get_isolines:


lon = where(lon .gt. 180, lon - 360, lon) 
lon = where(lon .lt. -180, lon + 360, lon)


Hope this helps.
 -dave


On Thu, Jun 1, 2017 at 3:16 PM, Mary Haley <haley at ucar.edu> wrote:

Hi,


We were looking into this problem using a different example, and seeing some odd results.


Is it possible for you to provide us with the pt.nc file?


You can use our ftp, if the file is not too large:


http://www.ncl.ucar.edu/report_bug.shtml#HowToFTP



Thanks,


--Mary




On Tue, May 30, 2017 at 8:17 PM, 王淼 <miaowang2015 at pku.edu.cn> wrote:

Hi Ncl Talk,
   I used get_isolines to get the points that define a contour line .When I printed the longitude of these points ,  the distribution of the longitude wasn't the same(gonna show in the following example) ,may be [0~-360] or [20~-340],etc. I have expected the function may return the longitude as [0~360] or [-180~180]. I googled it ,but didn't help.I still don't know what caused the effect, so I ask you for help. Thanks!


Here is the code and resluts:


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"
load "$NCARG_ROOT/lib/ncarg/nclscripts/contrib/cd_string.ncl"


begin


f1=addfile("pt.nc","r")         ;pt(time,lat,lon)
pt=short2flt(f1->pt)              
pt=lonFlip(pt)                  ;lon=0~360degrees   


n=dimsizes(pt&time)




  wks = gsn_open_wks("pdf","sypt_all")        
  
  res                      = True         
  res at gsnDraw              = False
  res at gsnFrame             = False


  res at cnFillOn             = False         
  res at cnLinesOn            = True      


  res at cnLevelSelectionMode   = "ExplicitLevels"   
  res at cnLevels              = (/350,360/) 


  
  res at mpMinLatF            = 0         
  res at mpCenterLonF         =180           
res at trGridType = "TriangularMesh"   




do i = 0, n-1                                           ;time
    plot=gsn_csm_contour_map_ce(wks, pt(i,:,:), res)  
    
     isolines = get_isolines(plot at contour,"plot")   
     
    do j= 0, ListCount(isolines) - 1
      iso := isolines[j]             
      
      idx=maxind(iso at n_points)
      b = iso at start_point(idx)          
      e = b + iso at n_points(idx) - 1       
      y := iso(0,b:e)                  
      x := iso(1,b:e)                   ;y=lat,x=lon
      print(x)
    end do
end do
end 


| result1 | result2 |
| 0 | 0 |
| -1.8 | -1.3 |
| -2.5 | -2.5 |
|      … |      … |
| -358.9 | -339.8 |
| -359.7 | -340 |
| -360 |      … |
| | 20 |
| | 18.6 |
| |      … |
| | 2.5 |
| | 0.5 |
| | 0 |





ncl-talk mailing list
ncl-talk at ucar.edu
List instructions, subscriber options, unsubscribe:
http://mailman.ucar.edu/mailman/listinfo/ncl-talk

_______________________________________________
ncl-talk mailing list
ncl-talk at ucar.edu
List instructions, subscriber options, unsubscribe:
http://mailman.ucar.edu/mailman/listinfo/ncl-talk





_______________________________________________
ncl-talk mailing list
ncl-talk at ucar.edu
List instructions, subscriber options, unsubscribe:
http://mailman.ucar.edu/mailman/listinfo/ncl-talk


-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mailman.ucar.edu/pipermail/ncl-talk/attachments/20170602/85e31020/attachment.html 


More information about the ncl-talk mailing list