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

GDI/图象编程

开发平台:

Visual C++

  1. #ifndef POLARST_H
  2.   #define POLARST_H
  3. /***************************************************************************/
  4. /* RSC IDENTIFIER: POLAR STEREOGRAPHIC 
  5.  *
  6.  *
  7.  * ABSTRACT
  8.  *
  9.  *    This component provides conversions between geodetic (latitude and
  10.  *    longitude) coordinates and Polar Stereographic (easting and northing) 
  11.  *    coordinates.
  12.  *
  13.  * ERROR HANDLING
  14.  *
  15.  *    This component checks parameters for valid values.  If an invalid 
  16.  *    value is found the error code is combined with the current error code 
  17.  *    using the bitwise or.  This combining allows multiple error codes to 
  18.  *    be returned. The possible error codes are:
  19.  *
  20.  *          POLAR_NO_ERROR           : No errors occurred in function
  21.  *          POLAR_LAT_ERROR          : Latitude outside of valid range
  22.  *                                      (-90 to 90 degrees)
  23.  *          POLAR_LON_ERROR          : Longitude outside of valid range
  24.  *                                      (-180 to 360 degrees) 
  25.  *          POLAR_ORIGIN_LAT_ERROR   : Latitude of true scale outside of valid
  26.  *                                      range (-90 to 90 degrees)
  27.  *          POLAR_ORIGIN_LON_ERROR   : Longitude down from pole outside of valid
  28.  *                                      range (-180 to 360 degrees)
  29.  *          POLAR_EASTING_ERROR      : Easting outside of valid range,
  30.  *                                      depending on ellipsoid and
  31.  *                                      projection parameters
  32.  *          POLAR_NORTHING_ERROR     : Northing outside of valid range,
  33.  *                                      depending on ellipsoid and
  34.  *                                      projection parameters
  35.  *          POLAR_RADIUS_ERROR       : Coordinates too far from pole,
  36.  *                                      depending on ellipsoid and
  37.  *                                      projection parameters
  38.  *          POLAR_A_ERROR            : Semi-major axis less than or equal to zero
  39.  *          POLAR_INV_F_ERROR        : Inverse flattening outside of valid range
  40.  *                      (250 to 350)
  41.  *
  42.  *
  43.  * REUSE NOTES
  44.  *
  45.  *    POLAR STEREOGRAPHIC is intended for reuse by any application that  
  46.  *    performs a Polar Stereographic projection.
  47.  *
  48.  *
  49.  * REFERENCES
  50.  *
  51.  *    Further information on POLAR STEREOGRAPHIC can be found in the
  52.  *    Reuse Manual.
  53.  *
  54.  *
  55.  *    POLAR STEREOGRAPHIC originated from :
  56.  *                                U.S. Army Topographic Engineering Center
  57.  *                                Geospatial Information Division
  58.  *                                7701 Telegraph Road
  59.  *                                Alexandria, VA  22310-3864
  60.  *
  61.  *
  62.  * LICENSES
  63.  *
  64.  *    None apply to this component.
  65.  *
  66.  *
  67.  * RESTRICTIONS
  68.  *
  69.  *    POLAR STEREOGRAPHIC has no restrictions.
  70.  *
  71.  *
  72.  * ENVIRONMENT
  73.  *
  74.  *    POLAR STEREOGRAPHIC was tested and certified in the following
  75.  *    environments:
  76.  *
  77.  *    1. Solaris 2.5 with GCC, version 2.8.1
  78.  *    2. Window 95 with MS Visual C++, version 6
  79.  *
  80.  *
  81.  * MODIFICATIONS
  82.  *
  83.  *    Date              Description
  84.  *    ----              -----------
  85.  *    06-11-95          Original Code
  86.  *    03-01-97          Original Code
  87.  *
  88.  *
  89.  */
  90. /**********************************************************************/
  91. /*
  92.  *                        DEFINES
  93.  */
  94.   #define POLAR_NO_ERROR                0x0000
  95.   #define POLAR_LAT_ERROR               0x0001
  96.   #define POLAR_LON_ERROR               0x0002
  97.   #define POLAR_ORIGIN_LAT_ERROR        0x0004
  98.   #define POLAR_ORIGIN_LON_ERROR        0x0008
  99.   #define POLAR_EASTING_ERROR   0x0010
  100.   #define POLAR_NORTHING_ERROR   0x0020
  101.   #define POLAR_A_ERROR                 0x0040
  102.   #define POLAR_INV_F_ERROR             0x0080
  103.   #define POLAR_RADIUS_ERROR            0x0100
  104. /**********************************************************************/
  105. /*
  106.  *                        FUNCTION PROTOTYPES
  107.  */
  108. /* ensure proper linkage to c++ programs */
  109.   #ifdef __cplusplus
  110. extern "C" {
  111.   #endif
  112.   long Set_Polar_Stereographic_Parameters (double a,
  113.                                            double f,
  114.                                            double Latitude_of_True_Scale,
  115.                                            double Longitude_Down_from_Pole,
  116.                                            double False_Easting,
  117.                                            double False_Northing);
  118. /*  
  119.  *  The function Set_Polar_Stereographic_Parameters receives the ellipsoid
  120.  *  parameters and Polar Stereograpic projection parameters as inputs, and
  121.  *  sets the corresponding state variables.  If any errors occur, error
  122.  *  code(s) are returned by the function, otherwise POLAR_NO_ERROR is returned.
  123.  *
  124.  *  a                : Semi-major axis of ellipsoid, in meters         (input)
  125.  *  f                : Flattening of ellipsoid                         (input)
  126.  *  Latitude_of_True_Scale  : Latitude of true scale, in radians       (input)
  127.  *  Longitude_Down_from_Pole : Longitude down from pole, in radians    (input)
  128.  *  False_Easting    : Easting (X) at center of projection, in meters  (input)
  129.  *  False_Northing   : Northing (Y) at center of projection, in meters (input)
  130.  */
  131.   void Get_Polar_Stereographic_Parameters (double *a,
  132.                                            double *f,
  133.                                            double *Latitude_of_True_Scale,
  134.                                            double *Longitude_Down_from_Pole,
  135.                                            double *False_Easting,
  136.                                            double *False_Northing);
  137. /*
  138.  * The function Get_Polar_Stereographic_Parameters returns the current
  139.  * ellipsoid parameters and Polar projection parameters.
  140.  *
  141.  *  a                : Semi-major axis of ellipsoid, in meters         (output)
  142.  *  f                : Flattening of ellipsoid                         (output)
  143.  *  Latitude_of_True_Scale  : Latitude of true scale, in radians       (output)
  144.  *  Longitude_Down_from_Pole : Longitude down from pole, in radians    (output)
  145.  *  False_Easting    : Easting (X) at center of projection, in meters  (output)
  146.  *  False_Northing   : Northing (Y) at center of projection, in meters (output)
  147.  */
  148.   long Convert_Geodetic_To_Polar_Stereographic (double Latitude,
  149.                                                 double Longitude,
  150.                                                 double *Easting,
  151.                                                 double *Northing);
  152. /*
  153.  * The function Convert_Geodetic_To_Polar_Stereographic converts geodetic
  154.  * coordinates (latitude and longitude) to Polar Stereographic coordinates
  155.  * (easting and northing), according to the current ellipsoid
  156.  * and Polar Stereographic projection parameters. If any errors occur, error
  157.  * code(s) are returned by the function, otherwise POLAR_NO_ERROR is returned.
  158.  *
  159.  *    Latitude   :  Latitude, in radians                      (input)
  160.  *    Longitude  :  Longitude, in radians                     (input)
  161.  *    Easting    :  Easting (X), in meters                    (output)
  162.  *    Northing   :  Northing (Y), in meters                   (output)
  163.  */
  164.   long Convert_Polar_Stereographic_To_Geodetic (double Easting,
  165.                                                 double Northing,
  166.                                                 double *Latitude,
  167.                                                 double *Longitude);
  168. /*
  169.  *  The function Convert_Polar_Stereographic_To_Geodetic converts Polar
  170.  *  Stereographic coordinates (easting and northing) to geodetic
  171.  *  coordinates (latitude and longitude) according to the current ellipsoid
  172.  *  and Polar Stereographic projection Parameters. If any errors occur, the
  173.  *  code(s) are returned by the function, otherwise POLAR_NO_ERROR
  174.  *  is returned.
  175.  *
  176.  *  Easting          : Easting (X), in meters                   (input)
  177.  *  Northing         : Northing (Y), in meters                  (input)
  178.  *  Latitude         : Latitude, in radians                     (output)
  179.  *  Longitude        : Longitude, in radians                    (output)
  180.  *
  181.  */
  182.   #ifdef __cplusplus
  183. }
  184.   #endif
  185. #endif  /* POLARST_H  */