This program creates a new cube containing slope (radians, degrees, or percent) or aspect
    (radians or degrees) data from an input cube. This program computes the slope and aspect of
    an input cube and outputs the results. An individual slope, aspect, or percent slope cube can
    be rendered using this program.
    
Data requirements to run slpmap:
      
        -  A digital terrain model (DTM) with DN values representing the radius or elevation of a
             target body, or 
 
        -  Any ISIS cube that is a level 1 or level 2 image (can be multiband).
 
      
    
    Horne's algorithm is used to compute the slope or aspect using a 3x3 kernel:
    
      A  B  C
      D  E  F
      G  H  I
    
    
      Aspect:
      The aspect represents the direction or 0 to 360 degrees of the slope in pixel space (see
      figure below). From the center pixel E, 0 degrees is straight towards B (generally north),
      45 is towards C, 90 is towards F, 135 is towards I, 180 is towards H, and so on.
    
    
      ASPECT EQUATION
      [dz/dx] = ((C + 2F + I) - (A + 2D + G)) / 8
      [dz/dy] = ((G + 2H + I) - (A + 2B + C)) / 8
      aspect = 90 - ATAN2 ([dz/dy], -[dz/dx])
      if (aspect < 0) then aspect = aspect + 360
    
    
      Slope:
      Slope is typically between 0 and 90 degrees, where 0 is flat and 90 is vertical. Slope may be
      output in radians, degrees, or percent slope.
    
    
      SLOPE EQUATION
      [dz/dx] = ((C + 2F + I) - (A + 2D + G)) / (8 * X_PIXEL_RESOLUTION)
      [dz/dy] = ((G + 2H + I) - (A + 2B + C)) / (8 * Y_PIXEL_RESOLUTION)
      slope = ATAN ( SQRT ( [dz/dx]^2 + [dz/dy]^2 ) )
      percentslope = slope / 90
    
    
      The slope equation above assumes the pixels are not square, hence the two variables:
      X_PIXEL_RESOLUTION and Y_PIXEL_RESOLUTION. That is, the x distance across the pixel is not 
      equal to the y distance from top to bottom of the pixel.
    
    
      Pixel Resolution:
      
        -   
            By default, the program will attempt to remove any scaling differences by using the map
            projection information (PIXRES=AUTOMATIC). This computation is done at every pixel so the
            correct x-to-y ratio is computed. This is important, for example, for global maps where
            the x/y ratio deviates with distance from the latitude and/or longitude of true scale in
            a map projection. This only works for radius DTMs and does not work for elevations.
        
 
        - 
            The default setting PIXRES=AUTOMATIC will not work if the input cube Z units are in 
            elevation values instead of radius values. You will need to set PIXRES=FILE
            (recommended for a map projected file) or  PIXRES=USER. Note: unlike PIXRES=AUTOMATIC,
            these later two methods do not correct for distortions in the map projection. They will
            return good results for smaller regions when the map projection is defined to minimize
            distortions (e.g. LROC NAC or HIRISE sereo DTMs).
        
 
        - 
            If the image lacks a map projection, you must provide the pixel resolution via 
            PIXRES=USER (for this option the pixels are assumed to be square). You must also 
            provide a single value using the RESOLUTION parameter that will be applied to all pixels 
            in the image and in both directions. 
        
 
      
  
  
    Conversion:
    
      The program assumes the xy units are the same as the z (pixel) unit by default
      but allows you to scale the z units to the xy
      units using the CONVERSION parameter if the PIXRES=USER option is selected.
    
   
| Brian Peck | 2006-12-25 | 
      Original version
     | 
| Steven Lambright | 2008-10-06 | 
      Changed slope and aspect algorithms
     | 
| Jeff Anderson | 2012-08-02 | 
      Changed the slope algorithm to compute the sample and line resolution
      at each pixel.  Previously the algorithm used the resolution at the
      center of the image. In projected images the resolution varies as you
      move away from the latitude and/or longitude of true scale.   Also, improved the
      documentation and added user options to output percent slope.
     | 
| Debbie A. Cook | 2012-12-10 | 
      Removed unused Projection.h include.  References #775
     | 
| Stuart Sides | 2013-01-30 | 
      Backward Compatibility Issue: Changed the default output to be slope rather than percent
      slope.
      Backward Compatibility Issue: Removed ability to supply a conversion factor when using
      the automatic resolution option (CONVERSION=AUTOMATIC). AUTOMATIC, assumes the DNs in 
      the cube have units of meters.
      Added a test to the CONVERSION=AUTOMATIC option so DNs in the cube with negative values
      will cause a better error to be shown. Added a BANDBIN group to the output cube labels.
     | 
| Kimberly Oyama | 2014-03-28 | 
      Added the FILE option to the PIXRES parameter. This allows the user to specify that the
      pixel resolution from the input cube's projection should be used. Updated the documentation.
      Fixes #1764.
     | 
| Lauren Adoram-Kershner and Kaitlyn Lee | 2020-03-27 | 
      Reformatted documentation. Fixes #3562. 
     |