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

GDI/图象编程

开发平台:

Visual C++

  1. #ifndef NZMG_H
  2. #define NZMG_H
  3. /***************************************************************************/
  4. /* RSC IDENTIFIER: NEW ZEALAND MAP GRID
  5.  *
  6.  * ABSTRACT
  7.  *
  8.  *    This component provides conversions between Geodetic coordinates 
  9.  *    (latitude and longitude) and New Zealand Map Grid coordinates
  10.  *    (easting and northing).
  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.  *       NZMG_NO_ERROR              : No errors occurred in function
  20.  *       NZMG_LAT_ERROR             : Latitude outside of valid range
  21.  *                                      (-33.5 to -48.5 degrees)
  22.  *       NZMG_LON_ERROR             : Longitude outside of valid range
  23.  *                                      (165.5 to 180.0 degrees)
  24.  *       NZMG_EASTING_ERROR         : Easting outside of valid range
  25.  *                                      (depending on ellipsoid and
  26.  *                                       projection parameters)
  27.  *       NZMG_NORTHING_ERROR        : Northing outside of valid range
  28.  *                                      (depending on ellipsoid and
  29.  *                                       projection parameters)
  30.  *       NZMG_ELLIPSOID_ERROR       : Invalid ellipsoid - must be International
  31.  *
  32.  * REUSE NOTES
  33.  *
  34.  *    NEW ZEALAND MAP GRID is intended for reuse by any application that 
  35.  *    performs a New Zealand Map Grid projection or its inverse.
  36.  *    
  37.  * REFERENCES
  38.  *
  39.  *    Further information on NEW ZEALAND MAP GRID can be found in the 
  40.  *    Reuse Manual.
  41.  *
  42.  *    NEW ZEALAND MAP GRID originated from :  
  43.  *                      U.S. Army Topographic Engineering Center
  44.  *                      Geospatial Information Division
  45.  *                      7701 Telegraph Road
  46.  *                      Alexandria, VA  22310-3864
  47.  *
  48.  * LICENSES
  49.  *
  50.  *    None apply to this component.
  51.  *
  52.  * RESTRICTIONS
  53.  *
  54.  *    NEW ZEALAND MAP GRID has no restrictions.
  55.  *
  56.  * ENVIRONMENT
  57.  *
  58.  *    NEW ZEALAND MAP GRID was tested and certified in the following 
  59.  *    environments:
  60.  *
  61.  *    1. Solaris 2.5 with GCC, version 2.8.1
  62.  *    2. Windows 95 with MS Visual C++, version 6
  63.  *
  64.  * MODIFICATIONS
  65.  *
  66.  *    Date              Description
  67.  *    ----              -----------
  68.  *    09-14-00          Original Code
  69.  *
  70.  *
  71.  */
  72. /***************************************************************************/
  73. /*
  74.  *                              DEFINES
  75.  */
  76. #define NZMG_NO_ERROR           0x0000
  77. #define NZMG_LAT_ERROR          0x0001
  78. #define NZMG_LON_ERROR          0x0002
  79. #define NZMG_EASTING_ERROR      0x0004
  80. #define NZMG_NORTHING_ERROR     0x0008
  81. #define NZMG_ELLIPSOID_ERROR    0x0010
  82. /***************************************************************************/
  83. /*
  84.  *                              FUNCTION PROTOTYPES
  85.  *                                for NZMG.C
  86.  */
  87. /* ensure proper linkage to c++ programs */
  88. #ifdef __cplusplus
  89. extern "C" {
  90. #endif
  91. long Set_NZMG_Parameters(char *Ellipsoid_Code);
  92. /*
  93.  * The function Set_NZMG_Parameters receives the ellipsoid code and sets
  94.  * the corresponding state variables. If any errors occur, the error code(s)
  95.  * are returned by the function, otherwise NZMG_NO_ERROR is returned.
  96.  *
  97.  *   Ellipsoid_Code : 2-letter code for ellipsoid           (input)
  98.  */
  99. void Get_NZMG_Parameters(char *Ellipsoid_Code);
  100.                         
  101. /*                         
  102.  * The function Get_NZMG_Parameters returns the current ellipsoid
  103.  * code.
  104.  *
  105.  *   Ellipsoid_Code : 2-letter code for ellipsoid          (output)
  106.  */
  107. long Convert_Geodetic_To_NZMG (double Latitude,
  108.                                double Longitude,
  109.                                double *Easting,
  110.                                double *Northing);
  111. /*
  112.  * The function Convert_Geodetic_To_NZMG converts geodetic (latitude and
  113.  * longitude) coordinates to New Zealand Map Grid projection (easting and northing)
  114.  * coordinates, according to the current ellipsoid and New Zealand Map Grid 
  115.  * projection parameters.  If any errors occur, the error code(s) are returned 
  116.  * by the function, otherwise NZMG_NO_ERROR is returned.
  117.  *
  118.  *    Latitude          : Latitude (phi), in radians           (input)
  119.  *    Longitude         : Longitude (lambda), in radians       (input)
  120.  *    Easting           : Easting (X), in meters               (output)
  121.  *    Northing          : Northing (Y), in meters              (output)
  122.  */
  123. long Convert_NZMG_To_Geodetic(double Easting,
  124.                               double Northing,
  125.                               double *Latitude,
  126.                               double *Longitude);
  127. /*
  128.  * The function Convert_NZMG_To_Geodetic converts New Zealand Map Grid projection
  129.  * (easting and northing) coordinates to geodetic (latitude and longitude)
  130.  * coordinates, according to the current ellipsoid and New Zealand Map Grid projection
  131.  * coordinates.  If any errors occur, the error code(s) are returned by the
  132.  * function, otherwise NZMG_NO_ERROR is returned.
  133.  *
  134.  *    Easting           : Easting (X), in meters                  (input)
  135.  *    Northing          : Northing (Y), in meters                 (input)
  136.  *    Latitude          : Latitude (phi), in radians              (output)
  137.  *    Longitude         : Longitude (lambda), in radians          (output)
  138.  */
  139. #ifdef __cplusplus
  140. }
  141. #endif
  142. #endif /* NZMG_H */