diff options
| author | Even Rouault <even.rouault@spatialys.com> | 2020-10-16 18:26:09 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2020-10-16 18:26:09 +0200 |
| commit | 82b496fb32df0b6705159cd5c626aab20c8e9d39 (patch) | |
| tree | b6652073c9d66960e5c16d61055c53ffc3f8656f /include | |
| parent | 93508fbec18e192646f2890e1ceb86de4cc9fd35 (diff) | |
| parent | 686713479eb0b39feb5369b82647f96edf809b6c (diff) | |
| download | PROJ-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.hpp | 16 | ||||
| -rw-r--r-- | include/proj/datum.hpp | 7 | ||||
| -rw-r--r-- | include/proj/io.hpp | 12 |
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> |
