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

GDI/图象编程

开发平台:

Visual C++

  1. #ifndef UTM_H
  2.   #define UTM_H
  3. /***************************************************************************/
  4. /* RSC IDENTIFIER: UTM
  5.  *
  6.  * ABSTRACT
  7.  *
  8.  *    This component provides conversions between geodetic coordinates 
  9.  *    (latitude and longitudes) and Universal Transverse Mercator (UTM)
  10.  *    projection (zone, hemisphere, easting, and northing) coordinates.
  11.  *
  12.  * ERROR HANDLING
  13.  *
  14.  *    This component checks parameters for valid values.  If an invalid value
  15.  *    is found, the error code is combined with the current error code using 
  16.  *    the bitwise or.  This combining allows multiple error codes to be
  17.  *    returned. The possible error codes are:
  18.  *
  19.  *          UTM_NO_ERROR           : No errors occurred in function
  20.  *          UTM_LAT_ERROR          : Latitude outside of valid range
  21.  *                                    (-80.5 to 84.5 degrees)
  22.  *          UTM_LON_ERROR          : Longitude outside of valid range
  23.  *                                    (-180 to 360 degrees)
  24.  *          UTM_EASTING_ERROR      : Easting outside of valid range
  25.  *                                    (100,000 to 900,000 meters)
  26.  *          UTM_NORTHING_ERROR     : Northing outside of valid range
  27.  *                                    (0 to 10,000,000 meters)
  28.  *          UTM_ZONE_ERROR         : Zone outside of valid range (1 to 60)
  29.  *          UTM_HEMISPHERE_ERROR   : Invalid hemisphere ('N' or 'S')
  30.  *          UTM_ZONE_OVERRIDE_ERROR: Zone outside of valid range
  31.  *                                    (1 to 60) and within 1 of 'natural' zone
  32.  *          UTM_A_ERROR            : Semi-major axis less than or equal to zero
  33.  *          UTM_INV_F_ERROR        : Inverse flattening outside of valid range
  34.  *                    (250 to 350)
  35.  *
  36.  * REUSE NOTES
  37.  *
  38.  *    UTM is intended for reuse by any application that performs a Universal
  39.  *    Transverse Mercator (UTM) projection or its inverse.
  40.  *    
  41.  * REFERENCES
  42.  *
  43.  *    Further information on UTM can be found in the Reuse Manual.
  44.  *
  45.  *    UTM originated from :  U.S. Army Topographic Engineering Center
  46.  *                           Geospatial Information Division
  47.  *                           7701 Telegraph Road
  48.  *                           Alexandria, VA  22310-3864
  49.  *
  50.  * LICENSES
  51.  *
  52.  *    None apply to this component.
  53.  *
  54.  * RESTRICTIONS
  55.  *
  56.  *    UTM has no restrictions.
  57.  *
  58.  * ENVIRONMENT
  59.  *
  60.  *    UTM was tested and certified in the following environments:
  61.  *
  62.  *    1. Solaris 2.5 with GCC, version 2.8.1
  63.  *    2. MSDOS with MS Visual C++, version 6
  64.  *
  65.  * MODIFICATIONS
  66.  *
  67.  *    Date              Description
  68.  *    ----              -----------
  69.  *    10-02-97          Original Code
  70.  *
  71.  */
  72. /***************************************************************************/
  73. /*
  74.  *                              DEFINES
  75.  */
  76.   #define UTM_NO_ERROR            0x0000
  77.   #define UTM_LAT_ERROR           0x0001
  78.   #define UTM_LON_ERROR           0x0002
  79.   #define UTM_EASTING_ERROR       0x0004
  80.   #define UTM_NORTHING_ERROR      0x0008
  81.   #define UTM_ZONE_ERROR          0x0010
  82.   #define UTM_HEMISPHERE_ERROR    0x0020
  83.   #define UTM_ZONE_OVERRIDE_ERROR 0x0040
  84.   #define UTM_A_ERROR             0x0080
  85.   #define UTM_INV_F_ERROR         0x0100
  86. /***************************************************************************/
  87. /*
  88.  *                              FUNCTION PROTOTYPES
  89.  *                                for UTM.C
  90.  */
  91. /* ensure proper linkage to c++ programs */
  92.   #ifdef __cplusplus
  93. extern "C" {
  94.   #endif
  95.   long Set_UTM_Parameters(double a,      
  96.                           double f,
  97.                           long   override);
  98. /*
  99.  * The function Set_UTM_Parameters receives the ellipsoid parameters and
  100.  * UTM zone override parameter as inputs, and sets the corresponding state
  101.  * variables.  If any errors occur, the error code(s) are returned by the 
  102.  * function, otherwise UTM_NO_ERROR is returned.
  103.  *
  104.  *    a                 : Semi-major axis of ellipsoid, in meters       (input)
  105.  *    f                 : Flattening of ellipsoid                       (input)
  106.  *    override          : UTM override zone, zero indicates no override (input)
  107.  */
  108.   void Get_UTM_Parameters(double *a,
  109.                           double *f,
  110.                           long   *override);
  111. /*
  112.  * The function Get_UTM_Parameters returns the current ellipsoid
  113.  * parameters and UTM zone override parameter.
  114.  *
  115.  *    a                 : Semi-major axis of ellipsoid, in meters       (output)
  116.  *    f                 : Flattening of ellipsoid                       (output)
  117.  *    override          : UTM override zone, zero indicates no override (output)
  118.  */
  119.   long Convert_Geodetic_To_UTM (double Latitude,
  120.                                 double Longitude,
  121.                                 long   *Zone,
  122.                                 char   *Hemisphere,
  123.                                 double *Easting,
  124.                                 double *Northing); 
  125. /*
  126.  * The function Convert_Geodetic_To_UTM converts geodetic (latitude and
  127.  * longitude) coordinates to UTM projection (zone, hemisphere, easting and
  128.  * northing) coordinates according to the current ellipsoid and UTM zone
  129.  * override parameters.  If any errors occur, the error code(s) are returned
  130.  * by the function, otherwise UTM_NO_ERROR is returned.
  131.  *
  132.  *    Latitude          : Latitude in radians                 (input)
  133.  *    Longitude         : Longitude in radians                (input)
  134.  *    Zone              : UTM zone                            (output)
  135.  *    Hemisphere        : North or South hemisphere           (output)
  136.  *    Easting           : Easting (X) in meters               (output)
  137.  *    Northing          : Northing (Y) in meters              (output)
  138.  */
  139.   long Convert_UTM_To_Geodetic(long   Zone,
  140.                                char   Hemisphere,
  141.                                double Easting,
  142.                                double Northing,
  143.                                double *Latitude,
  144.                                double *Longitude);
  145. /*
  146.  * The function Convert_UTM_To_Geodetic converts UTM projection (zone, 
  147.  * hemisphere, easting and northing) coordinates to geodetic(latitude
  148.  * and  longitude) coordinates, according to the current ellipsoid
  149.  * parameters.  If any errors occur, the error code(s) are returned
  150.  * by the function, otherwise UTM_NO_ERROR is returned.
  151.  *
  152.  *    Zone              : UTM zone                               (input)
  153.  *    Hemisphere        : North or South hemisphere              (input)
  154.  *    Easting           : Easting (X) in meters                  (input)
  155.  *    Northing          : Northing (Y) in meters                 (input)
  156.  *    Latitude          : Latitude in radians                    (output)
  157.  *    Longitude         : Longitude in radians                   (output)
  158.  */
  159.   #ifdef __cplusplus
  160. }
  161.   #endif
  162. #endif /* UTM_H */