29 #ifndef COORDINATEOPERATION_HH_INCLUDED 30 #define COORDINATEOPERATION_HH_INCLUDED 39 #include "metadata.hpp" 66 std::string shortName{};
67 std::string fullName{};
68 std::string packageName{};
71 bool directDownload =
false;
74 bool available =
false;
82 PROJ_DLL ~GridDescription();
83 PROJ_DLL GridDescription(
const GridDescription &);
84 PROJ_DLL GridDescription(GridDescription &&) noexcept;
127 PROJ_DLL
const std::vector<metadata::PositionalAccuracyNNPtr> &
128 coordinateOperationAccuracies()
const;
132 PROJ_DLL
const crs::CRSPtr &interpolationCRS()
const;
134 sourceCoordinateEpoch()
const;
136 targetCoordinateEpoch()
const;
146 PROJ_DLL
virtual std::set<GridDescription>
159 void setWeakSourceTargetCRS(std::weak_ptr<crs::CRS> sourceCRSIn,
160 std::weak_ptr<crs::CRS> targetCRSIn);
165 const std::vector<metadata::PositionalAccuracyNNPtr> &accuracies);
168 PROJ_OPAQUE_PRIVATE_DATA
188 util::IComparable::Criterion::STRICT)
const override = 0;
195 PROJ_OPAQUE_PRIVATE_DATA
229 util::IComparable::Criterion::STRICT)
const override;
241 PROJ_OPAQUE_PRIVATE_DATA
248 struct MethodMapping;
270 util::IComparable::Criterion::STRICT)
const override = 0;
280 const MethodMapping *mapping)
285 PROJ_OPAQUE_PRIVATE_DATA
338 create(
const std::string &stringValueIn);
342 createFilename(
const std::string &stringValueIn);
344 PROJ_DLL
const Type &type() PROJ_CONST_DECL;
346 PROJ_DLL
const std::string &stringValue() PROJ_CONST_DECL;
347 PROJ_DLL
const std::string &valueFile() PROJ_CONST_DECL;
348 PROJ_DLL
int integerValue() PROJ_CONST_DECL;
349 PROJ_DLL
bool booleanValue() PROJ_CONST_DECL;
354 util::IComparable::Criterion::STRICT)
const override;
363 PROJ_OPAQUE_PRIVATE_DATA
394 util::IComparable::Criterion::STRICT)
const override;
403 convertFromAbridged(
const std::string ¶mName,
double &val,
419 const MethodMapping *mapping)
423 PROJ_OPAQUE_PRIVATE_DATA
453 formulaCitation() PROJ_CONST_DECL;
454 PROJ_DLL
const std::vector<GeneralOperationParameterNNPtr> &
455 parameters() PROJ_CONST_DECL;
464 const std::vector<GeneralOperationParameterNNPtr> ¶meters);
468 const std::vector<OperationParameterNNPtr> ¶meters);
473 util::IComparable::Criterion::STRICT)
const override;
481 PROJ_OPAQUE_PRIVATE_DATA
494 PROJ_DLL
explicit InvalidOperation(
const std::string &message);
495 PROJ_DLL InvalidOperation(
const InvalidOperation &other);
496 PROJ_DLL ~InvalidOperation()
override;
519 PROJ_DLL
const std::vector<GeneralParameterValueNNPtr> &
520 parameterValues() PROJ_CONST_DECL;
524 parameterValue(
const std::string ¶mName,
int epsg_code = 0)
const 527 parameterValueMeasure(
const std::string ¶mName,
int epsg_code = 0)
const 533 const std::vector<metadata::PositionalAccuracyNNPtr> &accuracies =
534 std::vector<metadata::PositionalAccuracyNNPtr>());
539 util::IComparable::Criterion::STRICT)
const override;
541 PROJ_DLL std::set<GridDescription>
547 parameterValueNumeric(
const std::string ¶mName,
int epsg_code,
550 double parameterValueNumeric(
const char *paramName,
int epsg_code,
553 double parameterValueNumericAsSI(
const std::string ¶mName,
554 int epsg_code)
const noexcept;
555 double parameterValueNumericAsSI(
const char *paramName,
int epsg_code)
const 564 setParameterValues(
const std::vector<GeneralParameterValueNNPtr> &values);
571 PROJ_OPAQUE_PRIVATE_DATA
803 PROJ_DLL
bool isUTM(
int &zone,
bool &north)
const;
810 const std::vector<GeneralParameterValueNNPtr>
816 const std::vector<OperationParameterNNPtr> ¶meters,
817 const std::vector<ParameterValueNNPtr>
829 PROJ_DLL
static ConversionNNPtr createGaussSchreiberTransverseMercator(
879 PROJ_DLL
static ConversionNNPtr createLambertConicConformal_2SP_Michigan(
889 PROJ_DLL
static ConversionNNPtr createLambertConicConformal_2SP_Belgium(
919 PROJ_DLL
static ConversionNNPtr createLambertCylindricalEqualAreaSpherical(
1050 createHotineObliqueMercatorTwoPointNaturalOrigin(
1112 PROJ_DLL
static ConversionNNPtr createPopularVisualisationPseudoMercator(
1251 const std::vector<GeneralParameterValueNNPtr> &values);
1259 PROJ_OPAQUE_PRIVATE_DATA
1264 const std::vector<ParameterValueNNPtr> &values);
1268 const std::vector<ParameterValueNNPtr> &values);
1304 PROJ_DLL std::vector<double>
1305 getTOWGS84Parameters()
const;
1312 const std::vector<GeneralParameterValueNNPtr> &values,
1313 const std::vector<metadata::PositionalAccuracyNNPtr>
1321 const std::vector<OperationParameterNNPtr> ¶meters,
1322 const std::vector<ParameterValueNNPtr> &values,
1323 const std::vector<metadata::PositionalAccuracyNNPtr>
1329 double translationYMetre,
double translationZMetre,
1330 const std::vector<metadata::PositionalAccuracyNNPtr> &accuracies);
1335 double translationYMetre,
double translationZMetre,
1336 double rotationXArcSecond,
double rotationYArcSecond,
1337 double rotationZArcSecond,
double scaleDifferencePPM,
1338 const std::vector<metadata::PositionalAccuracyNNPtr> &accuracies);
1343 double translationYMetre,
double translationZMetre,
1344 double rotationXArcSecond,
double rotationYArcSecond,
1345 double rotationZArcSecond,
double scaleDifferencePPM,
1346 const std::vector<metadata::PositionalAccuracyNNPtr> &accuracies);
1351 double translationYMetre,
double translationZMetre,
1352 double rotationXArcSecond,
double rotationYArcSecond,
1353 double rotationZArcSecond,
double scaleDifferencePPM,
1354 double rateTranslationX,
double rateTranslationY,
1355 double rateTranslationZ,
double rateRotationX,
double rateRotationY,
1356 double rateRotationZ,
double rateScaleDifference,
1357 double referenceEpochYear,
1358 const std::vector<metadata::PositionalAccuracyNNPtr> &accuracies);
1361 createTimeDependentCoordinateFrameRotation(
1364 double translationYMetre,
double translationZMetre,
1365 double rotationXArcSecond,
double rotationYArcSecond,
1366 double rotationZArcSecond,
double scaleDifferencePPM,
1367 double rateTranslationX,
double rateTranslationY,
1368 double rateTranslationZ,
double rateRotationX,
double rateRotationY,
1369 double rateRotationZ,
double rateScaleDifference,
1370 double referenceEpochYear,
1371 const std::vector<metadata::PositionalAccuracyNNPtr> &accuracies);
1375 const std::vector<double> &TOWGS84Parameters);
1379 const crs::CRSNNPtr &targetCRSIn,
const std::string &filename,
1380 const std::vector<metadata::PositionalAccuracyNNPtr> &accuracies);
1385 double translationYMetre,
double translationZMetre,
1386 double semiMajorAxisDifferenceMetre,
double flattingDifference,
1387 const std::vector<metadata::PositionalAccuracyNNPtr> &accuracies);
1392 double translationYMetre,
double translationZMetre,
1393 double semiMajorAxisDifferenceMetre,
double flattingDifference,
1394 const std::vector<metadata::PositionalAccuracyNNPtr> &accuracies);
1397 createGravityRelatedHeightToGeographic3D(
1399 const crs::CRSNNPtr &targetCRSIn,
const std::string &filename,
1400 const std::vector<metadata::PositionalAccuracyNNPtr> &accuracies);
1404 const crs::CRSNNPtr &targetCRSIn,
const std::string &filename,
1405 const std::vector<metadata::PositionalAccuracyNNPtr> &accuracies);
1415 const std::vector<metadata::PositionalAccuracyNNPtr> &accuracies);
1421 const std::vector<metadata::PositionalAccuracyNNPtr> &accuracies);
1427 const std::vector<metadata::PositionalAccuracyNNPtr> &accuracies);
1432 const std::vector<metadata::PositionalAccuracyNNPtr> &accuracies);
1440 getNTv2Filename()
const;
1442 const std::string &getHeightToGeographic3DFilename()
const;
1444 bool isLongitudeRotation()
const;
1456 const std::vector<GeneralParameterValueNNPtr> &values,
1457 const std::vector<metadata::PositionalAccuracyNNPtr> &accuracies);
1466 PROJ_OPAQUE_PRIVATE_DATA
1521 PROJ_DLL
const std::vector<CoordinateOperationNNPtr> &operations()
const;
1533 util::IComparable::Criterion::STRICT)
const override;
1537 const std::vector<CoordinateOperationNNPtr> &operationsIn,
1538 const std::vector<metadata::PositionalAccuracyNNPtr>
1542 const std::vector<CoordinateOperationNNPtr> &operationsIn,
1545 PROJ_DLL std::set<GridDescription>
1550 const std::vector<CoordinateOperationNNPtr> &operationsIn);
1558 PROJ_OPAQUE_PRIVATE_DATA
1568 std::unique_ptr<CoordinateOperationContext>;
1592 PROJ_DLL
double getDesiredAccuracy()
const;
1594 PROJ_DLL
void setDesiredAccuracy(
double accuracy);
1624 PARTIAL_INTERSECTION
1631 PROJ_DLL
void setUsePROJAlternativeGridNames(
bool usePROJNames);
1633 PROJ_DLL
bool getUsePROJAlternativeGridNames()
const;
1642 DISCARD_OPERATION_IF_MISSING_GRID,
1646 IGNORE_GRID_AVAILABILITY,
1653 PROJ_DLL
void setAllowUseIntermediateCRS(
bool use);
1655 PROJ_DLL
bool getAllowUseIntermediateCRS()
const;
1658 setIntermediateCRS(
const std::vector<std::pair<std::string, std::string>>
1659 &intermediateCRSAuthCodes);
1661 PROJ_DLL
const std::vector<std::pair<std::string, std::string>> &
1662 getIntermediateCRS()
const;
1673 PROJ_OPAQUE_PRIVATE_DATA
1681 std::unique_ptr<CoordinateOperationFactory>;
1702 PROJ_DLL std::vector<CoordinateOperationNNPtr>
1714 PROJ_OPAQUE_PRIVATE_DATA
1721 #endif // COORDINATEOPERATION_HH_INCLUDED std::shared_ptr< ParameterValue > ParameterValuePtr
Definition: coordinateoperation.hpp:299
std::shared_ptr< GeneralOperationParameter > GeneralOperationParameterPtr
Definition: coordinateoperation.hpp:201
Interface for an object that can be compared to another.
Definition: util.hpp:292
util::nn< CoordinateOperationContextPtr > CoordinateOperationContextNNPtr
Definition: coordinateoperation.hpp:1570
util::nn< CoordinateOperationPtr > CoordinateOperationNNPtr
Definition: coordinateoperation.hpp:94
Abstract class modelling a parameter value (OperationParameter) or group of parameters.
Definition: coordinateoperation.hpp:179
A parameter value, ordered sequence of values, or reference to a file of parameter values...
Definition: coordinateoperation.hpp:382
std::shared_ptr< OperationParameter > OperationParameterPtr
Definition: coordinateoperation.hpp:209
std::shared_ptr< SingleOperation > SingleOperationPtr
Definition: coordinateoperation.hpp:504
std::shared_ptr< OperationMethod > OperationMethodPtr
Definition: coordinateoperation.hpp:432
Abstract class modelling a parameter value (OperationParameterValue) or group of parameter values...
Definition: coordinateoperation.hpp:256
A mathematical operation that describes the change of coordinate values within one coordinate referen...
Definition: coordinateoperation.hpp:1486
std::unique_ptr< CoordinateOperationContext > CoordinateOperationContextPtr
Definition: coordinateoperation.hpp:1568
Creates coordinate operations. This factory is capable to find coordinate transformations or conversi...
Definition: coordinateoperation.hpp:1693
std::shared_ptr< AuthorityFactory > AuthorityFactoryPtr
Definition: io.hpp:668
Numeric value associated with a UnitOfMeasure.
Definition: common.hpp:136
Usage of a CRS-related object.
Definition: common.hpp:399
std::shared_ptr< CRS > CRSPtr
Definition: coordinateoperation.hpp:45
util::nn< OperationParameterValuePtr > OperationParameterValueNNPtr
Definition: coordinateoperation.hpp:373
Context in which a coordinate operation is to be used.
Definition: coordinateoperation.hpp:1580
Root exception class.
Definition: util.hpp:645
util::nn< GeneralOperationParameterPtr > GeneralOperationParameterNNPtr
Definition: coordinateoperation.hpp:203
Numeric value, with a linear unit of measure.
Definition: common.hpp:204
util::nn< PointMotionOperationPtr > PointMotionOperationNNPtr
Definition: coordinateoperation.hpp:1476
An ordered sequence of two or more single coordinate operations (SingleOperation).
Definition: coordinateoperation.hpp:1515
Grid description.
Definition: coordinateoperation.hpp:65
The value of the coordinate operation parameter.
Definition: coordinateoperation.hpp:310
Criterion
Comparison criterion.
Definition: util.hpp:299
A mathematical operation on coordinates in which the parameter values are defined rather than empiric...
Definition: coordinateoperation.hpp:786
GridAvailabilityUse
Definition: coordinateoperation.hpp:1636
std::unique_ptr< CoordinateOperationFactory > CoordinateOperationFactoryPtr
Definition: coordinateoperation.hpp:1681
Abstract class modelling a single coordinate reference system that is defined through the application...
Definition: crs.hpp:433
util::nn< OperationMethodPtr > OperationMethodNNPtr
Definition: coordinateoperation.hpp:434
std::shared_ptr< CoordinateOperation > CoordinateOperationPtr
Definition: coordinateoperation.hpp:92
The definition of a parameter used by a coordinate operation method.
Definition: coordinateoperation.hpp:220
util::nn< DatabaseContextPtr > DatabaseContextNNPtr
Definition: io.hpp:128
Abstract class for a mathematical operation on coordinates.
Definition: coordinateoperation.hpp:118
The method (algorithm or procedure) used to perform the coordinate operation.
Definition: coordinateoperation.hpp:444
util::nn< CRSPtr > CRSNNPtr
Definition: coordinateoperation.hpp:46
util::nn< ParameterValuePtr > ParameterValueNNPtr
Definition: coordinateoperation.hpp:301
util::nn< CoordinateOperationFactoryPtr > CoordinateOperationFactoryNNPtr
Definition: coordinateoperation.hpp:1683
Builds object from an authority database.
Definition: io.hpp:680
Type
Definition: coordinateoperation.hpp:315
std::shared_ptr< DatabaseContext > DatabaseContextPtr
Definition: io.hpp:126
Wrapper of a std::map<std::string, BaseObjectNNPtr>
Definition: util.hpp:410
Class that can be derived from, to emulate Java's Object behaviour.
Definition: util.hpp:268
SpatialCriterion
Definition: coordinateoperation.hpp:1617
std::string shortName
Definition: coordinateoperation.hpp:66
A derived coordinate reference system which has a geodetic (usually geographic) coordinate reference ...
Definition: crs.hpp:497
Numeric value, with a angular unit of measure.
Definition: common.hpp:186
util::nn< TransformationPtr > TransformationNNPtr
Definition: coordinateoperation.hpp:1277
Interface for an object that can be exported to a PROJ string.
Definition: io.hpp:451
Numeric value, without a physical unit of measure.
Definition: common.hpp:168
std::shared_ptr< OperationParameterValue > OperationParameterValuePtr
Definition: coordinateoperation.hpp:371
Unit of measure.
Definition: common.hpp:60
util::nn< GeneralParameterValuePtr > GeneralParameterValueNNPtr
Definition: coordinateoperation.hpp:293
std::shared_ptr< PointMotionOperation > PointMotionOperationPtr
Definition: coordinateoperation.hpp:1474
std::shared_ptr< Conversion > ConversionPtr
Definition: coordinateoperation.hpp:579
std::shared_ptr< ConcatenatedOperation > ConcatenatedOperationPtr
Definition: coordinateoperation.hpp:1501
util::nn< SingleOperationPtr > SingleOperationNNPtr
Definition: coordinateoperation.hpp:506
std::shared_ptr< GeneralParameterValue > GeneralParameterValuePtr
Definition: coordinateoperation.hpp:291
std::shared_ptr< Transformation > TransformationPtr
Definition: coordinateoperation.hpp:1275
SourceTargetCRSExtentUse
Definition: coordinateoperation.hpp:1599
Interface for an object that can be exported to WKT.
Definition: io.hpp:423
Exception that can be thrown when an invalid operation is attempted to be constructed.
Definition: coordinateoperation.hpp:490
util::nn< OperationParameterPtr > OperationParameterNNPtr
Definition: coordinateoperation.hpp:211
util::nn< ConversionPtr > ConversionNNPtr
Definition: coordinateoperation.hpp:581
Loose transposition of std::optional available from C++17.
Definition: util.hpp:178
util::nn< ConcatenatedOperationPtr > ConcatenatedOperationNNPtr
Definition: coordinateoperation.hpp:1503
A single (not concatenated) coordinate operation (CoordinateOperation)
Definition: coordinateoperation.hpp:513
Identifications of a CRS-related object.
Definition: common.hpp:269