aboutsummaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorEven Rouault <even.rouault@spatialys.com>2019-02-17 19:40:38 +0100
committerEven Rouault <even.rouault@spatialys.com>2019-02-17 19:42:35 +0100
commite8b2e2a36324006146406fb1fc89ce6ed863807f (patch)
tree5c2c0c9229958d63e77171f64f909864855afb5d /include
parenta8cbe0c66974871f5a7bd7ef94001ebf461ac7ea (diff)
downloadPROJ-e8b2e2a36324006146406fb1fc89ce6ed863807f.tar.gz
PROJ-e8b2e2a36324006146406fb1fc89ce6ed863807f.zip
Modify the default strategy of researching intermediate CRS to do it only if there is no direct transformation
Diffstat (limited to 'include')
-rw-r--r--include/proj/coordinateoperation.hpp17
-rw-r--r--include/proj/crs.hpp7
2 files changed, 19 insertions, 5 deletions
diff --git a/include/proj/coordinateoperation.hpp b/include/proj/coordinateoperation.hpp
index 6b32e24d..92b655f9 100644
--- a/include/proj/coordinateoperation.hpp
+++ b/include/proj/coordinateoperation.hpp
@@ -1726,9 +1726,22 @@ class PROJ_GCC_DLL CoordinateOperationContext {
PROJ_DLL GridAvailabilityUse getGridAvailabilityUse() const;
- PROJ_DLL void setAllowUseIntermediateCRS(bool use);
+ /** Describe if and how intermediate CRS should be used */
+ enum class IntermediateCRSUse {
+ /** Always search for intermediate CRS. */
+ ALWAYS,
- PROJ_DLL bool getAllowUseIntermediateCRS() const;
+ /** Only attempt looking for intermediate CRS if there is no direct
+ * transformation available. */
+ IF_NO_DIRECT_TRANSFORMATION,
+
+ /* Do not attempt looking for intermediate CRS. */
+ NEVER,
+ };
+
+ PROJ_DLL void setAllowUseIntermediateCRS(IntermediateCRSUse use);
+
+ PROJ_DLL IntermediateCRSUse getAllowUseIntermediateCRS() const;
PROJ_DLL void
setIntermediateCRS(const std::vector<std::pair<std::string, std::string>>
diff --git a/include/proj/crs.hpp b/include/proj/crs.hpp
index 6a09ea78..fb34d3b7 100644
--- a/include/proj/crs.hpp
+++ b/include/proj/crs.hpp
@@ -92,9 +92,10 @@ class PROJ_GCC_DLL CRS : public common::ObjectUsage {
PROJ_DLL GeodeticCRSPtr extractGeodeticCRS() const;
PROJ_DLL GeographicCRSPtr extractGeographicCRS() const;
PROJ_DLL VerticalCRSPtr extractVerticalCRS() const;
- PROJ_DLL CRSNNPtr
- createBoundCRSToWGS84IfPossible(const io::DatabaseContextPtr &dbContext,
- bool allowIntermediateCRS) const;
+ PROJ_DLL CRSNNPtr createBoundCRSToWGS84IfPossible(
+ const io::DatabaseContextPtr &dbContext,
+ operation::CoordinateOperationContext::IntermediateCRSUse
+ allowIntermediateCRSUse) const;
PROJ_DLL CRSNNPtr stripVerticalComponent() const;
PROJ_DLL const BoundCRSPtr &canonicalBoundCRS() PROJ_PURE_DECL;