[ncl-talk] Trying to draw circles with different radius in Km around a station

Dennis Shea shea at ucar.edu
Thu Feb 8 20:54:14 MST 2018


Oops!



On Thu, Feb 8, 2018 at 8:53 PM, Dennis Shea <shea at ucar.edu> wrote:

> NCL has had several requests for 'circle drawing' over a map'. Often, this
> would be used in combination with 'gc_inout'.
>
>          https://www.ncl.ucar.edu/Document/Functions/Built-in/
> gc_inout.shtml
>
> Example:
>          http://www.ncl.ucar.edu/Applications/unique.shtml
>          See: Katrina_circle.ncl
>
> ---
> Also, for tracking a moving storm: multiple times & center locations.
> ------------------------------------------------------------
> ------------------------------------
>
> Attached is a beta version of a function , tentatively named:
> circle_around_geolocation
>
> There is no documentation ... yet. However, the function has internal
> documentation.
>
> Hopefully, this will be distributed with 6.5 0
>
> ------------------------------------------------------------
> ---------------------------------------
>
>
> On Thu, Feb 8, 2018 at 1:55 PM, Alan Brammer <abrammer at albany.edu> wrote:
>
>> Flip the lat and lon arguments in gsn_add_polyline function.   Almost all
>> the gsn_add functions take longitude before latitude.
>>
>> gsn_add_polyline(wks, plot(ii),  Rlon(cc,:), Rlat(cc,:),  plres)
>>
>> On Thu, Feb 8, 2018 at 3:41 PM, Soumik Basu <sbasu at alaska.edu> wrote:
>>
>>> Hi,
>>>
>>> I got the first part working but the circles are not showing up in the
>>> plot. I used "gsn_add_polyline" to draw the circle.
>>>
>>> Is it wrong to use gsn_add_polyline for drawing the circle?
>>>
>>> Here is the plotting part of the code.
>>>
>>> ; *********************************
>>> ; Draw circle
>>> ;**********************************
>>>
>>> ;---One station
>>>
>>>    slat     = 70.192               ; station lat
>>>    slon     = -148.477             ; station lon
>>>    srad_km  = (/ 50, 100, 150, 200, 250/)*1.0  ; station radii (km)
>>>    km2deg   = 1/110.57             ; conversion factor: deg ==> km
>>>                                    ; one degree is approximately 110.57
>>> km.
>>>    srad_dg  = srad_km*km2deg       ; km ==> deg; nggcog requires degrees
>>>
>>>    Nrad = dimsizes(srad_dg)        ; # of radii
>>>    Npts = 360                      ; # of points at each radii
>>> (arbitrary)
>>>
>>>    Rlat = new((/Nrad, Npts/), "float")    ; lat at each radius
>>>    Rlon = new((/Nrad, Npts/), "float")
>>>
>>>    do nr=0,Nrad-1
>>>       print("nr="+nr+" srad_km="+srad_km(nr)+";   srad_dg="+srad_dg(nr))
>>>       print("")
>>>
>>>       nggcog(slat, slon, srad_dg(nr), Rlat(nr,:), Rlon(nr,:))
>>>
>>>       print(Rlat(nr,:)+"   "+ Rlon(nr,:))
>>>       print("========")
>>>    end do
>>>
>>> ;*************************************************
>>> ; Plot
>>> ;*************************************************
>>>   res                              = True
>>>
>>>   res at gsnSpreadColors              = True
>>>   res at gsnDraw                      = False                          ;
>>> don't draw
>>>   res at gsnFrame                     = False
>>> ;  res at gsnPolar                     = "NH"
>>>
>>>   res at cnFillOn                     = True
>>>   res at cnLinesOn                    = False
>>>   res at cnLevelSelectionMode         = "ManualLevels"
>>>   res at cnMinLevelValF               = 0
>>>   res at cnMaxLevelValF               = 30
>>>   res at cnLevelSpacingF              = 0.25
>>>   res at cnLineLabelsOn               = False
>>>
>>>   res at lbLabelStride                = 0.1
>>>   res at lbOrientation                = "horizontal"       ;vertical label
>>> bar
>>>   res at lbLabelBarOn                 = False
>>>
>>>   res at tmLabelAutoStride            = True
>>>   res at tmXTOn                       = False
>>>   res at tmYROn                       = False
>>>
>>>   res at mpProjection                 = "CylindricalEquidistant" ; choose
>>> map projection
>>>   res at mpLimitMode                  = "LatLon"
>>>   res at mpMinLatF                    = 60.
>>>   res at mpMaxLatF                    = 80.
>>>   res at mpMinLonF                    = 190.
>>>   res at mpMaxLonF                    = 230.
>>>   res at mpCenterLonF                 = 210
>>>   res at mpGeophysicalLineThicknessF  = 1.5
>>>
>>>   colors  = (/"gray0","gray2","gray10","gray40","gray50"/)
>>>
>>> ;*****************************************************
>>> ;               Plot
>>> ;*****************************************************
>>>
>>>   wks = gsn_open_wks("x11","extreme_wind_days_spatial")
>>>
>>>   plot   = new(12,graphic)
>>> ;  plot_c = new(12,graphic)
>>>
>>>   gsn_define_colormap(wks,"precip3_16lev")
>>>
>>>   do ii = 0,nmon-1
>>>
>>>   plot(ii)   = gsn_csm_contour_map(wks,wind_ext_count_1(ii,:,:),res)
>>>
>>>   do cc = 0,Nrad-1
>>>
>>>   plres = True
>>>
>>>   mks = unique_string("mks")
>>>
>>>   plres at gsLineColor = colors(cc)
>>>
>>>   plot@$mks$ = gsn_add_polyline(wks, plot(ii), Rlat(cc,:), Rlon(cc,:),
>>> plres)
>>>
>>>   end do
>>>
>>>   end do
>>>
>>>   resPanel                          = True
>>>   resPanel at gsnFrame         = False
>>>   resPanel at gsnSpreadColors             = True
>>>   resPanel at gsnPanelLabelBar         = True                       ; add
>>> color bar
>>>   resPanel at gsnMaximize                                      = True
>>>
>>>
>>>   resPanel at gsnPanelFigureStrings     = (/"Jan","Feb","Mar","Apr","May
>>> ","June","July","Aug","Sep","Oct","Nov","Dec"/)
>>>   resPanel at gsnPanelFigureStringsFontHeightF     = 0.012
>>>   resPanel at gsnPanelFigureStringsPerimOn     = True
>>>   resPanel at gsnPanelFigureStringsBackgroundFillColor = -1
>>>
>>>   resPanel at amJust                             = "BottomRight"
>>>
>>>   resPanel at lbLabelBarOn                       = True
>>>   resPanel at lbOrientation                      = "Vertical"
>>>   resPanel at lbLabelAutoStride            = False
>>>   resPanel at lbLabelStride             = 20
>>>   resPanel at lbBoxLineThicknessF                = 0.1
>>>   resPanel at lbLabelFontThicknessF              = 1.75
>>>   resPanel at lbLabelFontHeightF                 = 0.015
>>>   resPanel at lbBoxLinesOn                       = False
>>>
>>>   resPanel at gsnPanelMainString = "Test"
>>>
>>>   gsn_panel(wks,plot,(/4,3/),resPanel)
>>>
>>>   frame(wks)
>>>
>>>   end
>>>
>>> Thanks,
>>> Soumik
>>>
>>> On Thu, Feb 8, 2018 at 5:45 AM, Dennis Shea <shea at ucar.edu> wrote:
>>>
>>>> An alternative:
>>>>
>>>> nggog can be used. Sample code segments follow. For small radii
>>>> Npts=100 is fine but for large radii and nice circles, Npts=360 might be
>>>> better.
>>>>
>>>> ;===========================================================
>>>> ==============
>>>> ; On a sphere with radius 6371 km, one degree is approximately 110.57
>>>> km.
>>>> ;---
>>>> ; Of course, the earth is an oblate spheroid:
>>>> ;      http://www.longitudestore.com/how-big-is-one-gps-degree.html
>>>> ;===========================================================
>>>> ==============
>>>> ; https://www.ncl.ucar.edu/Document/Functions/Built-in/nggcog.shtml
>>>> ;===========================================================
>>>> ==============
>>>>
>>>> ;---One station
>>>>
>>>>    slat     = 0.0                  ; station lat
>>>>    slon     = 0.0                  ;         lon
>>>>    srad_km  = (/ 50, 100, 150, 5*110.57/)*1.0  ; station radii (km)
>>>>    km2deg   = 1/110.57             ; conversion factor: deg ==> km
>>>>                                    ; one degree is approximately
>>>> 110.57 km.
>>>>    srad_dg  = srad_km*km2deg       ; km ==> deg; nggcog requires degrees
>>>>
>>>>    Nrad = dimsizes(srad_dg)        ; # of radii
>>>>    Npts = 100                      ; # of points at each radii
>>>> (arbitrary)
>>>>
>>>>    Rlat = new((/Nrad, Npts/), "float")    ; lat at each radius
>>>>    Rlon = new((/Nrad, Npts/), "float")
>>>>
>>>>    do nr=0,Nrad-1
>>>>       print("nr="+nr+" srad_km="+srad_km(nr)+";   srad_dg="+srad_dg(nr))
>>>>       print("")
>>>>
>>>>       nggcog(slat, slon, srad_dg(nr), Rlat(nr,:), Rlon(nr,:))
>>>>
>>>>       print(Rlat(nr,:)+"   "+ Rlon(nr,:))
>>>>       print("========")
>>>>    end do
>>>>
>>>> +++++++++++++++++++++++++++++++++++++++++++++++++++++
>>>> ;---Multiple stations
>>>>
>>>>    slat     = (/ 0.0, 50.0     /)  ; station lat
>>>>    slon     = (/ 0.0, 30.0     /)  ;         lon
>>>>    srad_km  = (/ 50, 100, 150, 5*110.57/)*1.0  ; station radii (km)
>>>>    km2deg   = 1/110.57                ; conversion factor: deg ==> km
>>>>                                                     ; one degree is
>>>> approximately 110.57 km.
>>>>    srad_dg  = srad_km*km2deg   ; km ==> deg; nggcog requires degrees
>>>>    Nrad     = dimsizes(srad_dg)    ; # of radii
>>>>
>>>>    Nsta     = dimsizes(slat)            ; # stations
>>>>    Nrad     = dimsizes(srad)          ; # of radii
>>>>    Npts     = 100                            ; # of points at each
>>>> radii (arbitrary; eg 360)
>>>>
>>>>    Rlat = new((/Nsta, Nrad, Npts/), "float")    ; lat at each radius
>>>>    Rlon = new((/Nsta, Nrad, Npts/), "float")
>>>>
>>>>    do ns=0,Nsta-1
>>>>      do nr=0,Nrad-1
>>>>         nggcog(slat(ns), slon(ns), srad(nr), Rlat(ns,nr,:),
>>>> Rlon((ns,nr,:))
>>>>      end do
>>>>    end do
>>>>
>>>>
>>>> On Thu, Feb 8, 2018 at 2:38 AM, Karin Meier-Fleischer <
>>>> meier-fleischer at dkrz.de> wrote:
>>>>
>>>>> Hi Soumik,
>>>>>
>>>>> you can use polymarkers to plot the circles around lat/lon locations.
>>>>> Have a look at example newcolor_4.ncl at
>>>>> http://ncl.ucar.edu/Applications/Scripts/newcolor_4.ncl
>>>>>
>>>>> I've attached an example script using random data for marker size and
>>>>> lat/lon locations overlayed on filled contour map.
>>>>>
>>>>> Hope this helps.
>>>>>
>>>>> -Karin
>>>>>
>>>>> Am 08.02.18 um 00:55 schrieb Soumik Basu:
>>>>>
>>>>> Hello NCL-users,
>>>>>
>>>>> I am trying to draw circles around a station with different radius.
>>>>> For example 50 Km, 100 Km, 150 Km etc.
>>>>>
>>>>> So, I am wondering if there is any way to do it in NCL.
>>>>>
>>>>> I looked at the "nggcog" function but from the description what I
>>>>> understand is that it can draw circles along a great circle only not
>>>>> according to a given distance.
>>>>>
>>>>> Thank you for any help.
>>>>>
>>>>> Thanks,
>>>>> Soumik
>>>>>
>>>>> --
>>>>> --
>>>>> “We’ve all got both light and dark inside us. What matters is the part
>>>>> we choose to act on. That’s who we really are.” – J.K. Rowling
>>>>>
>>>>> ************************************************************
>>>>> **************************************
>>>>> Dr. Soumik Basu
>>>>> Post Doctoral Research Faculty
>>>>> International Arctic Research Center, UAF, Fairbanks, AK, USA
>>>>> PhD in Atmospheric Sciences
>>>>> M.Sc. in Atmospheric Sciences
>>>>> Email: suvro05 at gmail.com
>>>>> website: http://soumikbasu.weebly.com/
>>>>>
>>>>> ************************************************************
>>>>> ***************************************
>>>>>
>>>>>
>>>>> _______________________________________________
>>>>> ncl-talk mailing listncl-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
>>>>
>>>>
>>>
>>>
>>> --
>>> --
>>> “We’ve all got both light and dark inside us. What matters is the part
>>> we choose to act on. That’s who we really are.” – J.K. Rowling
>>>
>>> ************************************************************
>>> **************************************
>>> Dr. Soumik Basu
>>> Post Doctoral Research Faculty
>>> International Arctic Research Center, UAF, Fairbanks, AK, USA
>>> PhD in Atmospheric Sciences
>>> M.Sc. in Atmospheric Sciences
>>> Email: suvro05 at gmail.com
>>> website: http://soumikbasu.weebly.com/
>>>
>>> ************************************************************
>>> ***************************************
>>>
>>> _______________________________________________
>>> 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/20180208/a1edee3a/attachment.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: circle.png
Type: image/png
Size: 133588 bytes
Desc: not available
URL: <http://mailman.ucar.edu/pipermail/ncl-talk/attachments/20180208/a1edee3a/attachment.png>


More information about the ncl-talk mailing list