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

GDI/图象编程

开发平台:

Visual C++

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