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 );