aboutsummaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorAndrew Bell <andrew.bell.ia@gmail.com>2019-05-15 10:47:03 -0400
committerAndrew Bell <andrew.bell.ia@gmail.com>2019-05-15 10:47:03 -0400
commit8f268409d37cea329d263e177b83e42f8384d3c7 (patch)
treec4d0f3dd19456600f718a6e0c8573577f433549b /include
parent886ced02f0aaab5d66d16459435f7447cf976650 (diff)
parentd67203a6f76a74f5ac029ff052dbcc72e3b59624 (diff)
downloadPROJ-8f268409d37cea329d263e177b83e42f8384d3c7.tar.gz
PROJ-8f268409d37cea329d263e177b83e42f8384d3c7.zip
Merge remote-tracking branch 'origin/master'
Diffstat (limited to 'include')
-rw-r--r--include/proj/CMakeLists.txt2
-rw-r--r--include/proj/common.hpp8
-rw-r--r--include/proj/coordinateoperation.hpp80
-rw-r--r--include/proj/coordinatesystem.hpp30
-rw-r--r--include/proj/crs.hpp78
-rw-r--r--include/proj/datum.hpp26
-rw-r--r--include/proj/internal/coordinateoperation_constants.hpp2
-rw-r--r--include/proj/internal/coordinateoperation_internal.hpp25
-rw-r--r--include/proj/internal/coordinatesystem_internal.hpp2
-rw-r--r--include/proj/internal/internal.hpp7
-rw-r--r--include/proj/internal/io_internal.hpp6
-rw-r--r--include/proj/io.hpp55
-rw-r--r--include/proj/metadata.hpp4
-rw-r--r--include/proj/util.hpp2
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>
*
******************************************************************************