cjs_add_vectors.ncl 2.23 KB
Newer Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; lib.cjs_graphics.ncl
; Carl Schreck (cjschrec@ncsu.edu)
; April 2014
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Copyright (c) 2010, North Carolina State University
; All rights reserved.
; This work licensed under BSD 3-Clause License. Full terms in LICENSE.txt
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;


undef ( "cjs_add_vectors" )
procedure cjs_add_vectors( \
  io_wks        [1] : graphic , \
  io_basePlot   [1] : graphic , \
  i_uData     [*][*] : numeric , \ ; lat x lon
  i_vData     [*][*] : numeric , \ ; lat x lon
  i_vecRes      [1] : logical \
)
begin ; cjs_add_vectors

  ; Customize overlaid vectors
  vecRes = True
  vecRes@gsnLeftString     = ""
  vecRes@gsnRightString    = ""
  vecRes@gsnFrame          = False
  vecRes@gsnDraw           = False
28

29
  if( .not.isatt( i_vecRes, "vecNotStrm" ).or.( i_vecRes@vecNotStrm ) ) then
30
31

    vecRes@vcVectorDrawOrder = "PostDraw"
32
33
    vecRes@vcRefMagnitudeF  = 5
    vecRes@vcRefLengthF     = 0.040
34
35
36
37
38
39
40
41
42
43
44
45
46
    vecRes@vcMinDistanceF   = 0.03
    vecRes@vcGlyphStyle     = "CurlyVector"
    vecRes@vcLineArrowColor = "black"
    vecRes@vcLineArrowThicknessF = 2

    ; ...vector legend
    vecRes@vcRefAnnoOn = True
    vecRes@vcRefAnnoArrowUseVecColor = False
    if( isatt( i_vecRes, "fontHeightF" ) ) then
      vecRes@vcRefAnnoFontHeightF      := i_vecRes@fontHeightF
    else
      vecRes@vcRefAnnoFontHeightF := 0.02
    end if
47
    vecRes@vcRefAnnoString1          = "$VMG$ m s~S~-1~N~"
48
49
50
51
52
53
54
55
56
57
    vecRes@vcRefAnnoString2On        = False
    vecRes@vcRefAnnoOrthogonalPosF   = 0
    vecRes@vcRefAnnoZone             = 1
    vecRes@vcRefAnnoJust             = "BottomRight"

    if( i_vecRes ) then
      copy_VarAtts( i_vecRes, vecRes )
    end if

    vectPlot = gsn_csm_vector( io_wks, i_uData, i_vData, vecRes )
58
  else
59
60
61
    vecRes@stMinLineSpacingF = 0.005
    vecRes@stMinDistanceF = 0.030
    vecRes@stMinArrowSpacingF = 0.030
62
63
64
65
66
67
    vecRes@stArrowLengthF = 0.01
    if( i_vecRes ) then
      copy_VarAtts( i_vecRes, vecRes )
    end if

    vectPlot = gsn_csm_streamline( io_wks, i_uData, i_vData, vecRes )
68
69
70
71
72
73
74
  end if

  overlay( io_basePlot, vectPlot )

end ; cjs_add_vectors