From e8b2e2a36324006146406fb1fc89ce6ed863807f Mon Sep 17 00:00:00 2001 From: Even Rouault Date: Sun, 17 Feb 2019 19:40:38 +0100 Subject: Modify the default strategy of researching intermediate CRS to do it only if there is no direct transformation --- include/proj/coordinateoperation.hpp | 17 +++++++++++++++-- include/proj/crs.hpp | 7 ++++--- 2 files changed, 19 insertions(+), 5 deletions(-) (limited to 'include') 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> 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; -- cgit v1.2.3