aboutsummaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorEven Rouault <even.rouault@spatialys.com>2020-10-16 18:26:09 +0200
committerGitHub <noreply@github.com>2020-10-16 18:26:09 +0200
commit82b496fb32df0b6705159cd5c626aab20c8e9d39 (patch)
treeb6652073c9d66960e5c16d61055c53ffc3f8656f /include
parent93508fbec18e192646f2890e1ceb86de4cc9fd35 (diff)
parent686713479eb0b39feb5369b82647f96edf809b6c (diff)
downloadPROJ-82b496fb32df0b6705159cd5c626aab20c8e9d39.tar.gz
PROJ-82b496fb32df0b6705159cd5c626aab20c8e9d39.zip
Merge pull request #2370 from rouault/epsg10
Update to EPSG 10.003 and make code base robust to dealing with WKT CRS with DatumEnsemble
Diffstat (limited to 'include')
-rw-r--r--include/proj/crs.hpp16
-rw-r--r--include/proj/datum.hpp7
-rw-r--r--include/proj/io.hpp12
3 files changed, 30 insertions, 5 deletions
diff --git a/include/proj/crs.hpp b/include/proj/crs.hpp
index bbdc9565..a71bf610 100644
--- a/include/proj/crs.hpp
+++ b/include/proj/crs.hpp
@@ -194,7 +194,10 @@ class PROJ_GCC_DLL SingleCRS : public CRS {
PROJ_INTERNAL void
exportDatumOrDatumEnsembleToWkt(io::WKTFormatter *formatter)
const; // throw(io::FormattingException)
- //! @endcond
+
+ PROJ_INTERNAL const datum::DatumNNPtr
+ datumNonNull(const io::DatabaseContextPtr &dbContext) const;
+ //! @endcond
protected:
PROJ_INTERNAL SingleCRS(const datum::DatumPtr &datumIn,
@@ -289,6 +292,9 @@ class PROJ_GCC_DLL GeodeticCRS : virtual public SingleCRS,
PROJ_INTERNAL void
addDatumInfoToPROJString(io::PROJStringFormatter *formatter) const;
+ PROJ_INTERNAL const datum::GeodeticReferenceFrameNNPtr
+ datumNonNull(const io::DatabaseContextPtr &dbContext) const;
+
PROJ_INTERNAL void addGeocentricUnitConversionIntoPROJString(
io::PROJStringFormatter *formatter) const;
@@ -389,8 +395,9 @@ class PROJ_GCC_DLL GeographicCRS : public GeodeticCRS {
PROJ_INTERNAL void _exportToJSON(io::JSONFormatter *formatter)
const override; // throw(FormattingException)
- PROJ_DLL bool
- is2DPartOf3D(util::nn<const GeographicCRS *> other) PROJ_PURE_DECL;
+ PROJ_DLL bool is2DPartOf3D(
+ util::nn<const GeographicCRS *> other,
+ const io::DatabaseContextPtr &dbContext = nullptr) PROJ_PURE_DECL;
PROJ_INTERNAL bool _isEquivalentTo(
const util::IComparable *other,
@@ -474,6 +481,9 @@ class PROJ_GCC_DLL VerticalCRS : virtual public SingleCRS,
PROJ_INTERNAL void
addLinearUnitConvert(io::PROJStringFormatter *formatter) const;
+ PROJ_INTERNAL const datum::VerticalReferenceFrameNNPtr
+ datumNonNull(const io::DatabaseContextPtr &dbContext) const;
+
PROJ_INTERNAL void _exportToWKT(io::WKTFormatter *formatter)
const override; // throw(io::FormattingException)
diff --git a/include/proj/datum.hpp b/include/proj/datum.hpp
index f1d45c6b..bf3dbcb7 100644
--- a/include/proj/datum.hpp
+++ b/include/proj/datum.hpp
@@ -125,7 +125,7 @@ using DatumEnsembleNNPtr = util::nn<DatumEnsemblePtr>;
*
* \remark Implements DatumEnsemble from \ref ISO_19111_2019
*/
-class PROJ_GCC_DLL DatumEnsemble final : public common::IdentifiedObject,
+class PROJ_GCC_DLL DatumEnsemble final : public common::ObjectUsage,
public io::IJSONExportable {
public:
//! @cond Doxygen_Suppress
@@ -147,7 +147,10 @@ class PROJ_GCC_DLL DatumEnsemble final : public common::IdentifiedObject,
PROJ_INTERNAL void _exportToJSON(io::JSONFormatter *formatter)
const override; // throw(io::FormattingException)
- //! @endcond
+
+ PROJ_FOR_TEST DatumNNPtr
+ asDatum(const io::DatabaseContextPtr &dbContext) const;
+ //! @endcond
protected:
#ifdef DOXYGEN_ENABLED
diff --git a/include/proj/io.hpp b/include/proj/io.hpp
index 9bbacfe6..9a4c7f9d 100644
--- a/include/proj/io.hpp
+++ b/include/proj/io.hpp
@@ -71,6 +71,10 @@ class Datum;
using DatumPtr = std::shared_ptr<Datum>;
using DatumNNPtr = util::nn<DatumPtr>;
+class DatumEnsemble;
+using DatumEnsemblePtr = std::shared_ptr<DatumEnsemble>;
+using DatumEnsembleNNPtr = util::nn<DatumEnsemblePtr>;
+
class Ellipsoid;
using EllipsoidPtr = std::shared_ptr<Ellipsoid>;
using EllipsoidNNPtr = util::nn<EllipsoidPtr>;
@@ -932,6 +936,10 @@ class PROJ_GCC_DLL AuthorityFactory {
PROJ_DLL datum::DatumNNPtr createDatum(const std::string &code) const;
+ PROJ_DLL datum::DatumEnsembleNNPtr
+ createDatumEnsemble(const std::string &code,
+ const std::string &type = std::string()) const;
+
PROJ_DLL datum::GeodeticReferenceFrameNNPtr
createGeodeticDatum(const std::string &code) const;
@@ -1016,6 +1024,10 @@ class PROJ_GCC_DLL AuthorityFactory {
/** Object of type operation::ConcatenatedOperation (and derived
classes) */
CONCATENATED_OPERATION,
+ /** Object of type datum::DynamicGeodeticReferenceFrame */
+ DYNAMIC_GEODETIC_REFERENCE_FRAME,
+ /** Object of type datum::DynamicVerticalReferenceFrame */
+ DYNAMIC_VERTICAL_REFERENCE_FRAME,
};
PROJ_DLL std::set<std::string>