diff options
| author | Andrew Bell <andrew.bell.ia@gmail.com> | 2019-05-15 10:47:03 -0400 |
|---|---|---|
| committer | Andrew Bell <andrew.bell.ia@gmail.com> | 2019-05-15 10:47:03 -0400 |
| commit | 8f268409d37cea329d263e177b83e42f8384d3c7 (patch) | |
| tree | c4d0f3dd19456600f718a6e0c8573577f433549b /include | |
| parent | 886ced02f0aaab5d66d16459435f7447cf976650 (diff) | |
| parent | d67203a6f76a74f5ac029ff052dbcc72e3b59624 (diff) | |
| download | PROJ-8f268409d37cea329d263e177b83e42f8384d3c7.tar.gz PROJ-8f268409d37cea329d263e177b83e42f8384d3c7.zip | |
Merge remote-tracking branch 'origin/master'
Diffstat (limited to 'include')
| -rw-r--r-- | include/proj/CMakeLists.txt | 2 | ||||
| -rw-r--r-- | include/proj/common.hpp | 8 | ||||
| -rw-r--r-- | include/proj/coordinateoperation.hpp | 80 | ||||
| -rw-r--r-- | include/proj/coordinatesystem.hpp | 30 | ||||
| -rw-r--r-- | include/proj/crs.hpp | 78 | ||||
| -rw-r--r-- | include/proj/datum.hpp | 26 | ||||
| -rw-r--r-- | include/proj/internal/coordinateoperation_constants.hpp | 2 | ||||
| -rw-r--r-- | include/proj/internal/coordinateoperation_internal.hpp | 25 | ||||
| -rw-r--r-- | include/proj/internal/coordinatesystem_internal.hpp | 2 | ||||
| -rw-r--r-- | include/proj/internal/internal.hpp | 7 | ||||
| -rw-r--r-- | include/proj/internal/io_internal.hpp | 6 | ||||
| -rw-r--r-- | include/proj/io.hpp | 55 | ||||
| -rw-r--r-- | include/proj/metadata.hpp | 4 | ||||
| -rw-r--r-- | include/proj/util.hpp | 2 |
14 files changed, 198 insertions, 129 deletions
diff --git a/include/proj/CMakeLists.txt b/include/proj/CMakeLists.txt index 0f889f74..0d9abee3 100644 --- a/include/proj/CMakeLists.txt +++ b/include/proj/CMakeLists.txt @@ -2,6 +2,6 @@ set(installdest ${INCLUDEDIR}/proj) install( FILES util.hpp metadata.hpp common.hpp crs.hpp datum.hpp - coordinatesystem.hpp coordinateoperation.hpp io.hpp nn.hpp + coordinatesystem.hpp coordinateoperation.hpp io.hpp nn.hpp DESTINATION ${installdest} ) diff --git a/include/proj/common.hpp b/include/proj/common.hpp index d0ecf5d6..7940f4fc 100644 --- a/include/proj/common.hpp +++ b/include/proj/common.hpp @@ -1,7 +1,7 @@ /****************************************************************************** * * Project: PROJ - * Purpose: ISO19111:2018 implementation + * Purpose: ISO19111:2019 implementation * Author: Even Rouault <even dot rouault at spatialys dot com> * ****************************************************************************** @@ -291,7 +291,7 @@ using IdentifiedObjectNNPtr = util::nn<IdentifiedObjectPtr>; /** \brief Abstract class representating a CRS-related object that has an * identification. * - * \remark Implements IdentifiedObject from \ref ISO_19111_2018 + * \remark Implements IdentifiedObject from \ref ISO_19111_2019 */ class PROJ_GCC_DLL IdentifiedObject : public util::BaseObject, public util::IComparable, @@ -364,7 +364,7 @@ using ObjectDomainNNPtr = util::nn<ObjectDomainPtr>; /** \brief The scope and validity of a CRS-related object. * - * \remark Implements ObjectDomain from \ref ISO_19111_2018 + * \remark Implements ObjectDomain from \ref ISO_19111_2019 */ class PROJ_GCC_DLL ObjectDomain : public util::BaseObject, public util::IComparable { @@ -419,7 +419,7 @@ using ObjectUsageNNPtr = util::nn<ObjectUsagePtr>; /** \brief Abstract class of a CRS-related object that has usages. * - * \remark Implements ObjectUsage from \ref ISO_19111_2018 + * \remark Implements ObjectUsage from \ref ISO_19111_2019 */ class PROJ_GCC_DLL ObjectUsage : public IdentifiedObject { public: diff --git a/include/proj/coordinateoperation.hpp b/include/proj/coordinateoperation.hpp index 92b655f9..7ade26f2 100644 --- a/include/proj/coordinateoperation.hpp +++ b/include/proj/coordinateoperation.hpp @@ -1,7 +1,7 @@ /****************************************************************************** * * Project: PROJ - * Purpose: ISO19111:2018 implementation + * Purpose: ISO19111:2019 implementation * Author: Even Rouault <even dot rouault at spatialys dot com> * ****************************************************************************** @@ -63,15 +63,15 @@ namespace operation { /** \brief Grid description */ struct GridDescription { - std::string shortName{}; /**< Grid short filename */ - std::string fullName{}; /**< Grid full path name (if found) */ - std::string packageName{}; /**< Package name (or empty) */ - std::string url{}; /**< Grid URL (if packageName is empty), or package - URL (or empty) */ - bool directDownload = false; /**< Whether url can be fetched directly. */ - bool openLicense = - false; /**< Whether the grid is released with an open license. */ - bool available = false; /**< Whether GRID is available. */ + std::string shortName; /**< Grid short filename */ + std::string fullName; /**< Grid full path name (if found) */ + std::string packageName; /**< Package name (or empty) */ + std::string url; /**< Grid URL (if packageName is empty), or package + URL (or empty) */ + bool directDownload; /**< Whether url can be fetched directly. */ + /** Whether the grid is released with an open license. */ + bool openLicense; + bool available; /**< Whether GRID is available. */ //! @cond Doxygen_Suppress bool operator<(const GridDescription &other) const { @@ -113,7 +113,7 @@ using CoordinateOperationNNPtr = util::nn<CoordinateOperationPtr>; * (some) entirely different parameter values are needed, a different coordinate * operation shall be defined. * - * \remark Implements CoordinateOperation from \ref ISO_19111_2018 + * \remark Implements CoordinateOperation from \ref ISO_19111_2019 */ class PROJ_GCC_DLL CoordinateOperation : public common::ObjectUsage, public io::IPROJStringExportable { @@ -146,7 +146,19 @@ class PROJ_GCC_DLL CoordinateOperation : public common::ObjectUsage, gridsNeeded(const io::DatabaseContextPtr &databaseContext) const = 0; PROJ_DLL bool - isPROJInstanciable(const io::DatabaseContextPtr &databaseContext) const; + isPROJInstantiable(const io::DatabaseContextPtr &databaseContext) const; + + PROJ_DLL bool hasBallparkTransformation() const; + + PROJ_DLL static const std::string OPERATION_VERSION_KEY; + + PROJ_DLL CoordinateOperationNNPtr normalizeForVisualization() const; + + PROJ_PRIVATE : + //! @cond Doxygen_Suppress + PROJ_FOR_TEST CoordinateOperationNNPtr + shallowClone() const; + //! @endcond protected: PROJ_INTERNAL CoordinateOperation(); @@ -167,6 +179,13 @@ class PROJ_GCC_DLL CoordinateOperation : public common::ObjectUsage, PROJ_INTERNAL void setAccuracies( const std::vector<metadata::PositionalAccuracyNNPtr> &accuracies); + PROJ_INTERNAL void setHasBallparkTransformation(bool b); + + PROJ_INTERNAL void + setProperties(const util::PropertyMap + &properties); // throw(InvalidValueTypeException) + + PROJ_INTERNAL virtual CoordinateOperationNNPtr _shallowClone() const = 0; private: PROJ_OPAQUE_PRIVATE_DATA @@ -178,7 +197,7 @@ class PROJ_GCC_DLL CoordinateOperation : public common::ObjectUsage, /** \brief Abstract class modelling a parameter value (OperationParameter) * or group of parameters. * - * \remark Implements GeneralOperationParameter from \ref ISO_19111_2018 + * \remark Implements GeneralOperationParameter from \ref ISO_19111_2019 */ class PROJ_GCC_DLL GeneralOperationParameter : public common::IdentifiedObject { public: @@ -222,7 +241,7 @@ using OperationParameterNNPtr = util::nn<OperationParameterPtr>; * Most parameter values are numeric, but other types of parameter values are * possible. * - * \remark Implements OperationParameter from \ref ISO_19111_2018 + * \remark Implements OperationParameter from \ref ISO_19111_2019 */ class PROJ_GCC_DLL OperationParameter final : public GeneralOperationParameter { public: @@ -268,7 +287,7 @@ struct MethodMapping; /** \brief Abstract class modelling a parameter value (OperationParameterValue) * or group of parameter values. * - * \remark Implements GeneralParameterValue from \ref ISO_19111_2018 + * \remark Implements GeneralParameterValue from \ref ISO_19111_2019 */ class PROJ_GCC_DLL GeneralParameterValue : public util::BaseObject, public io::IWKTExportable, @@ -322,7 +341,7 @@ using ParameterValueNNPtr = util::nn<ParameterValuePtr>; * Most parameter values are numeric, but other types of parameter values are * possible. * - * \remark Implements ParameterValue from \ref ISO_19111_2018 + * \remark Implements ParameterValue from \ref ISO_19111_2019 */ class PROJ_GCC_DLL ParameterValue final : public util::BaseObject, public io::IWKTExportable, @@ -397,7 +416,7 @@ using OperationParameterValueNNPtr = util::nn<OperationParameterValuePtr>; * * This combines a OperationParameter with the corresponding ParameterValue. * - * \remark Implements OperationParameterValue from \ref ISO_19111_2018 + * \remark Implements OperationParameterValue from \ref ISO_19111_2019 */ class PROJ_GCC_DLL OperationParameterValue final : public GeneralParameterValue { @@ -460,7 +479,7 @@ using OperationMethodNNPtr = util::nn<OperationMethodPtr>; * For a projection method, this contains the name of the projection method * and the name of the projection parameters. * - * \remark Implements OperationMethod from \ref ISO_19111_2018 + * \remark Implements OperationMethod from \ref ISO_19111_2019 */ class PROJ_GCC_DLL OperationMethod : public common::IdentifiedObject { public: @@ -531,7 +550,7 @@ using SingleOperationNNPtr = util::nn<SingleOperationPtr>; /** \brief A single (not concatenated) coordinate operation * (CoordinateOperation) * - * \remark Implements SingleOperation from \ref ISO_19111_2018 + * \remark Implements SingleOperation from \ref ISO_19111_2019 */ class PROJ_GCC_DLL SingleOperation : virtual public CoordinateOperation { public: @@ -630,7 +649,7 @@ using ConversionNNPtr = util::nn<ConversionPtr>; * associations, but through associations from crs::DerivedCRS to * crs::SingleCRS. * - * \remark Implements Conversion from \ref ISO_19111_2018 + * \remark Implements Conversion from \ref ISO_19111_2019 */ /*! @@ -1317,6 +1336,8 @@ class PROJ_GCC_DLL Conversion : public SingleOperation { PROJ_FRIEND(crs::ProjectedCRS); PROJ_INTERNAL bool addWKTExtensionNode(io::WKTFormatter *formatter) const; + PROJ_INTERNAL CoordinateOperationNNPtr _shallowClone() const override; + private: PROJ_OPAQUE_PRIVATE_DATA Conversion &operator=(const Conversion &other) = delete; @@ -1350,7 +1371,7 @@ using TransformationNNPtr = util::nn<TransformationPtr>; * coordinates are referenced to different datums (reference frames) will be a * coordinate transformation. * - * \remark Implements Transformation from \ref ISO_19111_2018 + * \remark Implements Transformation from \ref ISO_19111_2019 */ class PROJ_GCC_DLL Transformation : public SingleOperation { public: @@ -1455,7 +1476,8 @@ class PROJ_GCC_DLL Transformation : public SingleOperation { PROJ_DLL static TransformationNNPtr createGravityRelatedHeightToGeographic3D( const util::PropertyMap &properties, const crs::CRSNNPtr &sourceCRSIn, - const crs::CRSNNPtr &targetCRSIn, const std::string &filename, + const crs::CRSNNPtr &targetCRSIn, const crs::CRSPtr &interpolationCRSIn, + const std::string &filename, const std::vector<metadata::PositionalAccuracyNNPtr> &accuracies); PROJ_DLL static TransformationNNPtr createVERTCON( @@ -1493,6 +1515,11 @@ class PROJ_GCC_DLL Transformation : public SingleOperation { PROJ_DLL TransformationNNPtr substitutePROJAlternativeGridNames( io::DatabaseContextNNPtr databaseContext) const; + PROJ_DLL static TransformationNNPtr createChangeVerticalUnit( + const util::PropertyMap &properties, const crs::CRSNNPtr &sourceCRSIn, + const crs::CRSNNPtr &targetCRSIn, const common::Scale &factor, + const std::vector<metadata::PositionalAccuracyNNPtr> &accuracies); + PROJ_PRIVATE : //! @cond Doxygen_Suppress PROJ_INTERNAL const std::string & @@ -1527,6 +1554,8 @@ class PROJ_GCC_DLL Transformation : public SingleOperation { PROJ_INTERNAL TransformationNNPtr inverseAsTransformation() const; + PROJ_INTERNAL CoordinateOperationNNPtr _shallowClone() const override; + private: PROJ_OPAQUE_PRIVATE_DATA }; @@ -1545,7 +1574,7 @@ using PointMotionOperationNNPtr = util::nn<PointMotionOperationPtr>; * * The motion is due to tectonic plate movement or deformation. * - * \remark Implements PointMotionOperation from \ref ISO_19111_2018 + * \remark Implements PointMotionOperation from \ref ISO_19111_2019 */ class PROJ_GCC_DLL PointMotionOperation : public SingleOperation { public: @@ -1574,7 +1603,7 @@ using ConcatenatedOperationNNPtr = util::nn<ConcatenatedOperationPtr>; * the source coordinate reference system of step n+1 shall be the same as * the target coordinate reference system of step n. * - * \remark Implements ConcatenatedOperation from \ref ISO_19111_2018 + * \remark Implements ConcatenatedOperation from \ref ISO_19111_2019 */ class PROJ_GCC_DLL ConcatenatedOperation final : public CoordinateOperation { public: @@ -1618,12 +1647,15 @@ class PROJ_GCC_DLL ConcatenatedOperation final : public CoordinateOperation { //! @endcond protected: + PROJ_INTERNAL ConcatenatedOperation(const ConcatenatedOperation &other); PROJ_INTERNAL explicit ConcatenatedOperation( const std::vector<CoordinateOperationNNPtr> &operationsIn); PROJ_INTERNAL void _exportToPROJString(io::PROJStringFormatter *formatter) const override; // throw(FormattingException) + PROJ_INTERNAL CoordinateOperationNNPtr _shallowClone() const override; + INLINED_MAKE_SHARED private: diff --git a/include/proj/coordinatesystem.hpp b/include/proj/coordinatesystem.hpp index 9216bf33..ea1c1f99 100644 --- a/include/proj/coordinatesystem.hpp +++ b/include/proj/coordinatesystem.hpp @@ -1,7 +1,7 @@ /****************************************************************************** * * Project: PROJ - * Purpose: ISO19111:2018 implementation + * Purpose: ISO19111:2019 implementation * Author: Even Rouault <even dot rouault at spatialys dot com> * ****************************************************************************** @@ -51,7 +51,7 @@ namespace cs { /** \brief The direction of positive increase in the coordinate value for a * coordinate system axis. * - * \remark Implements AxisDirection from \ref ISO_19111_2018 + * \remark Implements AxisDirection from \ref ISO_19111_2019 */ class AxisDirection : public util::CodeList { public: @@ -119,7 +119,7 @@ using MeridianNNPtr = util::nn<MeridianPtr>; /** \brief The meridian that the axis follows from the pole, for a coordinate * reference system centered on a pole. * - * \note There is no modelling for this concept in \ref ISO_19111_2018 + * \note There is no modelling for this concept in \ref ISO_19111_2019 * * \remark Implements MERIDIAN from \ref WKT2 */ @@ -163,7 +163,7 @@ using CoordinateSystemAxisNNPtr = util::nn<CoordinateSystemAxisPtr>; /** \brief The definition of a coordinate system axis. * - * \remark Implements CoordinateSystemAxis from \ref ISO_19111_2018 + * \remark Implements CoordinateSystemAxis from \ref ISO_19111_2019 */ class PROJ_GCC_DLL CoordinateSystemAxis final : public common::IdentifiedObject { @@ -233,7 +233,7 @@ class PROJ_GCC_DLL CoordinateSystemAxis final * The coordinate values in a coordinate tuple shall be recorded in the order * in which the coordinate system axes associations are recorded. * - * \remark Implements CoordinateSystem from \ref ISO_19111_2018 + * \remark Implements CoordinateSystem from \ref ISO_19111_2019 */ class PROJ_GCC_DLL CoordinateSystem : public common::IdentifiedObject { public: @@ -289,7 +289,7 @@ using SphericalCSNNPtr = util::nn<SphericalCSPtr>; * ellipsoid "degenerated" into a sphere. A SphericalCS shall have three * axis associations. * - * \remark Implements SphericalCS from \ref ISO_19111_2018 + * \remark Implements SphericalCS from \ref ISO_19111_2019 */ class PROJ_GCC_DLL SphericalCS final : public CoordinateSystem { public: @@ -332,7 +332,7 @@ using EllipsoidalCSNNPtr = util::nn<EllipsoidalCSPtr>; * * An EllipsoidalCS shall have two or three associations. * - * \remark Implements EllipsoidalCS from \ref ISO_19111_2018 + * \remark Implements EllipsoidalCS from \ref ISO_19111_2019 */ class PROJ_GCC_DLL EllipsoidalCS final : public CoordinateSystem { public: @@ -411,7 +411,7 @@ using VerticalCSNNPtr = util::nn<VerticalCSPtr>; * Such a coordinate system is usually dependent on the Earth's gravity field. * A VerticalCS shall have one axis association. * - * \remark Implements VerticalCS from \ref ISO_19111_2018 + * \remark Implements VerticalCS from \ref ISO_19111_2019 */ class PROJ_GCC_DLL VerticalCS final : public CoordinateSystem { public: @@ -460,7 +460,7 @@ using CartesianCSNNPtr = util::nn<CartesianCSPtr>; * three axis associations; the number of associations shall equal the * dimension of the CS. * - * \remark Implements CartesianCS from \ref ISO_19111_2018 + * \remark Implements CartesianCS from \ref ISO_19111_2019 */ class PROJ_GCC_DLL CartesianCS final : public CoordinateSystem { public: @@ -529,7 +529,7 @@ using OrdinalCSNNPtr = util::nn<OrdinalCSPtr>; * The number of associations shall equal the * dimension of the CS. * - * \remark Implements OrdinalCS from \ref ISO_19111_2018 + * \remark Implements OrdinalCS from \ref ISO_19111_2019 */ class PROJ_GCC_DLL OrdinalCS final : public CoordinateSystem { public: @@ -565,7 +565,7 @@ using ParametricCSNNPtr = util::nn<ParametricCSPtr>; /** \brief one-dimensional coordinate reference system which uses parameter * values or functions that may vary monotonically with height. * - * \remark Implements ParametricCS from \ref ISO_19111_2018 + * \remark Implements ParametricCS from \ref ISO_19111_2019 */ class PROJ_GCC_DLL ParametricCS final : public CoordinateSystem { public: @@ -603,7 +603,7 @@ using TemporalCSNNPtr = util::nn<TemporalCSPtr>; * * A TemporalCS shall have one axis association. * - * \remark Implements TemporalCS from \ref ISO_19111_2018 + * \remark Implements TemporalCS from \ref ISO_19111_2019 */ class PROJ_GCC_DLL TemporalCS : public CoordinateSystem { public: @@ -637,7 +637,7 @@ using DateTimeTemporalCSNNPtr = util::nn<DateTimeTemporalCSPtr>; * axisUnitID; the temporal quantities are defined through the ISO 8601 * representation. * - * \remark Implements DateTimeTemporalCS from \ref ISO_19111_2018 + * \remark Implements DateTimeTemporalCS from \ref ISO_19111_2019 */ class PROJ_GCC_DLL DateTimeTemporalCS final : public TemporalCS { public: @@ -673,7 +673,7 @@ using TemporalCountCSNNPtr = util::nn<TemporalCountCSPtr>; * * A TemporalCountCS shall have one axis association. * - * \remark Implements TemporalCountCS from \ref ISO_19111_2018 + * \remark Implements TemporalCountCS from \ref ISO_19111_2019 */ class PROJ_GCC_DLL TemporalCountCS final : public TemporalCS { public: @@ -709,7 +709,7 @@ using TemporalMeasureCSNNPtr = util::nn<TemporalMeasureCSPtr>; * * A TemporalMeasureCS shall have one axis association. * - * \remark Implements TemporalMeasureCS from \ref ISO_19111_2018 + * \remark Implements TemporalMeasureCS from \ref ISO_19111_2019 */ class PROJ_GCC_DLL TemporalMeasureCS final : public TemporalCS { public: diff --git a/include/proj/crs.hpp b/include/proj/crs.hpp index fb34d3b7..33bf3b61 100644 --- a/include/proj/crs.hpp +++ b/include/proj/crs.hpp @@ -1,7 +1,7 @@ /****************************************************************************** * * Project: PROJ - * Purpose: ISO19111:2018 implementation + * Purpose: ISO19111:2019 implementation * Author: Even Rouault <even dot rouault at spatialys dot com> * ****************************************************************************** @@ -79,7 +79,7 @@ using CRSNNPtr = util::nn<CRSPtr>; /** \brief Abstract class modelling a coordinate reference system which is * usually single but may be compound. * - * \remark Implements CRS from \ref ISO_19111_2018 + * \remark Implements CRS from \ref ISO_19111_2019 */ class PROJ_GCC_DLL CRS : public common::ObjectUsage { public: @@ -126,6 +126,10 @@ class PROJ_GCC_DLL CRS : public common::ObjectUsage { PROJ_FOR_TEST CRSNNPtr alterCSLinearUnit(const common::UnitOfMeasure &unit) const; + PROJ_INTERNAL bool mustAxisOrderBeSwitchedForVisualization() const; + + PROJ_INTERNAL CRSNNPtr normalizeForVisualization() const; + //! @endcond protected: @@ -149,7 +153,7 @@ class PROJ_GCC_DLL CRS : public common::ObjectUsage { * one Coordinate System and either one datum::Datum or one * datum::DatumEnsemble. * - * \remark Implements SingleCRS from \ref ISO_19111_2018 + * \remark Implements SingleCRS from \ref ISO_19111_2019 */ class PROJ_GCC_DLL SingleCRS : public CRS { public: @@ -204,7 +208,7 @@ using GeodeticCRSNNPtr = util::nn<GeodeticCRSPtr>; * association to a velocity model then the geodetic CRS is dynamic, else it * is static. * - * \remark Implements GeodeticCRS from \ref ISO_19111_2018 + * \remark Implements GeodeticCRS from \ref ISO_19111_2019 */ class PROJ_GCC_DLL GeodeticCRS : virtual public SingleCRS, public io::IPROJStringExportable { @@ -312,7 +316,7 @@ class PROJ_GCC_DLL GeodeticCRS : virtual public SingleCRS, * association to a velocity model then the geodetic CRS is dynamic, else it is * static. * - * \remark Implements GeographicCRS from \ref ISO_19111_2018 + * \remark Implements GeographicCRS from \ref ISO_19111_2019 */ class PROJ_GCC_DLL GeographicCRS : public GeodeticCRS { public: @@ -398,7 +402,7 @@ class PROJ_GCC_DLL GeographicCRS : public GeodeticCRS { * reference system. They exist only as an inseparable part of a 3D coordinate * tuple defined in a geographic 3D coordinate reference system. * - * \remark Implements VerticalCRS from \ref ISO_19111_2018 + * \remark Implements VerticalCRS from \ref ISO_19111_2019 */ class PROJ_GCC_DLL VerticalCRS : virtual public SingleCRS, public io::IPROJStringExportable { @@ -476,7 +480,7 @@ class PROJ_GCC_DLL VerticalCRS : virtual public SingleCRS, * coordinate reference system is implemented using the parameters and * formula(s) specified in the definition of the coordinate conversion. * - * \remark Implements DerivedCRS from \ref ISO_19111_2018 + * \remark Implements DerivedCRS from \ref ISO_19111_2019 */ class PROJ_GCC_DLL DerivedCRS : virtual public SingleCRS { public: @@ -503,7 +507,7 @@ class PROJ_GCC_DLL DerivedCRS : virtual public SingleCRS { PROJ_INTERNAL void setDerivingConversionCRS(); PROJ_INTERNAL void baseExportToWKT( - io::WKTFormatter *&formatter, const std::string &keyword, + io::WKTFormatter *formatter, const std::string &keyword, const std::string &baseKeyword) const; // throw(FormattingException) PROJ_INTERNAL bool @@ -539,7 +543,7 @@ using ProjectedCRSNNPtr = util::nn<ProjectedCRSPtr>; * height is passed through unchanged and forms the vertical axis of the * projected CRS's Cartesian coordinate system. * - * \remark Implements ProjectedCRS from \ref ISO_19111_2018 + * \remark Implements ProjectedCRS from \ref ISO_19111_2019 */ class PROJ_GCC_DLL ProjectedCRS final : public DerivedCRS, public io::IPROJStringExportable { @@ -612,7 +616,7 @@ using TemporalCRSNNPtr = util::nn<TemporalCRSPtr>; /** \brief A coordinate reference system associated with a temporal datum and a * one-dimensional temporal coordinate system. * - * \remark Implements TemporalCRS from \ref ISO_19111_2018 + * \remark Implements TemporalCRS from \ref ISO_19111_2019 */ class PROJ_GCC_DLL TemporalCRS : virtual public SingleCRS { public: @@ -671,7 +675,7 @@ using EngineeringCRSNNPtr = util::nn<EngineeringCRSPtr>; * In \ref WKT2, it maps to a ENGINEERINGCRS / ENGCRS keyword. In \ref WKT1, * it maps to a LOCAL_CS keyword. * - * \remark Implements EngineeringCRS from \ref ISO_19111_2018 + * \remark Implements EngineeringCRS from \ref ISO_19111_2019 */ class PROJ_GCC_DLL EngineeringCRS : virtual public SingleCRS { public: @@ -725,7 +729,7 @@ using ParametricCRSNNPtr = util::nn<ParametricCRSPtr>; * without geodetic corrections, or on moving platforms such as road vehicles * vessels, aircraft or spacecraft, or as the internal CRS of an image. * - * \remark Implements ParametricCRS from \ref ISO_19111_2018 + * \remark Implements ParametricCRS from \ref ISO_19111_2019 */ class PROJ_GCC_DLL ParametricCRS : virtual public SingleCRS { public: @@ -781,11 +785,11 @@ using CompoundCRSNNPtr = util::nn<CompoundCRSPtr>; * if coordinate values in one cannot be converted or transformed into * coordinate values in the other. * - * \note As a departure to \ref ISO_19111_2018, we allow to build a CompoundCRS - * from CRS objects, whereas ISO19111:2018 restricts the components to + * \note As a departure to \ref ISO_19111_2019, we allow to build a CompoundCRS + * from CRS objects, whereas ISO19111:2019 restricts the components to * SingleCRS. * - * \remark Implements CompoundCRS from \ref ISO_19111_2018 + * \remark Implements CompoundCRS from \ref ISO_19111_2019 */ class PROJ_GCC_DLL CompoundCRS final : public CRS, public io::IPROJStringExportable { @@ -857,7 +861,7 @@ class PROJ_GCC_DLL CompoundCRS final : public CRS, * present in \ref WKT1. * * \note Contrary to other CRS classes of this package, there is no - * \ref ISO_19111_2018 modelling of a BoundCRS. + * \ref ISO_19111_2019 modelling of a BoundCRS. * * \remark Implements BoundCRS from \ref WKT2 */ @@ -935,7 +939,7 @@ using DerivedGeodeticCRSNNPtr = util::nn<DerivedGeodeticCRSPtr>; * inheriting a geodetic reference frame, and associated with a 3D Cartesian * or spherical coordinate system. * - * \remark Implements DerivedGeodeticCRS from \ref ISO_19111_2018 + * \remark Implements DerivedGeodeticCRS from \ref ISO_19111_2019 */ class PROJ_GCC_DLL DerivedGeodeticCRS final : public GeodeticCRS, public DerivedCRS { @@ -1010,7 +1014,7 @@ using DerivedGeographicCRSNNPtr = util::nn<DerivedGeographicCRSPtr>; * A derived geographic CRS can be based on a geodetic CRS only if that * geodetic CRS definition includes an ellipsoid. * - * \remark Implements DerivedGeographicCRS from \ref ISO_19111_2018 + * \remark Implements DerivedGeographicCRS from \ref ISO_19111_2019 */ class PROJ_GCC_DLL DerivedGeographicCRS final : public GeographicCRS, public DerivedCRS { @@ -1075,7 +1079,7 @@ using DerivedProjectedCRSNNPtr = util::nn<DerivedProjectedCRSPtr>; * * A DerivedProjectedCRS is not a ProjectedCRS. * - * \remark Implements DerivedProjectedCRS from \ref ISO_19111_2018 + * \remark Implements DerivedProjectedCRS from \ref ISO_19111_2019 */ class PROJ_GCC_DLL DerivedProjectedCRS final : public DerivedCRS { public: @@ -1129,7 +1133,7 @@ using DerivedVerticalCRSNNPtr = util::nn<DerivedVerticalCRSPtr>; * coordinate reference system as its base CRS, thereby inheriting a vertical * reference frame, and a vertical coordinate system. * - * \remark Implements DerivedVerticalCRS from \ref ISO_19111_2018 + * \remark Implements DerivedVerticalCRS from \ref ISO_19111_2019 */ class PROJ_GCC_DLL DerivedVerticalCRS final : public VerticalCRS, public DerivedCRS { @@ -1205,23 +1209,23 @@ class PROJ_GCC_DLL DerivedCRSTemplate final : public DerivedCRSTraits::BaseType, typedef util::nn<std::shared_ptr<CSType>> CSNNPtr; /** \brief Return the base CRS of a DerivedCRSTemplate. - * - * @return the base CRS. - */ + * + * @return the base CRS. + */ PROJ_DLL const BaseNNPtr baseCRS() const; /** \brief Instantiate a DerivedCRSTemplate from a base CRS, a deriving - * conversion and a cs::CoordinateSystem. - * - * @param properties See \ref general_properties. - * At minimum the name should be defined. - * @param baseCRSIn base CRS. - * @param derivingConversionIn the deriving conversion from the base CRS to - * this - * CRS. - * @param csIn the coordinate system. - * @return new DerivedCRSTemplate. - */ + * conversion and a cs::CoordinateSystem. + * + * @param properties See \ref general_properties. + * At minimum the name should be defined. + * @param baseCRSIn base CRS. + * @param derivingConversionIn the deriving conversion from the base CRS to + * this + * CRS. + * @param csIn the coordinate system. + * @return new DerivedCRSTemplate. + */ PROJ_DLL static NNPtr create(const util::PropertyMap &properties, const BaseNNPtr &baseCRSIn, const operation::ConversionNNPtr &derivingConversionIn, @@ -1275,7 +1279,7 @@ struct PROJ_GCC_DLL DerivedEngineeringCRSTraits { * engineering datum, and is associated with one of the coordinate system * types for an EngineeringCRS * - * \remark Implements DerivedEngineeringCRS from \ref ISO_19111_2018 + * \remark Implements DerivedEngineeringCRS from \ref ISO_19111_2019 */ #ifdef DOXYGEN_ENABLED class DerivedEngineeringCRS @@ -1312,7 +1316,7 @@ struct PROJ_GCC_DLL DerivedParametricCRSTraits { * coordinate reference system as its base CRS, thereby inheriting a parametric * datum, and a parametric coordinate system. * - * \remark Implements DerivedParametricCRS from \ref ISO_19111_2018 + * \remark Implements DerivedParametricCRS from \ref ISO_19111_2019 */ #ifdef DOXYGEN_ENABLED class DerivedParametricCRS @@ -1349,7 +1353,7 @@ struct PROJ_GCC_DLL DerivedTemporalCRSTraits { * coordinate reference system as its base CRS, thereby inheriting a temporal * datum, and a temporal coordinate system. * - * \remark Implements DerivedTemporalCRS from \ref ISO_19111_2018 + * \remark Implements DerivedTemporalCRS from \ref ISO_19111_2019 */ #ifdef DOXYGEN_ENABLED class DerivedTemporalCRS : public DerivedCRSTemplate<DerivedTemporalCRSTraits> { diff --git a/include/proj/datum.hpp b/include/proj/datum.hpp index 17c4c2c1..b7416497 100644 --- a/include/proj/datum.hpp +++ b/include/proj/datum.hpp @@ -1,7 +1,7 @@ /****************************************************************************** * * Project: PROJ - * Purpose: ISO19111:2018 implementation + * Purpose: ISO19111:2019 implementation * Author: Even Rouault <even dot rouault at spatialys dot com> * ****************************************************************************** @@ -59,7 +59,7 @@ namespace datum { * subtype can be associated with only specific types of coordinate reference * systems. * - * \remark Implements Datum from \ref ISO_19111_2018 + * \remark Implements Datum from \ref ISO_19111_2019 */ class PROJ_GCC_DLL Datum : public common::ObjectUsage { public: @@ -115,7 +115,7 @@ using DatumEnsembleNNPtr = util::nn<DatumEnsemblePtr>; * Every frame within the datum ensemble must be a realizations of the same * Terrestrial Reference System or Vertical Reference System. * - * \remark Implements DatumEnsemble from \ref ISO_19111_2018 + * \remark Implements DatumEnsemble from \ref ISO_19111_2019 */ class PROJ_GCC_DLL DatumEnsemble final : public common::IdentifiedObject { public: @@ -168,7 +168,7 @@ using PrimeMeridianNNPtr = util::nn<PrimeMeridianPtr>; * \note The default value for prime meridian name is "Greenwich". When the * default applies, the value for the longitude shall be 0 (degrees). * - * \remark Implements PrimeMeridian from \ref ISO_19111_2018 + * \remark Implements PrimeMeridian from \ref ISO_19111_2019 */ class PROJ_GCC_DLL PrimeMeridian final : public common::IdentifiedObject, public io::IPROJStringExportable { @@ -240,7 +240,7 @@ using EllipsoidNNPtr = util::nn<EllipsoidPtr>; * For the Earth an oblate biaxial ellipsoid is used: in mathematical terms, * it is a surface formed by the rotation of an ellipse about its minor axis. * - * \remark Implements Ellipsoid from \ref ISO_19111_2018 + * \remark Implements Ellipsoid from \ref ISO_19111_2019 */ class PROJ_GCC_DLL Ellipsoid final : public common::IdentifiedObject, public io::IPROJStringExportable { @@ -369,7 +369,7 @@ using GeodeticReferenceFrameNNPtr = util::nn<GeodeticReferenceFramePtr>; * * \note In \ref ISO_19111_2007, this class was called GeodeticDatum. * - * \remark Implements GeodeticReferenceFrame from \ref ISO_19111_2018 + * \remark Implements GeodeticReferenceFrame from \ref ISO_19111_2019 */ class PROJ_GCC_DLL GeodeticReferenceFrame : public Datum { public: @@ -443,7 +443,7 @@ using DynamicGeodeticReferenceFrameNNPtr = * For example defining station coordinates having linear velocities to account * for crustal motion. * - * \remark Implements DynamicGeodeticReferenceFrame from \ref ISO_19111_2018 + * \remark Implements DynamicGeodeticReferenceFrame from \ref ISO_19111_2019 */ class PROJ_GCC_DLL DynamicGeodeticReferenceFrame final : public GeodeticReferenceFrame { @@ -498,7 +498,7 @@ class PROJ_GCC_DLL DynamicGeodeticReferenceFrame final /** \brief The specification of the method by which the vertical reference frame * is realized. * - * \remark Implements RealizationMethod from \ref ISO_19111_2018 + * \remark Implements RealizationMethod from \ref ISO_19111_2019 */ class PROJ_GCC_DLL RealizationMethod : public util::CodeList { public: @@ -528,7 +528,7 @@ using VerticalReferenceFrameNNPtr = util::nn<VerticalReferenceFramePtr>; * * \note In \ref ISO_19111_2007, this class was called VerticalDatum. - * \remark Implements VerticalReferenceFrame from \ref ISO_19111_2018 + * \remark Implements VerticalReferenceFrame from \ref ISO_19111_2019 */ class PROJ_GCC_DLL VerticalReferenceFrame : public Datum { public: @@ -585,7 +585,7 @@ using DynamicVerticalReferenceFrameNNPtr = * For example defining station heights have velocity to account for * post-glacial isostatic rebound motion. * - * \remark Implements DynamicVerticalReferenceFrame from \ref ISO_19111_2018 + * \remark Implements DynamicVerticalReferenceFrame from \ref ISO_19111_2019 */ class PROJ_GCC_DLL DynamicVerticalReferenceFrame final : public VerticalReferenceFrame { @@ -645,7 +645,7 @@ using TemporalDatumNNPtr = util::nn<TemporalDatumPtr>; /** \brief The definition of the relationship of a temporal coordinate system * to an object. The object is normally time on the Earth. * - * \remark Implements TemporalDatum from \ref ISO_19111_2018 + * \remark Implements TemporalDatum from \ref ISO_19111_2019 */ class PROJ_GCC_DLL TemporalDatum final : public Datum { public: @@ -698,7 +698,7 @@ using EngineeringDatumNNPtr = util::nn<EngineeringDatumPtr>; * point at a construction site), or be a defined point on a moving vehicle * (such as on a ship or satellite), or a defined point of an image. * - * \remark Implements EngineeringDatum from \ref ISO_19111_2018 + * \remark Implements EngineeringDatum from \ref ISO_19111_2019 */ class PROJ_GCC_DLL EngineeringDatum final : public Datum { public: @@ -742,7 +742,7 @@ using ParametricDatumNNPtr = util::nn<ParametricDatumPtr>; * particular reference surface used as the origin of a parametric coordinate * system, including its position with respect to the Earth. * - * \remark Implements ParametricDatum from \ref ISO_19111_2018 + * \remark Implements ParametricDatum from \ref ISO_19111_2019 */ class PROJ_GCC_DLL ParametricDatum final : public Datum { public: diff --git a/include/proj/internal/coordinateoperation_constants.hpp b/include/proj/internal/coordinateoperation_constants.hpp index accb4a1e..9d65dab8 100644 --- a/include/proj/internal/coordinateoperation_constants.hpp +++ b/include/proj/internal/coordinateoperation_constants.hpp @@ -1,7 +1,7 @@ /****************************************************************************** * * Project: PROJ - * Purpose: ISO19111:2018 implementation + * Purpose: ISO19111:2019 implementation * Author: Even Rouault <even dot rouault at spatialys dot com> * ****************************************************************************** diff --git a/include/proj/internal/coordinateoperation_internal.hpp b/include/proj/internal/coordinateoperation_internal.hpp index 8428b8bf..207c20b4 100644 --- a/include/proj/internal/coordinateoperation_internal.hpp +++ b/include/proj/internal/coordinateoperation_internal.hpp @@ -1,7 +1,7 @@ /****************************************************************************** * * Project: PROJ - * Purpose: ISO19111:2018 implementation + * Purpose: ISO19111:2019 implementation * Author: Even Rouault <even dot rouault at spatialys dot com> * ****************************************************************************** @@ -109,8 +109,9 @@ using InverseCoordinateOperationNNPtr = util::nn<InverseCoordinateOperationPtr>; */ class InverseCoordinateOperation : virtual public CoordinateOperation { public: - InverseCoordinateOperation(const CoordinateOperationNNPtr &forwardOperation, - bool wktSupportsInversion); + InverseCoordinateOperation( + const CoordinateOperationNNPtr &forwardOperationIn, + bool wktSupportsInversion); ~InverseCoordinateOperation() override; @@ -124,6 +125,10 @@ class InverseCoordinateOperation : virtual public CoordinateOperation { CoordinateOperationNNPtr inverse() const override; + const CoordinateOperationNNPtr &forwardOperation() const { + return forwardOperation_; + } + protected: CoordinateOperationNNPtr forwardOperation_; bool wktSupportsInversion_; @@ -174,6 +179,8 @@ class InverseConversion : public Conversion, public InverseCoordinateOperation { #endif static CoordinateOperationNNPtr create(const ConversionNNPtr &forward); + + CoordinateOperationNNPtr _shallowClone() const override; }; // --------------------------------------------------------------------------- @@ -204,6 +211,8 @@ class InverseTransformation : public Transformation, return InverseCoordinateOperation::inverse(); } + TransformationNNPtr inverseAsTransformation() const; + #ifdef _MSC_VER // To avoid a warning C4250: // 'osgeo::proj::operation::InverseTransformation': inherits @@ -216,6 +225,8 @@ class InverseTransformation : public Transformation, #endif static TransformationNNPtr create(const TransformationNNPtr &forward); + + CoordinateOperationNNPtr _shallowClone() const override; }; // --------------------------------------------------------------------------- @@ -246,17 +257,21 @@ class PROJBasedOperation : public SingleOperation { create(const util::PropertyMap &properties, const io::IPROJStringExportableNNPtr &projExportable, bool inverse, const crs::CRSNNPtr &sourceCRS, const crs::CRSNNPtr &targetCRS, - const std::vector<metadata::PositionalAccuracyNNPtr> &accuracies); + const std::vector<metadata::PositionalAccuracyNNPtr> &accuracies, + bool hasRoughTransformation); std::set<GridDescription> gridsNeeded(const io::DatabaseContextPtr &databaseContext) const override; protected: - PROJBasedOperation(const OperationMethodNNPtr &methodIn); + PROJBasedOperation(const PROJBasedOperation &) = default; + explicit PROJBasedOperation(const OperationMethodNNPtr &methodIn); void _exportToPROJString(io::PROJStringFormatter *formatter) const override; // throw(FormattingException) + CoordinateOperationNNPtr _shallowClone() const override; + INLINED_MAKE_SHARED private: diff --git a/include/proj/internal/coordinatesystem_internal.hpp b/include/proj/internal/coordinatesystem_internal.hpp index 63c5f7af..ccef2e7d 100644 --- a/include/proj/internal/coordinatesystem_internal.hpp +++ b/include/proj/internal/coordinatesystem_internal.hpp @@ -1,7 +1,7 @@ /****************************************************************************** * * Project: PROJ - * Purpose: ISO19111:2018 implementation + * Purpose: ISO19111:2019 implementation * Author: Even Rouault <even dot rouault at spatialys dot com> * ****************************************************************************** diff --git a/include/proj/internal/internal.hpp b/include/proj/internal/internal.hpp index b16e12bc..2222a264 100644 --- a/include/proj/internal/internal.hpp +++ b/include/proj/internal/internal.hpp @@ -1,7 +1,7 @@ /****************************************************************************** * * Project: PROJ - * Purpose: ISO19111:2018 implementation + * Purpose: ISO19111:2019 implementation * Author: Even Rouault <even dot rouault at spatialys dot com> * ****************************************************************************** @@ -53,7 +53,7 @@ #if ((defined(__clang__) && \ (__clang_major__ > 3 || \ (__clang_major__ == 3 && __clang_minor__ >= 7))) || \ - __GNUC__ >= 7) + (__GNUC__ >= 7 && !__INTEL_COMPILER)) /** Macro for fallthrough in a switch case construct */ #define PROJ_FALLTHROUGH [[clang::fallthrough]]; #else @@ -140,6 +140,9 @@ std::string toupper(const std::string &osStr); PROJ_FOR_TEST std::vector<std::string> split(const std::string &osStr, char separator); +PROJ_FOR_TEST std::vector<std::string> split(const std::string &osStr, + const std::string &separator); + bool ci_equal(const char *a, const char *b) noexcept; #ifdef SUPPORT_DELETED_FUNCTION diff --git a/include/proj/internal/io_internal.hpp b/include/proj/internal/io_internal.hpp index be6a11bd..f614fc67 100644 --- a/include/proj/internal/io_internal.hpp +++ b/include/proj/internal/io_internal.hpp @@ -1,7 +1,7 @@ /****************************************************************************** * * Project: PROJ - * Purpose: ISO19111:2018 implementation + * Purpose: ISO19111:2019 implementation * Author: Even Rouault <even dot rouault at spatialys dot com> * ****************************************************************************** @@ -76,7 +76,8 @@ class WKTConstants { static const std::string SCALEUNIT; static const std::string TIMEUNIT; static const std::string ELLIPSOID; - static const std::string CS; + // underscore, since there is a CS macro in Solaris system headers + static const std::string CS_; static const std::string ID; static const std::string PROJCRS; static const std::string BASEGEODCRS; @@ -132,6 +133,7 @@ class WKTConstants { static const std::string BASEENGCRS; static const std::string BASEPARAMCRS; static const std::string BASETIMECRS; + static const std::string VERSION; // WKT2 alternate (longer or shorter) static const std::string GEODETICCRS; diff --git a/include/proj/io.hpp b/include/proj/io.hpp index 091efcb7..c553598d 100644 --- a/include/proj/io.hpp +++ b/include/proj/io.hpp @@ -1,7 +1,7 @@ /****************************************************************************** * * Project: PROJ - * Purpose: ISO19111:2018 implementation + * Purpose: ISO19111:2019 implementation * Author: Even Rouault <even dot rouault at spatialys dot com> * ****************************************************************************** @@ -195,8 +195,7 @@ class PROJ_GCC_DLL WKTFormatter { WKT2_2018_SIMPLIFIED, /** WKT1 as traditionally output by GDAL, deriving from OGC 01-009. - A notable departuPROJ_GCC_DLLre from WKT1_GDAL with respect to OGC - 01-009 is + A notable departure from WKT1_GDAL with respect to OGC 01-009 is that in WKT1_GDAL, the unit of the PRIMEM value is always degrees. */ WKT1_GDAL, @@ -262,6 +261,13 @@ class PROJ_GCC_DLL WKTFormatter { PROJ_INTERNAL void popOutputId(); PROJ_INTERNAL bool outputId() const; + PROJ_INTERNAL void pushHasId(bool hasId); + PROJ_INTERNAL void popHasId(); + + PROJ_INTERNAL void pushDisableUsage(); + PROJ_INTERNAL void popDisableUsage(); + PROJ_INTERNAL bool outputUsage() const; + PROJ_INTERNAL void pushAxisLinearUnit(const common::UnitOfMeasureNNPtr &unit); PROJ_INTERNAL void popAxisLinearUnit(); @@ -303,6 +309,8 @@ class PROJ_GCC_DLL WKTFormatter { PROJ_INTERNAL bool primeMeridianOrParameterUnitOmittedIfSameAsAxis() const; PROJ_INTERNAL bool primeMeridianInDegree() const; PROJ_INTERNAL bool outputCSUnitOnlyOnceIfSame() const; + PROJ_INTERNAL bool idOnTopLevelOnly() const; + PROJ_INTERNAL bool topLevelHasId() const; /** WKT version. */ enum class Version { @@ -419,7 +427,8 @@ class PROJ_GCC_DLL PROJStringFormatter { PROJ_INTERNAL void setOmitProjLongLatIfPossible(bool omit); PROJ_INTERNAL bool omitProjLongLatIfPossible() const; - PROJ_INTERNAL void setOmitZUnitConversion(bool omit); + PROJ_INTERNAL void pushOmitZUnitConversion(); + PROJ_INTERNAL void popOmitZUnitConversion(); PROJ_INTERNAL bool omitZUnitConversion() const; PROJ_INTERNAL void setDropEarlyBindingsTerms(bool drop); @@ -891,31 +900,35 @@ class PROJ_GCC_DLL AuthorityFactory { /** CRS information */ struct CRSInfo { /** Authority name */ - std::string authName{}; + std::string authName; /** Code */ - std::string code{}; + std::string code; /** Name */ - std::string name{}; + std::string name; /** Type */ - ObjectType type{ObjectType::CRS}; + ObjectType type; /** Whether the object is deprecated */ - bool deprecated{}; + bool deprecated; /** Whereas the west_lon_degree, south_lat_degree, east_lon_degree and - * north_lat_degree fields are valid. */ - bool bbox_valid{}; + * north_lat_degree fields are valid. */ + bool bbox_valid; /** Western-most longitude of the area of use, in degrees. */ - double west_lon_degree{}; + double west_lon_degree; /** Southern-most latitude of the area of use, in degrees. */ - double south_lat_degree{}; + double south_lat_degree; /** Eastern-most longitude of the area of use, in degrees. */ - double east_lon_degree{}; + double east_lon_degree; /** Northern-most latitude of the area of use, in degrees. */ - double north_lat_degree{}; + double north_lat_degree; /** Name of the area of use. */ - std::string areaName{}; + std::string areaName; /** Name of the projection method for a projected CRS. Might be empty * even for projected CRS in some cases. */ - std::string projectionMethodName{}; + std::string projectionMethodName; + + //! @cond Doxygen_Suppress + CRSInfo(); + //! @endcond }; PROJ_DLL std::list<CRSInfo> getCRSInfoList() const; @@ -981,16 +994,16 @@ class PROJ_GCC_DLL AuthorityFactory { PROJ_INTERNAL std::list<crs::CompoundCRSNNPtr> createCompoundCRSFromExisting(const crs::CompoundCRSNNPtr &crs) const; + + PROJ_INTERNAL crs::CRSNNPtr + createCoordinateReferenceSystem(const std::string &code, + bool allowCompound) const; //! @endcond protected: PROJ_INTERNAL AuthorityFactory(const DatabaseContextNNPtr &context, const std::string &authorityName); - PROJ_INTERNAL crs::CRSNNPtr - createCoordinateReferenceSystem(const std::string &code, - bool allowCompound) const; - PROJ_INTERNAL crs::GeodeticCRSNNPtr createGeodeticCRS(const std::string &code, bool geographicOnly) const; diff --git a/include/proj/metadata.hpp b/include/proj/metadata.hpp index 02873c81..d32996fb 100644 --- a/include/proj/metadata.hpp +++ b/include/proj/metadata.hpp @@ -1,7 +1,7 @@ /****************************************************************************** * * Project: PROJ - * Purpose: ISO19111:2018 implementation + * Purpose: ISO19111:2019 implementation * Author: Even Rouault <even dot rouault at spatialys dot com> * ****************************************************************************** @@ -357,7 +357,7 @@ using IdentifierNNPtr = util::nn<IdentifierPtr>; /** \brief Value uniquely identifying an object within a namespace. * - * \remark Implements Identifier as described in \ref ISO_19111_2018 but which + * \remark Implements Identifier as described in \ref ISO_19111_2019 but which * originates from \ref ISO_19115 */ class PROJ_GCC_DLL Identifier : public util::BaseObject, diff --git a/include/proj/util.hpp b/include/proj/util.hpp index 30985ec8..9425c3a3 100644 --- a/include/proj/util.hpp +++ b/include/proj/util.hpp @@ -1,7 +1,7 @@ /****************************************************************************** * * Project: PROJ - * Purpose: ISO19111:2018 implementation + * Purpose: ISO19111:2019 implementation * Author: Even Rouault <even dot rouault at spatialys dot com> * ****************************************************************************** |
