aboutsummaryrefslogtreecommitdiff
path: root/include/proj
diff options
context:
space:
mode:
authorEven Rouault <even.rouault@spatialys.com>2019-12-16 15:23:22 +0100
committerEven Rouault <even.rouault@spatialys.com>2019-12-16 17:50:39 +0100
commitbd9ecbacf575a1926fb8e223c4add1a4cc45d7f3 (patch)
tree770cc59bf111f8b427d9bc14ea7548ff3edbc9b3 /include/proj
parenta68c146d7f3c1efb0f42b46c708a0a195e51a2ff (diff)
downloadPROJ-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.hpp41
-rw-r--r--include/proj/coordinateoperation.hpp61
-rw-r--r--include/proj/coordinatesystem.hpp12
-rw-r--r--include/proj/crs.hpp138
-rw-r--r--include/proj/datum.hpp98
-rw-r--r--include/proj/internal/coordinateoperation_internal.hpp33
-rw-r--r--include/proj/io.hpp5
-rw-r--r--include/proj/metadata.hpp39
-rw-r--r--include/proj/util.hpp18
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
};