mgrs.h
上传用户:oybseng
上传日期:2015-04-27
资源大小:7831k
文件大小:10k
源码类别:

GDI/图象编程

开发平台:

Visual C++

  1. #ifndef MGRS_H
  2.   #define MGRS_H
  3. /***************************************************************************/
  4. /* RSC IDENTIFIER:  MGRS
  5.  *
  6.  * ABSTRACT
  7.  *
  8.  *    This component converts between geodetic coordinates (latitude and 
  9.  *    longitude) and Military Grid Reference System (MGRS) coordinates. 
  10.  *
  11.  * ERROR HANDLING
  12.  *
  13.  *    This component checks parameters for valid values.  If an invalid value
  14.  *    is found, the error code is combined with the current error code using 
  15.  *    the bitwise or.  This combining allows multiple error codes to be
  16.  *    returned. The possible error codes are:
  17.  *
  18.  *          MGRS_NO_ERROR          : No errors occurred in function
  19.  *          MGRS_LAT_ERROR         : Latitude outside of valid range 
  20.  *                                    (-90 to 90 degrees)
  21.  *          MGRS_LON_ERROR         : Longitude outside of valid range
  22.  *                                    (-180 to 360 degrees)
  23.  *          MGRS_STR_ERROR         : An MGRS string error: string too long,
  24.  *                                    too short, or badly formed
  25.  *          MGRS_PRECISION_ERROR   : The precision must be between 0 and 5 
  26.  *                                    inclusive.
  27.  *          MGRS_A_ERROR           : Semi-major axis less than or equal to zero
  28.  *          MGRS_INV_F_ERROR       : Inverse flattening outside of valid range
  29.  *                   (250 to 350)
  30.  *          MGRS_EASTING_ERROR     : Easting outside of valid range
  31.  *                                    (100,000 to 900,000 meters for UTM)
  32.  *                                    (0 to 4,000,000 meters for UPS)
  33.  *          MGRS_NORTHING_ERROR    : Northing outside of valid range
  34.  *                                    (0 to 10,000,000 meters for UTM)
  35.  *                                    (0 to 4,000,000 meters for UPS)
  36.  *          MGRS_ZONE_ERROR        : Zone outside of valid range (1 to 60)
  37.  *          MGRS_HEMISPHERE_ERROR  : Invalid hemisphere ('N' or 'S')
  38.  *
  39.  * REUSE NOTES
  40.  *
  41.  *    MGRS is intended for reuse by any application that does conversions
  42.  *    between geodetic coordinates and MGRS coordinates.
  43.  *
  44.  * REFERENCES
  45.  *
  46.  *    Further information on MGRS can be found in the Reuse Manual.
  47.  *
  48.  *    MGRS originated from : U.S. Army Topographic Engineering Center
  49.  *                           Geospatial Information Division
  50.  *                           7701 Telegraph Road
  51.  *                           Alexandria, VA  22310-3864
  52.  *
  53.  * LICENSES
  54.  *
  55.  *    None apply to this component.
  56.  *
  57.  * RESTRICTIONS
  58.  *
  59.  *
  60.  * ENVIRONMENT
  61.  *
  62.  *    MGRS was tested and certified in the following environments:
  63.  *
  64.  *    1. Solaris 2.5 with GCC version 2.8.1
  65.  *    2. Windows 95 with MS Visual C++ version 6
  66.  *
  67.  * MODIFICATIONS
  68.  *
  69.  *    Date              Description
  70.  *    ----              -----------
  71.  *    16-11-94          Original Code
  72.  *    15-09-99          Reengineered upper layers
  73.  *
  74.  */
  75. /***************************************************************************/
  76. /*
  77.  *                              DEFINES
  78.  */
  79.   #define MGRS_NO_ERROR                0x0000
  80.   #define MGRS_LAT_ERROR               0x0001
  81.   #define MGRS_LON_ERROR               0x0002
  82.   #define MGRS_STRING_ERROR            0x0004
  83.   #define MGRS_PRECISION_ERROR         0x0008
  84.   #define MGRS_A_ERROR                 0x0010
  85.   #define MGRS_INV_F_ERROR             0x0020
  86.   #define MGRS_EASTING_ERROR           0x0040
  87.   #define MGRS_NORTHING_ERROR          0x0080
  88.   #define MGRS_ZONE_ERROR              0x0100
  89.   #define MGRS_HEMISPHERE_ERROR        0x0200
  90. /***************************************************************************/
  91. /*
  92.  *                              FUNCTION PROTOTYPES
  93.  */
  94. /* ensure proper linkage to c++ programs */
  95.   #ifdef __cplusplus
  96. extern "C" {
  97.   #endif
  98.   long Set_MGRS_Parameters(double a,
  99.                            double f,
  100.                            char   *Ellipsoid_Code);
  101. /*
  102.  * The function Set_MGRS_Parameters receives the ellipsoid parameters and sets
  103.  * the corresponding state variables. If any errors occur, the error code(s)
  104.  * are returned by the function, otherwise MGRS_NO_ERROR is returned.
  105.  *
  106.  *   a                : Semi-major axis of ellipsoid in meters (input)
  107.  *   f                : Flattening of ellipsoid        (input)
  108.  *   Ellipsoid_Code   : 2-letter code for ellipsoid            (input)
  109.  */
  110.   void Get_MGRS_Parameters(double *a,
  111.                            double *f,
  112.                            char   *Ellipsoid_Code);
  113. /*
  114.  * The function Get_MGRS_Parameters returns the current ellipsoid
  115.  * parameters.
  116.  *
  117.  *  a                : Semi-major axis of ellipsoid, in meters (output)
  118.  *  f                : Flattening of ellipsoid        (output)
  119.  *  Ellipsoid_Code   : 2-letter code for ellipsoid             (output)
  120.  */
  121.   long Convert_Geodetic_To_MGRS (double Latitude,
  122.                                  double Longitude,
  123.                                  long   Precision,
  124.                                  char *MGRS);
  125. /*
  126.  * The function Convert_Geodetic_To_MGRS converts geodetic (latitude and
  127.  * longitude) coordinates to an MGRS coordinate string, according to the 
  128.  * current ellipsoid parameters.  If any errors occur, the error code(s) 
  129.  * are returned by the  function, otherwise MGRS_NO_ERROR is returned.
  130.  *
  131.  *    Latitude   : Latitude in radians              (input)
  132.  *    Longitude  : Longitude in radians             (input)
  133.  *    Precision  : Precision level of MGRS string   (input)
  134.  *    MGRS       : MGRS coordinate string           (output)
  135.  *  
  136.  */
  137.   long Convert_MGRS_To_Geodetic (char *MGRS,
  138.                                  double *Latitude,
  139.                                  double *Longitude);
  140. /*
  141.  * This function converts an MGRS coordinate string to Geodetic (latitude
  142.  * and longitude in radians) coordinates.  If any errors occur, the error 
  143.  * code(s) are returned by the  function, otherwise MGRS_NO_ERROR is returned.  
  144.  *
  145.  *    MGRS       : MGRS coordinate string           (input)
  146.  *    Latitude   : Latitude in radians              (output)
  147.  *    Longitude  : Longitude in radians             (output)
  148.  *  
  149.  */
  150.   long Convert_UTM_To_MGRS (long Zone,
  151.                             char Hemisphere,
  152.                             double Easting,
  153.                             double Northing,
  154.                             long Precision,
  155.                             char *MGRS);
  156. /*
  157.  * The function Convert_UTM_To_MGRS converts UTM (zone, easting, and
  158.  * northing) coordinates to an MGRS coordinate string, according to the 
  159.  * current ellipsoid parameters.  If any errors occur, the error code(s) 
  160.  * are returned by the  function, otherwise MGRS_NO_ERROR is returned.
  161.  *
  162.  *    Zone       : UTM zone                         (input)
  163.  *    Hemisphere : North or South hemisphere        (input)
  164.  *    Easting    : Easting (X) in meters            (input)
  165.  *    Northing   : Northing (Y) in meters           (input)
  166.  *    Precision  : Precision level of MGRS string   (input)
  167.  *    MGRS       : MGRS coordinate string           (output)
  168.  */
  169.   long Convert_MGRS_To_UTM (char   *MGRS,
  170.                             long   *Zone,
  171.                             char   *Hemisphere,
  172.                             double *Easting,
  173.                             double *Northing); 
  174. /*
  175.  * The function Convert_MGRS_To_UTM converts an MGRS coordinate string
  176.  * to UTM projection (zone, hemisphere, easting and northing) coordinates 
  177.  * according to the current ellipsoid parameters.  If any errors occur, 
  178.  * the error code(s) are returned by the function, otherwise UTM_NO_ERROR 
  179.  * is returned.
  180.  *
  181.  *    MGRS       : MGRS coordinate string           (input)
  182.  *    Zone       : UTM zone                         (output)
  183.  *    Hemisphere : North or South hemisphere        (output)
  184.  *    Easting    : Easting (X) in meters            (output)
  185.  *    Northing   : Northing (Y) in meters           (output)
  186.  */
  187.   long Convert_UPS_To_MGRS ( char   Hemisphere,
  188.                              double Easting,
  189.                              double Northing,
  190.                              long Precision,
  191.                              char *MGRS);
  192. /*
  193.  *  The function Convert_UPS_To_MGRS converts UPS (hemisphere, easting, 
  194.  *  and northing) coordinates to an MGRS coordinate string according to 
  195.  *  the current ellipsoid parameters.  If any errors occur, the error
  196.  *  code(s) are returned by the function, otherwise UPS_NO_ERROR is 
  197.  *  returned.
  198.  *
  199.  *    Hemisphere    : Hemisphere either 'N' or 'S'     (input)
  200.  *    Easting       : Easting/X in meters              (input)
  201.  *    Northing      : Northing/Y in meters             (input)
  202.  *    Precision     : Precision level of MGRS string   (input)
  203.  *    MGRS          : MGRS coordinate string           (output)
  204.  */
  205.   long Convert_MGRS_To_UPS ( char   *MGRS,
  206.                              char   *Hemisphere,
  207.                              double *Easting,
  208.                              double *Northing);
  209. /*
  210.  *  The function Convert_MGRS_To_UPS converts an MGRS coordinate string
  211.  *  to UPS (hemisphere, easting, and northing) coordinates, according 
  212.  *  to the current ellipsoid parameters. If any errors occur, the error 
  213.  *  code(s) are returned by the function, otherwide UPS_NO_ERROR is returned.
  214.  *
  215.  *    MGRS          : MGRS coordinate string           (input)
  216.  *    Hemisphere    : Hemisphere either 'N' or 'S'     (output)
  217.  *    Easting       : Easting/X in meters              (output)
  218.  *    Northing      : Northing/Y in meters             (output)
  219.  */
  220.   #ifdef __cplusplus
  221. }
  222.   #endif
  223. #endif /* MGRS_H */