2 #ifndef CoordinateConversionService_H 
    3 #define CoordinateConversionService_H 
   84 #include "CoordinateType.h" 
   85 #include "Precision.h" 
   86 #include "SourceOrTarget.h" 
   87 #include "CoordinateTuple.h" 
   92 #define MSP_CCS __declspec(dllexport) 
   94 #define MSP_CCS __declspec(dllimport) 
  104     class EllipsoidLibrary;
 
  105     class EllipsoidLibraryImplementation;
 
  107     class DatumLibraryImplementation;
 
  110     class CoordinateSystemParameters;
 
  111     class CoordinateTuple;
 
  112     class MapProjection3Parameters;
 
  113     class MapProjection4Parameters;
 
  114     class MapProjection5Parameters;
 
  115     class MapProjection6Parameters;
 
  116     class EquidistantCylindricalParameters;
 
  117     class GeodeticParameters;
 
  118     class LocalCartesianParameters;
 
  119     class MercatorStandardParallelParameters;
 
  120     class MercatorScaleFactorParameters;
 
  121     class NeysParameters;
 
  122     class ObliqueMercatorParameters;
 
  123     class PolarStereographicStandardParallelParameters;
 
  124     class PolarStereographicScaleFactorParameters;
 
  126     class MapProjectionCoordinates;
 
  127     class BNGCoordinates;
 
  128     class CartesianCoordinates;
 
  129     class GeodeticCoordinates;
 
  130     class GEOREFCoordinates;
 
  131     class GARSCoordinates;
 
  132     class MGRSorUSNGCoordinates;
 
  133     class UPSCoordinates;
 
  134     class UTMCoordinates;
 
  135     class CoordinateSystem;
 
  144     const int NUMBER_COORD_SYS = 37;       
 
  145     const int COORD_SYS_CODE_LENGTH = 3;   
 
  146     const int COORD_SYS_NAME_LENGTH = 50;  
 
  147     const int DATUM_CODE_LENGTH = 7;       
 
  148     const int DATUM_NAME_LENGTH = 33;      
 
  149     const int ELLIPSOID_CODE_LENGTH = 3;   
 
  150     const int ELLIPSOID_NAME_LENGTH = 30;  
 
  151     const int CONVERT_MSG_LENGTH = 2048;   
 
  152     const int RETURN_MSG_LENGTH = 256;     
 
  174    class MSP_CCS CoordinateConversionService
 
  254       void convertSourceToTargetCollection( 
const std::vector<MSP::CCS::CoordinateTuple*>& sourceCoordinates, 
const std::vector<MSP::CCS::Accuracy*>& sourceAccuracy, std::vector<MSP::CCS::CoordinateTuple*>& targetCoordinates, std::vector<MSP::CCS::Accuracy*>& targetAccuracy );
 
  267       void convertTargetToSourceCollection( 
const std::vector<MSP::CCS::CoordinateTuple*>& targetCoordinates, 
const std::vector<MSP::CCS::Accuracy*>& targetAccuracy, std::vector<MSP::CCS::CoordinateTuple*>& sourceCoordinates, std::vector<MSP::CCS::Accuracy*>& sourceAccuracy );
 
  293       int getServiceVersion();
 
  303       const char* getDatum( 
const SourceOrTarget::Enum direction ) 
const;
 
  382       struct Coordinate_System_Row
 
  384         char Name[COORD_SYS_NAME_LENGTH];
 
  385         char Code[COORD_SYS_CODE_LENGTH];
 
  386         CoordinateType::Enum coordinateSystem;
 
  391       struct Coordinate_State_Row
 
  393         char datumCode[DATUM_CODE_LENGTH];   
 
  395         CoordinateType::Enum coordinateType; 
 
  396         Parameters parameters;               
 
  402       Coordinate_State_Row coordinateSystemState[2];
 
  405       Coordinate_System_Row Coordinate_System_Table[NUMBER_COORD_SYS];
 
  407       long WGS84_datum_index;
 
  416       void setDataLibraries();
 
  426       void initCoordinateSystemState( 
const SourceOrTarget::Enum direction );
 
  436       void deleteCoordinateSystem( 
const SourceOrTarget::Enum direction );
 
  449       void copyParameters( SourceOrTarget::Enum direction, CoordinateType::Enum coordinateType, Parameters parameters );
 
  461       void setDatum( 
const SourceOrTarget::Enum direction, 
const char* index );
 
  484       void setParameters( 
const SourceOrTarget::Enum direction );
 
  503       void convertGeodeticToTarget( SourceOrTarget::Enum targetDirection, 
GeodeticCoordinates* _shiftedGeodetic, 
CoordinateTuple& targetCoordinates, 
char* targetWarningMessage );
 
  516       void convertCollection( 
const std::vector<MSP::CCS::CoordinateTuple*>& sourceCoordinatesCollection, 
const std::vector<MSP::CCS::Accuracy*>& sourceAccuracyCollection, std::vector<MSP::CCS::CoordinateTuple*>& targetCoordinatesCollection, std::vector<MSP::CCS::Accuracy*>& targetAccuracyCollection );