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

GDI/图象编程

开发平台:

Visual C++

  1. #ifndef BNG_H
  2. #define BNG_H
  3. /***************************************************************************/
  4. /* RSC IDENTIFIER: BRITISH NATIONAL GRID
  5.  *
  6.  * ABSTRACT
  7.  *
  8.  *    This component provides conversions between Geodetic coordinates 
  9.  *    (latitude and longitude) and British National Grid 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.  *       BNG_NO_ERROR               : No errors occurred in function
  19.  *       BNG_LAT_ERROR              : Latitude outside of valid range
  20.  *                                      (49.5 to 61.5 degrees)
  21.  *       BNG_LON_ERROR              : Longitude outside of valid range
  22.  *                                      (-10.0 to 3.5 degrees)
  23.  *       BNG_EASTING_ERROR          : Easting outside of valid range
  24.  *                                      (depending on ellipsoid and
  25.  *                                       projection parameters)
  26.  *       BNG_NORTHING_ERROR         : Northing outside of valid range
  27.  *                                      (depending on ellipsoid and
  28.  *                                       projection parameters)
  29.  *       BNG_STRING_ERROR           : A BNG string error: string too long,
  30.  *                                      too short, or badly formed
  31.  *       BNG_INVALID_AREA_ERROR     : Coordinate is outside of valid area
  32.  *       BNG_ELLIPSOID_ERROR        : Invalid ellipsoid - must be Airy
  33.  *
  34.  * REUSE NOTES
  35.  *
  36.  *    BRITISH NATIONAL GRID is intended for reuse by any application that 
  37.  *    performs a British National Grid projection or its inverse.
  38.  *    
  39.  * REFERENCES
  40.  *
  41.  *    Further information on BRITISH NATIONAL GRID can be found in the 
  42.  *    Reuse Manual.
  43.  *
  44.  *    BRITISH NATIONAL GRID originated from :  
  45.  *                      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.  *    BRITISH NATIONAL GRID has no restrictions.
  57.  *
  58.  * ENVIRONMENT
  59.  *
  60.  *    BRITISH NATIONAL GRID was tested and certified in the following 
  61.  *    environments:
  62.  *
  63.  *    1. Solaris 2.5 with GCC, version 2.8.1
  64.  *    2. Windows 95 with MS Visual C++, version 6
  65.  *
  66.  * MODIFICATIONS
  67.  *
  68.  *    Date              Description
  69.  *    ----              -----------
  70.  *    09-06-00          Original Code
  71.  *
  72.  *
  73.  */
  74. /***************************************************************************/
  75. /*
  76.  *                              DEFINES
  77.  */
  78. #define BNG_NO_ERROR           0x0000
  79. #define BNG_LAT_ERROR          0x0001
  80. #define BNG_LON_ERROR          0x0002
  81. #define BNG_EASTING_ERROR      0x0004
  82. #define BNG_NORTHING_ERROR     0x0008
  83. #define BNG_INVALID_AREA_ERROR 0x0010
  84. #define BNG_STRING_ERROR       0x0020
  85. #define BNG_ELLIPSOID_ERROR    0x0040
  86. /***************************************************************************/
  87. /*
  88.  *                              FUNCTION PROTOTYPES
  89.  *                                for BNG.C
  90.  */
  91. /* ensure proper linkage to c++ programs */
  92. #ifdef __cplusplus
  93. extern "C" {
  94. #endif
  95. long Set_BNG_Parameters(char *Ellipsoid_Code);
  96.                         
  97. /*
  98.  * The function Set_BNG_Parameters receives the ellipsoid code and sets
  99.  * the corresponding state variables. If any errors occur, the error code(s)
  100.  * are returned by the function, otherwise BNG_NO_ERROR is returned.
  101.  *
  102.  *   Ellipsoid_Code : 2-letter code for ellipsoid           (input)
  103.  */
  104. void Get_BNG_Parameters(char *Ellipsoid_Code);
  105. /*                         
  106.  * The function Get_BNG_Parameters returns the current ellipsoid
  107.  * code.
  108.  *
  109.  *   Ellipsoid_Code : 2-letter code for ellipsoid           (output)
  110.  */
  111. long Convert_Geodetic_To_BNG (double Latitude,
  112.                               double Longitude,
  113.                               long Precision,
  114.                               char* BNG);
  115. /*
  116.  * The function Convert_Geodetic_To_BNG converts geodetic (latitude and
  117.  * longitude) coordinates to a BNG coordinate string, according to the 
  118.  * current ellipsoid parameters.  If any errors occur, the error code(s)  
  119.  * are returned by the function, otherwise BNG_NO_ERROR is returned.
  120.  * 
  121.  *    Latitude   : Latitude, in radians                    (input)
  122.  *    Longitude  : Longitude, in radians                   (input)
  123.  *    Precision  : Precision level of BNG string           (input)
  124.  *    BNG        : British National Grid coordinate string (output)
  125.  *  
  126.  */
  127. long Convert_BNG_To_Geodetic (char *BNG, 
  128.                               double *Latitude, 
  129.                               double *Longitude);
  130. /*
  131.  * The function Convert_BNG_To_Geodetic converts a BNG coordinate string 
  132.  * to geodetic (latitude and longitude) coordinates, according to the current
  133.  * ellipsoid parameters. If any errors occur, the error code(s) are returned 
  134.  * by the function, otherwise BNG_NO_ERROR is returned. 
  135.  * 
  136.  *    BNG        : British National Grid coordinate string (input)
  137.  *    Latitude   : Latitude, in radians                    (output)
  138.  *    Longitude  : Longitude, in radians                   (output)
  139.  *  
  140.  */
  141. long Convert_Transverse_Mercator_To_BNG(double Easting,
  142.                                         double Northing,            
  143.                                         long Precision,
  144.                                         char *BNG);
  145. /*
  146.  * The function Convert_Transverse_Mercator_To_BNG converts Transverse Mercator
  147.  * (easting and northing) coordinates to a BNG coordinate string, according
  148.  * to the current ellipsoid parameters.  If any errors occur, the error code(s)
  149.  * are returned by the function, otherwise BNG_NO_ERROR is returned.
  150.  *
  151.  *    Easting    : Easting (X), in meters                  (input)
  152.  *    Northing   : Northing (Y), in meters                 (input)
  153.  *    Precision  : Precision level of BNG string           (input)
  154.  *    BNG        : British National Grid coordinate string (output)
  155.  */
  156. long Convert_BNG_To_Transverse_Mercator(char *BNG,
  157.                                         double *Easting,
  158.                                         double *Northing);
  159. /*
  160.  * The function Convert_BNG_To_Transverse_Mercator converts a BNG coordinate string
  161.  * to Transverse Mercator projection (easting and northing) coordinates 
  162.  * according to the current ellipsoid parameters.  If any errors occur, 
  163.  * the error code(s) are returned by the function, otherwise BNG_NO_ERROR 
  164.  * is returned.
  165.  *
  166.  *    BNG        : British National Grid coordinate string (input)
  167.  *    Easting    : Easting (X), in meters                  (output)
  168.  *    Northing   : Northing (Y), in meters                 (output)
  169.  */
  170. #ifdef __cplusplus
  171. }
  172. #endif
  173. #endif /* BNG_H */