[ncl-talk] Winds overlaid with shipping track data

Mary Haley haley at ucar.edu
Mon Aug 3 09:09:10 MDT 2015


Melissa,

Could you be more specific than "it's not working correctly?"  It's hard
for us to debug a problem when we don't know where to look.

It's also helpful to include a sample image with an explanation of what's
wrong with it, or an error message.

--Mary


On Fri, Jul 31, 2015 at 10:28 AM, Melissa Lazenby <M.Lazenby at sussex.ac.uk>
wrote:

> Hi NCL-Users
>
> I am struggling to get my loops to work in a plot I am trying to create
> for an animation.
>
> I have u and v wind data that has 7304 timesteps in it and I have a text
> file of shipping data that I want to use to plot ship tracks for the same
> wind fields i.e I would like to create 7304 png images to use to create an
> animation using fmpeg.
>
> The text file of the shipping data has 252391 timesteps so I only want to
> extract the data that matches the wind data. So I want to plot ship tracks
> only every 6 hours.
>
> The wind data is 4 times daily at 00,06,12,18
> The ship data is hourly 00,01,02,03,04 etc..
>
> I want to create plots to match up with the wind fields i.e. use the winds
> as the background plot and overlay them with ship tracks using polymarker
> function in NCL for every 6 hours.
>
> Below is my script but it is not working correctly.
>
> If anyone could please advice how to go about fixing it that would be much
> appreciated.
>
> Many thanks!
>
> Kindest Regards
> Melissa
>
> ;----------------------------------------------------------------------
> ; Krakatoa_1.ncl
> ;----------------------------------------------------------------------
> 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/csm/shea_util.ncl"
>
> begin
>
> f=addfile("/mnt/geog/ml382/McGill_Project/ReanalysisV2/uwnd_krakatoa.nc",
> "r")
>
> g=addfile("/mnt/geog/ml382/McGill_Project/ReanalysisV2/vwnd_krakatoa.nc",
> "r")
>
>
>   latS   =  -70.
>   latN   =  50.
>   lonL   =  0.
>   lonR   =  150.
>
>   u        = f->uwnd(:,0,:,:)
>   v        = g->vwnd(:,0,:,:)
>
>   lat   = f->lat
>   lon   = f->lon
>   time  = f->time
>
> speed= new(dimsizes(u),float)
>
> do gg = 0,dimsizes(time)-1
>
> speed(gg,:,:)  = sqrt(u(gg,:,:)^2+v(gg,:,:)^2)
>
>     speed!0 = "time"
>     speed!1 = "lat"
>     speed!2 = "lon"
>     speed&time= time
>     speed&lat = lat
>     speed&lon = lon
>     speed at long_name = "Wind Speed"
>     speed at units     = "m/s"
>
>
> wks  = gsn_open_wks("X11","Krakatoa_Animation_"+time(gg)+"")
> ; specifies a plot
> plot = new (dimsizes(time),"graphic")
> plot1= new (dimsizes(time),"graphic")
> plot2= new (dimsizes(time),"graphic")
> x= new (dimsizes(time),"float")
> y= new (dimsizes(time),"float")
> ;---Create plot
>
>   res                      = True               ; plot mods desired
>
>   res at cnFillOn             = True               ; turn on color for
> contours
>   res at cnLinesOn            = False              ; turn off contour lines
>   res at cnLineLabelsOn       = False              ; turn off contour line
> labels
>   res at gsnScalarContour     = True               ; contours desired
>   res at gsnDraw             = False              ; do not draw the plot
>   res at gsnFrame            = False
>
>
>   res at vcRefMagnitudeF           = 2.0             ; define vector ref mag
>   res at vcRefLengthF              = 0.008           ; define length of vec
> ref
>   res at vcRefAnnoOrthogonalPosF   = -1.0            ; move ref vector
>   res at vcRefAnnoArrowLineColor   = "black"         ; change ref vector
> color
>   res at vcRefAnnoArrowUseVecColor = False           ; don't use vec color
> for ref
>
>   res at vcGlyphStyle            = "CurlyVector"     ; turn on curley vectors
>   res at vcLineArrowColor        = "black"           ; change vector color
>   res at vcLineArrowThicknessF   = 2.0               ; change vector
> thickness
>   res at vcVectorDrawOrder       = "PostDraw"        ; draw vectors last
>   res at vcMinDistanceF = 0.02
>
>    res at gsnLeftString   = ""
>    res at gsnMainString   = ""
>    res at gsnRightString  = ""
>
>   res at mpMinLonF            =  lonL               ; select a subregion
>   res at mpMaxLonF            =  lonR
>   res at mpMinLatF            =  latS
>   res at mpMaxLatF            =  latN
>
>
>   pres                      = True
>   pres at mpFillOn = False
>   pres at cnFillOn             = True               ; color on
>   pres at cnLinesOn            = False              ; turn off contour lines
>   pres at gsnScalarContour     = True               ; vectors over contours
>   pres at gsnSpreadColors      = True               ; use full colormap
>   pres at gsnAddCyclic        = False
>   pres at gsnDraw             = False              ; do not draw the plot
>   pres at gsnFrame            = False
>   pres at lbLabelBarOn        = False
>   pres at gsnMaximize         = True
>
>   pres at mpMinLonF            =  lonL               ; select a subregion
>   pres at mpMaxLonF            =  lonR
>   pres at mpMinLatF            =  latS
>   pres at mpMaxLatF            =  latN
>
>
>    pres at gsnLeftString   = ""
>    pres at gsnMainString   = ""
>    pres at gsnRightString  = ""
>
>
>   pres at cnLevelSelectionMode= "ManualLevels"  ; manual levels
>   pres at cnMinLevelValF      =  -100           ; min level
>   pres at cnMaxLevelValF      =  120            ; max level
>   pres at cnLevelSpacingF     =  10             ; contour spacing
>
>
>   mres               = True
>   mres at gsMarkerIndex = 3                        ; polymarker style
>   mres at gsMarkerSizeF = 20.                      ; polymarker size
>   mres at gsMarkerColor = "red"
>
>  mpres                   = True                     ; plot mods desired
>  mpres at xyMarkLineModes   = "Markers"                ; choose which have
> markers
>  mpres at xyMarkers         =  16                      ; choose type of
> marker
>  mpres at xyMarkerColor     = "red"                    ; Marker color
>  mpres at xyMarkerSizeF     = 0.01                     ; Marker size
> (default 0.01)
>
>
> ;Ship track data
>
>   ship  = "/mnt/geog/ml382/McGill_Project/ReanalysisV2/Krakatoa_ID.txt"
>   data   = asciiread(ship,-1,"string")
>   year   = stringtointeger(str_get_cols(data,1,5))
>   month  = stringtointeger(str_get_cols(data,8,9))
>   day    = stringtointeger(str_get_cols(data,11,13))
>   hour   = stringtointeger(str_get_cols(data,15,20))
>   slat    = stringtointeger(str_get_cols(data,22,28))
>   slon    = stringtointeger(str_get_cols(data,31,37))
>
>
> k=0
>
>
> do j=0, 4
> jj=j+1881
>  do i=0, 11
>   do m=0, 30
> n = 0
>    do nn=0, 7304
>
>  data_index = ind((year(k) .eq. jj) .and. (month(k) .eq. i) .and. (day(k)
> .eq. m) .and. (hour(k) .eq. n))
>
>
>   if(.not. any(ismissing(data_index))) then
>   x(k)=slon(data_index)
>   y(k)=slat(data_index)
>
> print(x)
> print(y)
>
> end if
>
>   polyres               = True          ; poly marker mods desired
>   polyres at gsMarkerIndex = 16            ; choose circle as polymarker
>   polyres at gsMarkerSizeF = 7.0           ; select size to avoid streaking
>   polyres at gsMarkerColor = "red"   ; choose color
>
>
>      pres at gsnLeftString  = "Krakatoa: Winds and Shipping Tracks"
>      plot(gg) = gsn_csm_contour_map(wks,speed(gg,:,:),pres)
>      plot1(gg)= gsn_csm_vector(wks,u(gg,:,:),v(gg,:,:),res)
>
>
> overlay(plot(gg),plot1(gg))
>
> plot2(gg) = gsn_add_polymarker(wks,plot(gg),x(k),y(k),polyres)  ; draw
> polymarkers
>
>
> draw(plot(gg))
> frame(wks)
>
> k=k+1
> n=nn+6
>
>     end do
>    end do
>   end do
>  end do
> end do
>
> end
>
>
> _______________________________________________
> 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/20150803/2dff6844/attachment.html 


More information about the ncl-talk mailing list