3 #ifndef DatumLibraryImplementation_H
4 #define DatumLibraryImplementation_H
134 class CCSThreadMutex;
139 class EllipsoidLibraryImplementation;
140 class CartesianCoordinates;
141 class GeodeticCoordinates;
161 static void removeInstance();
190 void define3ParamDatum(
const char *code,
const char *name,
const char *ellipsoidCode,
191 double deltaX,
double deltaY,
double deltaZ,
192 double sigmaX,
double sigmaY,
double sigmaZ,
193 double westLongitude,
double eastLongitude,
double southLatitude,
double northLatitude );
220 void define7ParamDatum(
const char *code,
const char *name,
const char *ellipsoidCode,
221 double deltaX,
double deltaY,
double deltaZ,
222 double rotationX,
double rotationY,
double rotationZ,
223 double scale,
double westLongitude,
224 double eastLongitude,
double southLatitude,
225 double northLatitude);
238 void removeDatum(
const char* code );
248 void datumCount(
long *count );
260 void datumIndex(
const char *code,
long *index );
271 void datumCode(
const long index,
char *code );
282 void datumName(
const long index,
char *name );
294 void datumEllipsoidCode(
const long index,
char *code );
307 void datumStandardErrors(
const long index,
double *sigmaX,
double *sigmaY,
double *sigmaZ );
322 void datumSevenParameters(
const long index,
double *rotationX,
double *rotationY,
double *rotationZ,
double *scaleFactor);
335 void datumTranslationValues(
357 const long sourceIndex,
358 const long targetIndex,
375 void datumUserDefined(
const long index,
long *result );
385 bool datumUsesEllipsoid(
const char *ellipsoidCode );
400 void datumValidRectangle(
const long index,
double *westLongitude,
double *eastLongitude,
double *southLatitude,
double *northLatitude );
419 CartesianCoordinates* geocentricDatumShift(
const long sourceIndex,
const double sourceX,
const double sourceY,
const double sourceZ,
420 const long targetIndex );
437 CartesianCoordinates* geocentricShiftFromWGS84(
const double WGS84X,
const double WGS84Y,
const double WGS84Z,
const long targetIndex );
454 CartesianCoordinates* geocentricShiftToWGS84(
const long sourceIndex,
const double sourceX,
const double sourceY,
const double sourceZ );
474 const long targetIndex );
492 const long targetIndex );
521 void retrieveDatumType(
const long index,
DatumType::Enum *datumType );
536 void validDatum(
const long index,
double longitude,
double latitude,
long *result );
570 static int instanceCount;
572 std::vector<Datum*> datumList;
576 long datum3ParamCount;
577 long datum7ParamCount;
595 void write3ParamFile();
603 void write7ParamFile();
618 GeodeticCoordinates* geodeticShiftWGS84ToWGS72(
const double WGS84Longitude,
const double WGS84Latitude,
const double WGS84Height );
634 GeodeticCoordinates* geodeticShiftWGS72ToWGS84(
const double WGS72Longitude,
const double WGS72Latitude,
const double WGS72Height );
649 CartesianCoordinates* geocentricShiftWGS84ToWGS72(
const double X_WGS84,
const double Y_WGS84,
const double Z_WGS84 );
664 CartesianCoordinates* geocentricShiftWGS72ToWGS84(
const double X,
const double Y,
const double Z );
671 static void deleteInstance();