Welcome to the Harris Geospatial product documentation center. Here you will find reference guides, help documents, and product libraries.


Harris Geospatial / Docs Center / Libraries / Coyote / CGDRAWVECTORS

CGDRAWVECTORS

CGDRAWVECTORS
  Plots the velocity vectors of particles at their position. Vectors may be
  overplotted onto other IDL graphics plots.

Categories


    Graphics

Params


    velx: in, required, type=integer/float
        An array containing the X component of the particle velocity vector.
    vely: in, required, type=integer/float
        An array containing the Y component of the particle velocity vector.
    posx_: in, required, type=integer/float
        An array containing the X posiiton of the particle velocity vector. The
        shaft end of the arrow vector is positioned here.
    posy_: in, required, type=integer/float
        An array containing the Y posiiton of the particle velocity vector. The
        shaft end of the arrow vector is positioned here.

Keywords


    addcmd: in, optional, type=boolean, default=0
        An alternative way to set the `Window` keyword.
    clip: in, optional, type=boolean, default=0
        Set the keyword to clip vector output to the clipping rectangle specified
        in the `CRect` keyword. See the documentation for the IDL graphics
        keyword NOCLIP.
    crect: in, optional, type=float
          A four-element array giving the clipping rectangle [xo, yo, x1, y1]. The
          default clipping rectangle is the plot area. See the documenation for the
          IDL graphics keyword CLIP.
    device: in, optional, type=boolean, default=0
        Set this keyword to indicate the vector positions are given in
        device coordinates. Data coordinates are assumed.
    fraction: in, optional, type=float, default=1.0
        A number between 0.0 and 1.0 indicating the fraction of the vectors to
        draw on the plot. Vectors are selected randomly from the total population,
        unless the `Ordered` keyword is set, in which case they are selected
        in an ordered, systematic fashion. For example, Fraction=0.5 will select
        every other input vector.
    hsize: in, optional, type=float
        The size of the the arrow head. By default 1/100th the width
        of the device. (!D.X_SIZE / 100.)
    hthick: in, optional, type=float
        The thickness of the line drawing the arrowhead of the vector. The
        default is 3 for the PostScript device and 1 for all other devices.
    length: in, optional, type=float, default=0.075
        The length of the `ReferenceVector` in normalized units. All vectors
        are scaled according to this length.
    linestyle: in, optional, type=integer, default=0
        The line style of the arrow. Line style integers as in PLOT.
    mapCoord: in, optional, type=object
        A map coordinate object (e.g., cgMap) that describes the map projection
        and datum used to specify the vector locations. Note that this could also be a
        map structure as returned from MAP_PROJ_INIT, but in that case the user is
        responsible for setting up the XY map coordinate space independently and
        outside of this program. This coordinate object will be used to transform
        lat/lon locations into the XY locations of the map projection.
    normal: in, optional, type=boolean, default=0
        Set this keyword to indicate the vector positions are given in
        normalized coordinates. Data coordinates are assumed.
    ordered: in, optional, type=boolean, default=0
        If this keyword is set, and the `Fraction` keyword is used, the fraction
        of vectors used in the plot are chosen from the entire population in a
        systematic, ordered fashion.
    overplot: in, optional, type=boolean, default=0
        Set this keyword to overplot the vectors on an established coordinate
        system plot.
    referencevector: in, optional, type=float
        The magnitude of a reference vector that is used to scale all other vectors before display.
        If undefined, 75 percent of the maximum vector magnitude.
    solid: in, optional, type=boolean, default=0
        Set this keyword to draw solid, filled arrows.
    thick: in, optional, type=float
        The thickness of the line drawing the shaft of the arrow. The
        default is 3 for the PostScript device and 1 for all other devices.
    veccolors: in, optional
        A scalar or vector of colors the same size as `velx`. May be bytes, short integers,
        or strings. Bytes and short integers are treated as indices into the current color
        table. The default is "opposite".
    window: in, optional, type=boolean, default=0
        Set this keyword to add the command to an cgWindow application.
    xrange: in, optional, type=float
        If a plot is to be drawn, the X range of the plot. By default, the X range is
        calculated to contain all of the velocity vectors.
    yrange: in, optional, type=float
        If a plot is to be drawn, the Y range of the plot. By default, the Y range is
        calculated to contain all of the velocity vectors.
    _extra: in, optional
        Any keywords appropriate for the cgPlot command can be used to create the plot.

Examples


    Generate some particle positions and velocities::
        posx = RandomU(seed,200)
        posy = RandomU(seed,200)
        velx = RandomU(seed,200)-0.5
        vely = RandomU(seed,200)-0.5
    Plot the particle velocities::
        cgDrawVectors, velx, vely, posx, posy
    Example using vector colors::
        magnitude = SQRT(velx^2 + vely^2)
        cgLoadCT, 5
        colors = BytScl(magnitude)
        cgDrawVectors, velx, vely, posx, posy, VecColors=colors
    Example using a map projection::
       
          posx = Indgen(10)*36
          posy = Replicate(30,10)
          velx = Replicate(10.,10) ; Wind out of the West
          vely = Replicate(0, 10) ; No vertical component
          cgDisplay
          mapNorth = Obj_New('cgMap', 'Polar Stereographic', $
                Limit=[0, -180, 90, 180], /NoBorder)
          mapNorth -> Draw
          cgMap_Continents, Color='black', Map_Structure=mapNorth
          cgMap_Grid, LatDel=15, LonDel=15, LineStyle=1, Color='charcoal', $
                /Label, LonLabel=2, Map_Structure=mapNorth
          cgDrawVectors, velx, vely, posx, posy, VecColors='blu6', /Overplot, $
                ReferenceVector=10, /Solid, Thick=2, MapCoord=mapNorth
               

Author


    FANNING SOFTWARE CONSULTING::
        David W. Fanning
        1645 Sheely Drive
        Fort Collins, CO 80526 USA
        Phone: 970-221-0438
        E-mail: david@idlcoyote.com
        Coyote's Guide to IDL Programming: http://www.idlcoyote.com

History


    Change History::
        Written by David Fanning, based on NASA Astronomy Library program PartVelVec, 22 March 2014
        Added ORDERED keyword. 24 March 2014. DWF.
        Drawing the vectors All Wrong. Using what I think is the correct algorithm now. 24 March 2014. DWF.
        Modified so I don't change into position variables. 24 March 2014. DWF.
        Fixed a small problem with the algorithm for calculating the direction of the scaled vectors and
          added CLIP and CRECT keywords. 25 March 2014. DWF.
        Added MAPCOORD keyword. 27 March 2014. DWF.
        Modified to set color information once here, instead of allowing cgArrow to do it. 27 March 2014. DWF.
        Some map projections (e.g., polar stereographic) can change the direction of the vector on the
          projected map. To solve this problem, I needed to create a second point in the original coordinate
          system and project both points into the map coordinate system before calculating the angle
          between points. Also then had to figure out how to scale the moved point to the reference
          vector. All appears normal now. 2 Nov 2014. DWF.
        Still a couple of problems in the direction of the vector when the scale is different in the X and
          Y directions. This version of the program allows the vector to be distorted by scale and by a map
          projection. It more closely resembles the NASA program PartVelVec now than it did previously.
          18 Feb 2015. DWF.
        “To kill an error is as good a service as, and sometimes even better than, the establishing of a
          new truth or fact,” asserted Charles Darwin. In that vein, I have completely gutted the internal
          vector placing algorithm in cgDrawVectors and replaced it with an algorithm that essentially
          duplicates the vectors of the NASA Astronomy Library routine PartVelVec. The essential change was
          to take into account the plot scale in both the X and Y direction when computing the end point
          of a vector. You will see an "aspect" variable in the code. When being placed on map projections,
          using either cgMap_Set or cgMap, the aspect ratio of 180./360. is always used. The aspect ratio is
          used to scale the vector components before placement of the vector. 23 February 2015. DWF.

Copyright


    Copyright (c) 2014-2015, Fanning Software Consulting, Inc.



© 2017 Exelis Visual Information Solutions, Inc. |  Legal
My Account    |    Buy    |    Contact Us