diff options
| author | Even Rouault <even.rouault@spatialys.com> | 2019-12-16 15:23:22 +0100 |
|---|---|---|
| committer | Even Rouault <even.rouault@spatialys.com> | 2019-12-16 17:50:39 +0100 |
| commit | bd9ecbacf575a1926fb8e223c4add1a4cc45d7f3 (patch) | |
| tree | 770cc59bf111f8b427d9bc14ea7548ff3edbc9b3 /include/proj | |
| parent | a68c146d7f3c1efb0f42b46c708a0a195e51a2ff (diff) | |
| download | PROJ-bd9ecbacf575a1926fb8e223c4add1a4cc45d7f3.tar.gz PROJ-bd9ecbacf575a1926fb8e223c4add1a4cc45d7f3.zip | |
identify(): take into datum name aliases (fixes #1800)
Diffstat (limited to 'include/proj')
| -rw-r--r-- | include/proj/common.hpp | 41 | ||||
| -rw-r--r-- | include/proj/coordinateoperation.hpp | 61 | ||||
| -rw-r--r-- | include/proj/coordinatesystem.hpp | 12 | ||||
| -rw-r--r-- | include/proj/crs.hpp | 138 | ||||
| -rw-r--r-- | include/proj/datum.hpp | 98 | ||||
| -rw-r--r-- | include/proj/internal/coordinateoperation_internal.hpp | 33 | ||||
| -rw-r--r-- | include/proj/io.hpp | 5 | ||||
| -rw-r--r-- | include/proj/metadata.hpp | 39 | ||||
| -rw-r--r-- | include/proj/util.hpp | 18 |
9 files changed, 260 insertions, 185 deletions
diff --git a/include/proj/common.hpp b/include/proj/common.hpp index d2f71989..cedb94c9 100644 --- a/include/proj/common.hpp +++ b/include/proj/common.hpp @@ -337,15 +337,16 @@ class PROJ_GCC_DLL IdentifiedObject : public util::BaseObject, PROJ_INTERNAL void formatRemarks(io::JSONFormatter *formatter) const; - PROJ_INTERNAL bool - _isEquivalentTo(const util::IComparable *other, - util::IComparable::Criterion criterion = - util::IComparable::Criterion::STRICT) const override; - - PROJ_INTERNAL bool - _isEquivalentTo(const IdentifiedObject *other, - util::IComparable::Criterion criterion = - util::IComparable::Criterion::STRICT) PROJ_PURE_DECL; + PROJ_INTERNAL bool _isEquivalentTo( + const util::IComparable *other, + util::IComparable::Criterion criterion = + util::IComparable::Criterion::STRICT, + const io::DatabaseContextPtr &dbContext = nullptr) const override; + + PROJ_INTERNAL bool _isEquivalentTo( + const IdentifiedObject *other, util::IComparable::Criterion criterion = + util::IComparable::Criterion::STRICT, + const io::DatabaseContextPtr &dbContext = nullptr) PROJ_PURE_DECL; //! @endcond protected: @@ -357,6 +358,10 @@ class PROJ_GCC_DLL IdentifiedObject : public util::BaseObject, void setProperties(const util::PropertyMap &properties); // throw(InvalidValueTypeException) + virtual bool hasEquivalentNameToUsingAlias( + const IdentifiedObject *other, + const io::DatabaseContextPtr &dbContext) const; + private: PROJ_OPAQUE_PRIVATE_DATA IdentifiedObject &operator=(const IdentifiedObject &other) = delete; @@ -400,10 +405,11 @@ class PROJ_GCC_DLL ObjectDomain : public util::BaseObject, PROJ_INTERNAL void _exportToJSON( io::JSONFormatter *formatter) const; // throw(FormattingException) - bool - _isEquivalentTo(const util::IComparable *other, - util::IComparable::Criterion criterion = - util::IComparable::Criterion::STRICT) const override; + bool _isEquivalentTo( + const util::IComparable *other, + util::IComparable::Criterion criterion = + util::IComparable::Criterion::STRICT, + const io::DatabaseContextPtr &dbContext = nullptr) const override; //! @endcond protected: @@ -446,10 +452,11 @@ class PROJ_GCC_DLL ObjectUsage : public IdentifiedObject { PROJ_DLL static const std::string OBJECT_DOMAIN_KEY; //! @cond Doxygen_Suppress - bool - _isEquivalentTo(const util::IComparable *other, - util::IComparable::Criterion criterion = - util::IComparable::Criterion::STRICT) const override; + bool _isEquivalentTo( + const util::IComparable *other, + util::IComparable::Criterion criterion = + util::IComparable::Criterion::STRICT, + const io::DatabaseContextPtr &dbContext = nullptr) const override; //! @endcond protected: diff --git a/include/proj/coordinateoperation.hpp b/include/proj/coordinateoperation.hpp index 55bc28a0..81d82474 100644 --- a/include/proj/coordinateoperation.hpp +++ b/include/proj/coordinateoperation.hpp @@ -210,7 +210,8 @@ class PROJ_GCC_DLL GeneralOperationParameter : public common::IdentifiedObject { PROJ_INTERNAL bool _isEquivalentTo( const util::IComparable *other, util::IComparable::Criterion criterion = - util::IComparable::Criterion::STRICT) const override = 0; + util::IComparable::Criterion::STRICT, + const io::DatabaseContextPtr &dbContext = nullptr) const override = 0; //! @endcond protected: @@ -251,10 +252,11 @@ class PROJ_GCC_DLL OperationParameter final : public GeneralOperationParameter { //! @endcond //! @cond Doxygen_Suppress - PROJ_INTERNAL bool - _isEquivalentTo(const util::IComparable *other, - util::IComparable::Criterion criterion = - util::IComparable::Criterion::STRICT) const override; + PROJ_INTERNAL bool _isEquivalentTo( + const util::IComparable *other, + util::IComparable::Criterion criterion = + util::IComparable::Criterion::STRICT, + const io::DatabaseContextPtr &dbContext = nullptr) const override; //! @endcond // non-standard @@ -307,7 +309,8 @@ class PROJ_GCC_DLL GeneralParameterValue : public util::BaseObject, PROJ_INTERNAL bool _isEquivalentTo( const util::IComparable *other, util::IComparable::Criterion criterion = - util::IComparable::Criterion::STRICT) const override = 0; + util::IComparable::Criterion::STRICT, + const io::DatabaseContextPtr &dbContext = nullptr) const override = 0; //! @endcond protected: @@ -390,10 +393,11 @@ class PROJ_GCC_DLL ParameterValue final : public util::BaseObject, PROJ_DLL bool booleanValue() PROJ_PURE_DECL; //! @cond Doxygen_Suppress - PROJ_INTERNAL bool - _isEquivalentTo(const util::IComparable *other, - util::IComparable::Criterion criterion = - util::IComparable::Criterion::STRICT) const override; + PROJ_INTERNAL bool _isEquivalentTo( + const util::IComparable *other, + util::IComparable::Criterion criterion = + util::IComparable::Criterion::STRICT, + const io::DatabaseContextPtr &dbContext = nullptr) const override; //! @endcond protected: @@ -450,10 +454,11 @@ class PROJ_GCC_DLL OperationParameterValue final PROJ_INTERNAL void _exportToJSON(io::JSONFormatter *formatter) const override; // throw(FormattingException) - PROJ_INTERNAL bool - _isEquivalentTo(const util::IComparable *other, - util::IComparable::Criterion criterion = - util::IComparable::Criterion::STRICT) const override; + PROJ_INTERNAL bool _isEquivalentTo( + const util::IComparable *other, + util::IComparable::Criterion criterion = + util::IComparable::Criterion::STRICT, + const io::DatabaseContextPtr &dbContext = nullptr) const override; //! @endcond protected: @@ -519,10 +524,11 @@ class PROJ_GCC_DLL OperationMethod : public common::IdentifiedObject, PROJ_INTERNAL void _exportToJSON(io::JSONFormatter *formatter) const override; // throw(FormattingException) - PROJ_INTERNAL bool - _isEquivalentTo(const util::IComparable *other, - util::IComparable::Criterion criterion = - util::IComparable::Criterion::STRICT) const override; + PROJ_INTERNAL bool _isEquivalentTo( + const util::IComparable *other, + util::IComparable::Criterion criterion = + util::IComparable::Criterion::STRICT, + const io::DatabaseContextPtr &dbContext = nullptr) const override; //! @endcond protected: @@ -615,10 +621,11 @@ class PROJ_GCC_DLL SingleOperation : virtual public CoordinateOperation { PROJ_INTERNAL double parameterValueNumericAsSI(int epsg_code) const noexcept; - PROJ_INTERNAL bool - _isEquivalentTo(const util::IComparable *other, - util::IComparable::Criterion criterion = - util::IComparable::Criterion::STRICT) const override; + PROJ_INTERNAL bool _isEquivalentTo( + const util::IComparable *other, + util::IComparable::Criterion criterion = + util::IComparable::Criterion::STRICT, + const io::DatabaseContextPtr &dbContext = nullptr) const override; //! @endcond protected: @@ -637,6 +644,7 @@ class PROJ_GCC_DLL SingleOperation : virtual public CoordinateOperation { PROJ_INTERNAL bool _isEquivalentTo(const util::IComparable *other, util::IComparable::Criterion criterion, + const io::DatabaseContextPtr &dbContext, bool inOtherDirection) const; private: @@ -1681,10 +1689,11 @@ class PROJ_GCC_DLL ConcatenatedOperation final : public CoordinateOperation { _exportToWKT(io::WKTFormatter *formatter) const override; // throw(io::FormattingException) - PROJ_INTERNAL bool - _isEquivalentTo(const util::IComparable *other, - util::IComparable::Criterion criterion = - util::IComparable::Criterion::STRICT) const override; + PROJ_INTERNAL bool _isEquivalentTo( + const util::IComparable *other, + util::IComparable::Criterion criterion = + util::IComparable::Criterion::STRICT, + const io::DatabaseContextPtr &dbContext = nullptr) const override; PROJ_INTERNAL void _exportToJSON(io::JSONFormatter *formatter) const override; // throw(FormattingException) diff --git a/include/proj/coordinatesystem.hpp b/include/proj/coordinatesystem.hpp index 20c3383c..e1650168 100644 --- a/include/proj/coordinatesystem.hpp +++ b/include/proj/coordinatesystem.hpp @@ -193,7 +193,8 @@ class PROJ_GCC_DLL CoordinateSystemAxis final : public common::IdentifiedObject, _isEquivalentTo( const util::IComparable *other, util::IComparable::Criterion criterion = - util::IComparable::Criterion::STRICT) const override; + util::IComparable::Criterion::STRICT, + const io::DatabaseContextPtr &dbContext = nullptr) const override; PROJ_INTERNAL void _exportToWKT(io::WKTFormatter *formatter, int order, bool disableAbbrev) const; @@ -260,10 +261,11 @@ class PROJ_GCC_DLL CoordinateSystem : public common::IdentifiedObject, PROJ_INTERNAL virtual std::string getWKT2Type(bool) const = 0; - PROJ_INTERNAL bool - _isEquivalentTo(const util::IComparable *other, - util::IComparable::Criterion criterion = - util::IComparable::Criterion::STRICT) const override; + PROJ_INTERNAL bool _isEquivalentTo( + const util::IComparable *other, + util::IComparable::Criterion criterion = + util::IComparable::Criterion::STRICT, + const io::DatabaseContextPtr &dbContext = nullptr) const override; //! @endcond protected: diff --git a/include/proj/crs.hpp b/include/proj/crs.hpp index 356c29d9..3b760099 100644 --- a/include/proj/crs.hpp +++ b/include/proj/crs.hpp @@ -189,7 +189,8 @@ class PROJ_GCC_DLL SingleCRS : public CRS { PROJ_INTERNAL bool baseIsEquivalentTo(const util::IComparable *other, util::IComparable::Criterion criterion = - util::IComparable::Criterion::STRICT) const; + util::IComparable::Criterion::STRICT, + const io::DatabaseContextPtr &dbContext = nullptr) const; private: PROJ_OPAQUE_PRIVATE_DATA @@ -284,10 +285,11 @@ class PROJ_GCC_DLL GeodeticCRS : virtual public SingleCRS, PROJ_INTERNAL void _exportToJSON(io::JSONFormatter *formatter) const override; // throw(FormattingException) - PROJ_INTERNAL bool - _isEquivalentTo(const util::IComparable *other, - util::IComparable::Criterion criterion = - util::IComparable::Criterion::STRICT) const override; + PROJ_INTERNAL bool _isEquivalentTo( + const util::IComparable *other, + util::IComparable::Criterion criterion = + util::IComparable::Criterion::STRICT, + const io::DatabaseContextPtr &dbContext = nullptr) const override; //! @endcond @@ -374,10 +376,11 @@ class PROJ_GCC_DLL GeographicCRS : public GeodeticCRS { PROJ_DLL bool is2DPartOf3D(util::nn<const GeographicCRS *> other) PROJ_PURE_DECL; - PROJ_INTERNAL bool - _isEquivalentTo(const util::IComparable *other, - util::IComparable::Criterion criterion = - util::IComparable::Criterion::STRICT) const override; + PROJ_INTERNAL bool _isEquivalentTo( + const util::IComparable *other, + util::IComparable::Criterion criterion = + util::IComparable::Criterion::STRICT, + const io::DatabaseContextPtr &dbContext = nullptr) const override; //! @endcond @@ -464,10 +467,11 @@ class PROJ_GCC_DLL VerticalCRS : virtual public SingleCRS, PROJ_INTERNAL void _exportToJSON(io::JSONFormatter *formatter) const override; // throw(FormattingException) - PROJ_INTERNAL bool - _isEquivalentTo(const util::IComparable *other, - util::IComparable::Criterion criterion = - util::IComparable::Criterion::STRICT) const override; + PROJ_INTERNAL bool _isEquivalentTo( + const util::IComparable *other, + util::IComparable::Criterion criterion = + util::IComparable::Criterion::STRICT, + const io::DatabaseContextPtr &dbContext = nullptr) const override; //! @endcond @@ -538,10 +542,11 @@ class PROJ_GCC_DLL DerivedCRS : virtual public SingleCRS { io::WKTFormatter *formatter, const std::string &keyword, const std::string &baseKeyword) const; // throw(FormattingException) - PROJ_INTERNAL bool - _isEquivalentTo(const util::IComparable *other, - util::IComparable::Criterion criterion = - util::IComparable::Criterion::STRICT) const override; + PROJ_INTERNAL bool _isEquivalentTo( + const util::IComparable *other, + util::IComparable::Criterion criterion = + util::IComparable::Criterion::STRICT, + const io::DatabaseContextPtr &dbContext = nullptr) const override; PROJ_INTERNAL virtual const char *className() const = 0; @@ -625,10 +630,11 @@ class PROJ_GCC_DLL ProjectedCRS final : public DerivedCRS, PROJ_INTERNAL void _exportToPROJString(io::PROJStringFormatter *formatter) const override; // throw(FormattingException) - PROJ_INTERNAL bool - _isEquivalentTo(const util::IComparable *other, - util::IComparable::Criterion criterion = - util::IComparable::Criterion::STRICT) const override; + PROJ_INTERNAL bool _isEquivalentTo( + const util::IComparable *other, + util::IComparable::Criterion criterion = + util::IComparable::Criterion::STRICT, + const io::DatabaseContextPtr &dbContext = nullptr) const override; PROJ_INTERNAL std::list<std::pair<CRSNNPtr, int>> _identify(const io::AuthorityFactoryPtr &authorityFactory) const override; @@ -692,10 +698,11 @@ class PROJ_GCC_DLL TemporalCRS : virtual public SingleCRS { PROJ_INTERNAL CRSNNPtr _shallowClone() const override; - PROJ_INTERNAL bool - _isEquivalentTo(const util::IComparable *other, - util::IComparable::Criterion criterion = - util::IComparable::Criterion::STRICT) const override; + PROJ_INTERNAL bool _isEquivalentTo( + const util::IComparable *other, + util::IComparable::Criterion criterion = + util::IComparable::Criterion::STRICT, + const io::DatabaseContextPtr &dbContext = nullptr) const override; private: PROJ_OPAQUE_PRIVATE_DATA @@ -751,10 +758,11 @@ class PROJ_GCC_DLL EngineeringCRS : virtual public SingleCRS { PROJ_INTERNAL CRSNNPtr _shallowClone() const override; - PROJ_INTERNAL bool - _isEquivalentTo(const util::IComparable *other, - util::IComparable::Criterion criterion = - util::IComparable::Criterion::STRICT) const override; + PROJ_INTERNAL bool _isEquivalentTo( + const util::IComparable *other, + util::IComparable::Criterion criterion = + util::IComparable::Criterion::STRICT, + const io::DatabaseContextPtr &dbContext = nullptr) const override; INLINED_MAKE_SHARED @@ -811,10 +819,11 @@ class PROJ_GCC_DLL ParametricCRS : virtual public SingleCRS { PROJ_INTERNAL CRSNNPtr _shallowClone() const override; - PROJ_INTERNAL bool - _isEquivalentTo(const util::IComparable *other, - util::IComparable::Criterion criterion = - util::IComparable::Criterion::STRICT) const override; + PROJ_INTERNAL bool _isEquivalentTo( + const util::IComparable *other, + util::IComparable::Criterion criterion = + util::IComparable::Criterion::STRICT, + const io::DatabaseContextPtr &dbContext = nullptr) const override; INLINED_MAKE_SHARED @@ -879,10 +888,11 @@ class PROJ_GCC_DLL CompoundCRS final : public CRS, PROJ_INTERNAL CRSNNPtr _shallowClone() const override; - PROJ_INTERNAL bool - _isEquivalentTo(const util::IComparable *other, - util::IComparable::Criterion criterion = - util::IComparable::Criterion::STRICT) const override; + PROJ_INTERNAL bool _isEquivalentTo( + const util::IComparable *other, + util::IComparable::Criterion criterion = + util::IComparable::Criterion::STRICT, + const io::DatabaseContextPtr &dbContext = nullptr) const override; PROJ_INTERNAL std::list<std::pair<CRSNNPtr, int>> _identify(const io::AuthorityFactoryPtr &authorityFactory) const override; @@ -965,10 +975,11 @@ class PROJ_GCC_DLL BoundCRS final : public CRS, PROJ_INTERNAL void _exportToJSON(io::JSONFormatter *formatter) const override; // throw(FormattingException) - PROJ_INTERNAL bool - _isEquivalentTo(const util::IComparable *other, - util::IComparable::Criterion criterion = - util::IComparable::Criterion::STRICT) const override; + PROJ_INTERNAL bool _isEquivalentTo( + const util::IComparable *other, + util::IComparable::Criterion criterion = + util::IComparable::Criterion::STRICT, + const io::DatabaseContextPtr &dbContext = nullptr) const override; PROJ_INTERNAL BoundCRSNNPtr shallowCloneAsBoundCRS() const; PROJ_INTERNAL bool isTOWGS84Compatible() const; @@ -1045,10 +1056,11 @@ class PROJ_GCC_DLL DerivedGeodeticCRS final : public GeodeticCRS, PROJ_INTERNAL CRSNNPtr _shallowClone() const override; - PROJ_INTERNAL bool - _isEquivalentTo(const util::IComparable *other, - util::IComparable::Criterion criterion = - util::IComparable::Criterion::STRICT) const override; + PROJ_INTERNAL bool _isEquivalentTo( + const util::IComparable *other, + util::IComparable::Criterion criterion = + util::IComparable::Criterion::STRICT, + const io::DatabaseContextPtr &dbContext = nullptr) const override; PROJ_INTERNAL std::list<std::pair<CRSNNPtr, int>> _identify(const io::AuthorityFactoryPtr &authorityFactory) const override; @@ -1120,10 +1132,11 @@ class PROJ_GCC_DLL DerivedGeographicCRS final : public GeographicCRS, PROJ_INTERNAL CRSNNPtr _shallowClone() const override; - PROJ_INTERNAL bool - _isEquivalentTo(const util::IComparable *other, - util::IComparable::Criterion criterion = - util::IComparable::Criterion::STRICT) const override; + PROJ_INTERNAL bool _isEquivalentTo( + const util::IComparable *other, + util::IComparable::Criterion criterion = + util::IComparable::Criterion::STRICT, + const io::DatabaseContextPtr &dbContext = nullptr) const override; PROJ_INTERNAL std::list<std::pair<CRSNNPtr, int>> _identify(const io::AuthorityFactoryPtr &authorityFactory) const override; @@ -1188,10 +1201,11 @@ class PROJ_GCC_DLL DerivedProjectedCRS final : public DerivedCRS { PROJ_INTERNAL CRSNNPtr _shallowClone() const override; - PROJ_INTERNAL bool - _isEquivalentTo(const util::IComparable *other, - util::IComparable::Criterion criterion = - util::IComparable::Criterion::STRICT) const override; + PROJ_INTERNAL bool _isEquivalentTo( + const util::IComparable *other, + util::IComparable::Criterion criterion = + util::IComparable::Criterion::STRICT, + const io::DatabaseContextPtr &dbContext = nullptr) const override; PROJ_INTERNAL const char *className() const override { return "DerivedProjectedCRS"; @@ -1253,10 +1267,11 @@ class PROJ_GCC_DLL DerivedVerticalCRS final : public VerticalCRS, PROJ_INTERNAL CRSNNPtr _shallowClone() const override; - PROJ_INTERNAL bool - _isEquivalentTo(const util::IComparable *other, - util::IComparable::Criterion criterion = - util::IComparable::Criterion::STRICT) const override; + PROJ_INTERNAL bool _isEquivalentTo( + const util::IComparable *other, + util::IComparable::Criterion criterion = + util::IComparable::Criterion::STRICT, + const io::DatabaseContextPtr &dbContext = nullptr) const override; PROJ_INTERNAL std::list<std::pair<CRSNNPtr, int>> _identify(const io::AuthorityFactoryPtr &authorityFactory) const override; @@ -1343,10 +1358,11 @@ class PROJ_GCC_DLL DerivedCRSTemplate final : public DerivedCRSTraits::BaseType, PROJ_INTERNAL CRSNNPtr _shallowClone() const override; - PROJ_INTERNAL bool - _isEquivalentTo(const util::IComparable *other, - util::IComparable::Criterion criterion = - util::IComparable::Criterion::STRICT) const override; + PROJ_INTERNAL bool _isEquivalentTo( + const util::IComparable *other, + util::IComparable::Criterion criterion = + util::IComparable::Criterion::STRICT, + const io::DatabaseContextPtr &dbContext = nullptr) const override; PROJ_INTERNAL const char *className() const override; diff --git a/include/proj/datum.hpp b/include/proj/datum.hpp index e97f1695..6a0db1dc 100644 --- a/include/proj/datum.hpp +++ b/include/proj/datum.hpp @@ -72,14 +72,17 @@ class PROJ_GCC_DLL Datum : public common::ObjectUsage, PROJ_DLL const util::optional<common::DateTime> &publicationDate() const; PROJ_DLL const common::IdentifiedObjectPtr &conventionalRS() const; + //! @cond Doxygen_Suppress + PROJ_INTERNAL bool _isEquivalentTo( + const util::IComparable *other, + util::IComparable::Criterion criterion = + util::IComparable::Criterion::STRICT, + const io::DatabaseContextPtr &dbContext = nullptr) const override; + //! @endcond + protected: PROJ_INTERNAL Datum(); - PROJ_INTERNAL bool - __isEquivalentTo(const util::IComparable *other, - util::IComparable::Criterion criterion = - util::IComparable::Criterion::STRICT) const; - #ifdef DOXYGEN_ENABLED std::string *anchorDefinition_; Date *publicationDate_; @@ -211,10 +214,11 @@ class PROJ_GCC_DLL PrimeMeridian final : public common::IdentifiedObject, PROJ_INTERNAL void _exportToJSON(io::JSONFormatter *formatter) const override; // throw(io::FormattingException) - PROJ_INTERNAL bool - _isEquivalentTo(const util::IComparable *other, - util::IComparable::Criterion criterion = - util::IComparable::Criterion::STRICT) const override; + PROJ_INTERNAL bool _isEquivalentTo( + const util::IComparable *other, + util::IComparable::Criterion criterion = + util::IComparable::Criterion::STRICT, + const io::DatabaseContextPtr &dbContext = nullptr) const override; PROJ_INTERNAL static std::string getPROJStringWellKnownName(const common::Angle &angle); @@ -317,10 +321,11 @@ class PROJ_GCC_DLL Ellipsoid final : public common::IdentifiedObject, PROJ_INTERNAL void _exportToJSON(io::JSONFormatter *formatter) const override; // throw(io::FormattingException) - PROJ_INTERNAL bool - _isEquivalentTo(const util::IComparable *other, - util::IComparable::Criterion criterion = - util::IComparable::Criterion::STRICT) const override; + PROJ_INTERNAL bool _isEquivalentTo( + const util::IComparable *other, + util::IComparable::Criterion criterion = + util::IComparable::Criterion::STRICT, + const io::DatabaseContextPtr &dbContext = nullptr) const override; PROJ_INTERNAL void _exportToPROJString(io::PROJStringFormatter *formatter) const override; // throw(FormattingException) @@ -419,10 +424,11 @@ class PROJ_GCC_DLL GeodeticReferenceFrame : public Datum { PROJ_INTERNAL void _exportToJSON(io::JSONFormatter *formatter) const override; // throw(FormattingException) - PROJ_INTERNAL bool - _isEquivalentTo(const util::IComparable *other, - util::IComparable::Criterion criterion = - util::IComparable::Criterion::STRICT) const override; + PROJ_INTERNAL bool _isEquivalentTo( + const util::IComparable *other, + util::IComparable::Criterion criterion = + util::IComparable::Criterion::STRICT, + const io::DatabaseContextPtr &dbContext = nullptr) const override; //! @endcond protected: @@ -440,6 +446,10 @@ class PROJ_GCC_DLL GeodeticReferenceFrame : public Datum { PROJ_INTERNAL static const GeodeticReferenceFrameNNPtr createEPSG_6269(); PROJ_INTERNAL static const GeodeticReferenceFrameNNPtr createEPSG_6326(); + bool hasEquivalentNameToUsingAlias( + const IdentifiedObject *other, + const io::DatabaseContextPtr &dbContext) const override; + private: PROJ_OPAQUE_PRIVATE_DATA GeodeticReferenceFrame(const GeodeticReferenceFrame &other) = delete; @@ -484,10 +494,11 @@ class PROJ_GCC_DLL DynamicGeodeticReferenceFrame final const util::optional<std::string> &deformationModelNameIn); //! @cond Doxygen_Suppress - PROJ_INTERNAL bool - _isEquivalentTo(const util::IComparable *other, - util::IComparable::Criterion criterion = - util::IComparable::Criterion::STRICT) const override; + PROJ_INTERNAL bool _isEquivalentTo( + const util::IComparable *other, + util::IComparable::Criterion criterion = + util::IComparable::Criterion::STRICT, + const io::DatabaseContextPtr &dbContext = nullptr) const override; PROJ_INTERNAL void _exportToWKT(io::WKTFormatter *formatter) const override; // throw(io::FormattingException) @@ -567,10 +578,11 @@ class PROJ_GCC_DLL VerticalReferenceFrame : public Datum { util::optional<RealizationMethod>()); //! @cond Doxygen_Suppress - PROJ_INTERNAL bool - _isEquivalentTo(const util::IComparable *other, - util::IComparable::Criterion criterion = - util::IComparable::Criterion::STRICT) const override; + PROJ_INTERNAL bool _isEquivalentTo( + const util::IComparable *other, + util::IComparable::Criterion criterion = + util::IComparable::Criterion::STRICT, + const io::DatabaseContextPtr &dbContext = nullptr) const override; PROJ_INTERNAL void _exportToWKT(io::WKTFormatter *formatter) const override; // throw(io::FormattingException) @@ -630,10 +642,11 @@ class PROJ_GCC_DLL DynamicVerticalReferenceFrame final const util::optional<std::string> &deformationModelNameIn); //! @cond Doxygen_Suppress - PROJ_INTERNAL bool - _isEquivalentTo(const util::IComparable *other, - util::IComparable::Criterion criterion = - util::IComparable::Criterion::STRICT) const override; + PROJ_INTERNAL bool _isEquivalentTo( + const util::IComparable *other, + util::IComparable::Criterion criterion = + util::IComparable::Criterion::STRICT, + const io::DatabaseContextPtr &dbContext = nullptr) const override; PROJ_INTERNAL void _exportToWKT(io::WKTFormatter *formatter) const override; // throw(io::FormattingException) @@ -695,10 +708,11 @@ class PROJ_GCC_DLL TemporalDatum final : public Datum { PROJ_INTERNAL void _exportToJSON(io::JSONFormatter *formatter) const override; // throw(FormattingException) - PROJ_INTERNAL bool - _isEquivalentTo(const util::IComparable *other, - util::IComparable::Criterion criterion = - util::IComparable::Criterion::STRICT) const override; + PROJ_INTERNAL bool _isEquivalentTo( + const util::IComparable *other, + util::IComparable::Criterion criterion = + util::IComparable::Criterion::STRICT, + const io::DatabaseContextPtr &dbContext = nullptr) const override; //! @endcond protected: @@ -746,10 +760,11 @@ class PROJ_GCC_DLL EngineeringDatum final : public Datum { PROJ_INTERNAL void _exportToJSON(io::JSONFormatter *formatter) const override; // throw(FormattingException) - PROJ_INTERNAL bool - _isEquivalentTo(const util::IComparable *other, - util::IComparable::Criterion criterion = - util::IComparable::Criterion::STRICT) const override; + PROJ_INTERNAL bool _isEquivalentTo( + const util::IComparable *other, + util::IComparable::Criterion criterion = + util::IComparable::Criterion::STRICT, + const io::DatabaseContextPtr &dbContext = nullptr) const override; //! @endcond protected: @@ -793,10 +808,11 @@ class PROJ_GCC_DLL ParametricDatum final : public Datum { PROJ_INTERNAL void _exportToJSON(io::JSONFormatter *formatter) const override; // throw(FormattingException) - PROJ_INTERNAL bool - _isEquivalentTo(const util::IComparable *other, - util::IComparable::Criterion criterion = - util::IComparable::Criterion::STRICT) const override; + PROJ_INTERNAL bool _isEquivalentTo( + const util::IComparable *other, + util::IComparable::Criterion criterion = + util::IComparable::Criterion::STRICT, + const io::DatabaseContextPtr &dbContext = nullptr) const override; //! @endcond protected: diff --git a/include/proj/internal/coordinateoperation_internal.hpp b/include/proj/internal/coordinateoperation_internal.hpp index 7ae2cd78..361261c1 100644 --- a/include/proj/internal/coordinateoperation_internal.hpp +++ b/include/proj/internal/coordinateoperation_internal.hpp @@ -118,10 +118,11 @@ class InverseCoordinateOperation : virtual public CoordinateOperation { void _exportToPROJString(io::PROJStringFormatter *formatter) const override; // throw(FormattingException) - bool - _isEquivalentTo(const util::IComparable *other, - util::IComparable::Criterion criterion = - util::IComparable::Criterion::STRICT) const override; + bool _isEquivalentTo( + const util::IComparable *other, + util::IComparable::Criterion criterion = + util::IComparable::Criterion::STRICT, + const io::DatabaseContextPtr &dbContext = nullptr) const override; CoordinateOperationNNPtr inverse() const override; @@ -158,11 +159,13 @@ class InverseConversion : public Conversion, public InverseCoordinateOperation { InverseCoordinateOperation::_exportToPROJString(formatter); } - bool - _isEquivalentTo(const util::IComparable *other, - util::IComparable::Criterion criterion = - util::IComparable::Criterion::STRICT) const override { - return InverseCoordinateOperation::_isEquivalentTo(other, criterion); + bool _isEquivalentTo( + const util::IComparable *other, + util::IComparable::Criterion criterion = + util::IComparable::Criterion::STRICT, + const io::DatabaseContextPtr &dbContext = nullptr) const override { + return InverseCoordinateOperation::_isEquivalentTo(other, criterion, + dbContext); } CoordinateOperationNNPtr inverse() const override { @@ -208,11 +211,13 @@ class InverseTransformation : public Transformation, Transformation::_exportToJSON(formatter); } - bool - _isEquivalentTo(const util::IComparable *other, - util::IComparable::Criterion criterion = - util::IComparable::Criterion::STRICT) const override { - return InverseCoordinateOperation::_isEquivalentTo(other, criterion); + bool _isEquivalentTo( + const util::IComparable *other, + util::IComparable::Criterion criterion = + util::IComparable::Criterion::STRICT, + const io::DatabaseContextPtr &dbContext = nullptr) const override { + return InverseCoordinateOperation::_isEquivalentTo(other, criterion, + dbContext); } CoordinateOperationNNPtr inverse() const override { diff --git a/include/proj/io.hpp b/include/proj/io.hpp index be293eb9..37941901 100644 --- a/include/proj/io.hpp +++ b/include/proj/io.hpp @@ -842,6 +842,11 @@ class PROJ_GCC_DLL DatabaseContext { const std::string &tableName, const std::string &source) const; + PROJ_INTERNAL std::list<std::string> + getAliases(const std::string &authName, const std::string &code, + const std::string &officialName, const std::string &tableName, + const std::string &source) const; + PROJ_INTERNAL bool isKnownName(const std::string &name, const std::string &tableName) const; diff --git a/include/proj/metadata.hpp b/include/proj/metadata.hpp index 5d364840..bd78e6e3 100644 --- a/include/proj/metadata.hpp +++ b/include/proj/metadata.hpp @@ -108,7 +108,8 @@ class PROJ_GCC_DLL GeographicExtent : public util::BaseObject, PROJ_INTERNAL bool _isEquivalentTo( const util::IComparable *other, util::IComparable::Criterion criterion = - util::IComparable::Criterion::STRICT) const override = 0; + util::IComparable::Criterion::STRICT, + const io::DatabaseContextPtr &dbContext = nullptr) const override = 0; //! @endcond /** \brief Returns whether this extent contains the other one. */ @@ -162,10 +163,11 @@ class PROJ_GCC_DLL GeographicBoundingBox : public GeographicExtent { create(double west, double south, double east, double north); //! @cond Doxygen_Suppress - PROJ_INTERNAL bool - _isEquivalentTo(const util::IComparable *other, - util::IComparable::Criterion criterion = - util::IComparable::Criterion::STRICT) const override; + PROJ_INTERNAL bool _isEquivalentTo( + const util::IComparable *other, + util::IComparable::Criterion criterion = + util::IComparable::Criterion::STRICT, + const io::DatabaseContextPtr &dbContext = nullptr) const override; //! @endcond PROJ_INTERNAL bool @@ -214,10 +216,11 @@ class PROJ_GCC_DLL TemporalExtent : public util::BaseObject, const std::string &stop); //! @cond Doxygen_Suppress - PROJ_INTERNAL bool - _isEquivalentTo(const util::IComparable *other, - util::IComparable::Criterion criterion = - util::IComparable::Criterion::STRICT) const override; + PROJ_INTERNAL bool _isEquivalentTo( + const util::IComparable *other, + util::IComparable::Criterion criterion = + util::IComparable::Criterion::STRICT, + const io::DatabaseContextPtr &dbContext = nullptr) const override; //! @endcond PROJ_DLL bool contains(const TemporalExtentNNPtr &other) const; @@ -263,10 +266,11 @@ class PROJ_GCC_DLL VerticalExtent : public util::BaseObject, const common::UnitOfMeasureNNPtr &unitIn); //! @cond Doxygen_Suppress - PROJ_INTERNAL bool - _isEquivalentTo(const util::IComparable *other, - util::IComparable::Criterion criterion = - util::IComparable::Criterion::STRICT) const override; + PROJ_INTERNAL bool _isEquivalentTo( + const util::IComparable *other, + util::IComparable::Criterion criterion = + util::IComparable::Criterion::STRICT, + const io::DatabaseContextPtr &dbContext = nullptr) const override; //! @endcond PROJ_DLL bool contains(const VerticalExtentNNPtr &other) const; @@ -323,10 +327,11 @@ class PROJ_GCC_DLL Extent : public util::BaseObject, public util::IComparable { util::optional<std::string>()); //! @cond Doxygen_Suppress - PROJ_INTERNAL bool - _isEquivalentTo(const util::IComparable *other, - util::IComparable::Criterion criterion = - util::IComparable::Criterion::STRICT) const override; + PROJ_INTERNAL bool _isEquivalentTo( + const util::IComparable *other, + util::IComparable::Criterion criterion = + util::IComparable::Criterion::STRICT, + const io::DatabaseContextPtr &dbContext = nullptr) const override; //! @endcond PROJ_DLL bool contains(const ExtentNNPtr &other) const; diff --git a/include/proj/util.hpp b/include/proj/util.hpp index e4d6c3e0..622709d1 100644 --- a/include/proj/util.hpp +++ b/include/proj/util.hpp @@ -166,6 +166,13 @@ namespace proj {} NS_PROJ_START +//! @cond Doxygen_Suppress +namespace io { +class DatabaseContext; +using DatabaseContextPtr = std::shared_ptr<DatabaseContext>; +} +//! @endcond + /** osgeo.proj.util namespace. * * \brief A set of base types from ISO 19103, \ref GeoAPI and other PROJ @@ -342,15 +349,18 @@ class PROJ_GCC_DLL IComparable { EQUIVALENT_EXCEPT_AXIS_ORDER_GEOGCRS, }; - PROJ_DLL bool isEquivalentTo(const IComparable *other, - Criterion criterion = Criterion::STRICT) const; + PROJ_DLL bool + isEquivalentTo(const IComparable *other, + Criterion criterion = Criterion::STRICT, + const io::DatabaseContextPtr &dbContext = nullptr) const; PROJ_PRIVATE : //! @cond Doxygen_Suppress PROJ_INTERNAL virtual bool - _isEquivalentTo(const IComparable *other, - Criterion criterion = Criterion::STRICT) const = 0; + _isEquivalentTo( + const IComparable *other, Criterion criterion = Criterion::STRICT, + const io::DatabaseContextPtr &dbContext = nullptr) const = 0; //! @endcond }; |
