From c5fa51fb6382504c8e16e443f0781211a5ddf815 Mon Sep 17 00:00:00 2001 From: Even Rouault Date: Fri, 11 Oct 2019 23:45:19 +0200 Subject: proj_create_crs_to_crs(): remove elimination of Ballpark operations that caused transformation failures in some cases --- src/4D_api.cpp | 23 +---------------------- 1 file changed, 1 insertion(+), 22 deletions(-) (limited to 'src') diff --git a/src/4D_api.cpp b/src/4D_api.cpp index 4b47c4e9..c182b3bf 100644 --- a/src/4D_api.cpp +++ b/src/4D_api.cpp @@ -1137,8 +1137,6 @@ PJ *proj_create_crs_to_crs_from_pj (PJ_CONTEXT *ctx, const PJ *source_crs, cons try { - bool skipDefaultTransforms = true; - // Iterate over source->target candidate transformations and reproject // their long-lat bounding box into the source CRS. for( int i = 0; i < op_count; i++ ) @@ -1150,26 +1148,7 @@ PJ *proj_create_crs_to_crs_from_pj (PJ_CONTEXT *ctx, const PJ *source_crs, cons double east_lon = 0.0; double north_lat = 0.0; - const char* name = proj_get_name(op); - bool canUseOp = true; - if( skipDefaultTransforms && - name && (strstr(name, "Ballpark geographic offset") || - strstr(name, "Ballpark geocentric translation")) ) - { - // Skip default transformations unless there is already one at - // the beginning (in which case all of them will have one) - if( i == 0 ) - { - skipDefaultTransforms = false; - } - else - { - canUseOp = false; - } - } - - if( canUseOp && - proj_get_area_of_use(ctx, op, + if( proj_get_area_of_use(ctx, op, &west_lon, &south_lat, &east_lon, &north_lat, nullptr) ) { if( west_lon <= east_lon ) -- cgit v1.2.3 From 25e1f6ee789d9db8756e05423f9a454885db4b9f Mon Sep 17 00:00:00 2001 From: Even Rouault Date: Sat, 12 Oct 2019 00:15:16 +0200 Subject: createOperations(): allow transforming from a compoundCRS of a bound verticalCRS to a 2D CRS --- src/iso19111/coordinateoperation.cpp | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) (limited to 'src') diff --git a/src/iso19111/coordinateoperation.cpp b/src/iso19111/coordinateoperation.cpp index 6e6d4cec..6a05bbe8 100644 --- a/src/iso19111/coordinateoperation.cpp +++ b/src/iso19111/coordinateoperation.cpp @@ -12937,9 +12937,7 @@ CoordinateOperationFactory::Private::createOperations( auto vertCRSOfBaseOfBoundSrc = dynamic_cast(boundSrc->baseCRS().get()); - if (vertCRSOfBaseOfBoundSrc && hubSrcGeog && - hubSrcGeog->coordinateSystem()->axisList().size() == 3 && - geogDst->coordinateSystem()->axisList().size() == 3) { + if (vertCRSOfBaseOfBoundSrc && hubSrcGeog) { auto opsFirst = createOperations(sourceCRS, hubSrc, context); if (context.skipHorizontalTransformation) { if (!opsFirst.empty()) -- cgit v1.2.3