From 1f9b636b0ad7cb1a10a2af3661c7dde7a8c96c2b Mon Sep 17 00:00:00 2001 From: Even Rouault Date: Thu, 16 Nov 2023 22:49:42 +0100 Subject: [PATCH] pj_get_suggested_operation(): tune it to give correct result for RGAF09 to RRAF 1991 / UTM zone 20N + Guadeloupe 1988 height transformation --- cmake/ProjTest.cmake | 11 ++++++++--- data/tests/fr_ign_RAGTBT2016.tif | Bin 0 -> 33374 bytes src/4D_api.cpp | 21 ++++++++++++--------- src/iso19111/c_api.cpp | 2 +- src/proj_internal.h | 16 +++++++++++----- test/cli/testvarious | 12 ++++++++++++ test/cli/tv_out.dist | 4 ++++ 7 files changed, 48 insertions(+), 18 deletions(-) create mode 100644 data/tests/fr_ign_RAGTBT2016.tif diff --git a/cmake/ProjTest.cmake b/cmake/ProjTest.cmake index 5e035917f0..3de3fb4ce1 100644 --- a/cmake/ProjTest.cmake +++ b/cmake/ProjTest.cmake @@ -3,10 +3,15 @@ # function(proj_test_set_properties TESTNAME) - set_property(TEST ${TESTNAME} - PROPERTY ENVIRONMENT - "PROJ_SKIP_READ_USER_WRITABLE_DIRECTORY=YES" + set(_env "PROJ_SKIP_READ_USER_WRITABLE_DIRECTORY=YES" "PROJ_DATA=${PROJ_BINARY_DIR}/data/for_tests") + if(TIFF_ENABLED) + set(_env ${_env} "TIFF_ENABLED=YES") + else() + set(_env ${_env} "TIFF_ENABLED=NO") + endif() + set_property(TEST ${TESTNAME} + PROPERTY ENVIRONMENT ${_env}) endfunction() function(proj_add_test_script_sh SH_NAME BIN_USE) diff --git a/data/tests/fr_ign_RAGTBT2016.tif b/data/tests/fr_ign_RAGTBT2016.tif new file mode 100644 index 0000000000000000000000000000000000000000..f3479a9aca5b6ddebeeaa4056697759e0f5fbe2f GIT binary patch literal 33374 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 STpEY{Rp^HeCI1J`+8bB&;)nqN literal 0 HcmV?d00001 diff --git a/src/4D_api.cpp b/src/4D_api.cpp index d79fec8fd1..0b47902178 100644 --- a/src/4D_api.cpp +++ b/src/4D_api.cpp @@ -328,6 +328,8 @@ int pj_get_suggested_operation(PJ_CONTEXT *, // the one that has the smallest area (alt.accuracy == bestAccuracy && alt.pseudoArea < opList[iBest].pseudoArea && + !(alt.isUnknownAreaName && + !opList[iBest].isUnknownAreaName) && !opList[iBest].isPriorityOp)) && !alt.isOffshore)) { @@ -1693,7 +1695,7 @@ static PJ *add_coord_op_to_list( int idxInOriginalList, PJ *op, double west_lon, double south_lat, double east_lon, double north_lat, PJ *pjGeogToSrc, PJ *pjGeogToDst, const PJ *pjSrcGeocentricToLonLat, const PJ *pjDstGeocentricToLonLat, - bool isOffshore, std::vector &altCoordOps) { + const char *areaName, std::vector &altCoordOps) { /*****************************************************************************/ double minxSrc; @@ -1742,8 +1744,8 @@ static PJ *add_coord_op_to_list( const double accuracy = proj_coordoperation_get_accuracy(op->ctx, op); altCoordOps.emplace_back( idxInOriginalList, minxSrc, minySrc, maxxSrc, maxySrc, minxDst, - minyDst, maxxDst, maxyDst, op, name, accuracy, pseudoArea, - isOffshore, pjSrcGeocentricToLonLat, pjDstGeocentricToLonLat); + minyDst, maxxDst, maxyDst, op, name, accuracy, pseudoArea, areaName, + pjSrcGeocentricToLonLat, pjDstGeocentricToLonLat); op = nullptr; } return op; @@ -2018,23 +2020,22 @@ pj_create_prepared_operations(PJ_CONTEXT *ctx, const PJ *source_crs, north_lat = 90; } - const bool isOffshore = areaName && strstr(areaName, "- offshore"); if (west_lon <= east_lon) { op = add_coord_op_to_list( i, op, west_lon, south_lat, east_lon, north_lat, pjGeogToSrc, pjGeogToDst, pjSrcGeocentricToLonLat, - pjDstGeocentricToLonLat, isOffshore, preparedOpList); + pjDstGeocentricToLonLat, areaName, preparedOpList); } else { auto op_clone = proj_clone(ctx, op); op = add_coord_op_to_list( i, op, west_lon, south_lat, 180, north_lat, pjGeogToSrc, pjGeogToDst, pjSrcGeocentricToLonLat, - pjDstGeocentricToLonLat, isOffshore, preparedOpList); + pjDstGeocentricToLonLat, areaName, preparedOpList); op_clone = add_coord_op_to_list( i, op_clone, -180, south_lat, east_lon, north_lat, pjGeogToSrc, pjGeogToDst, pjSrcGeocentricToLonLat, - pjDstGeocentricToLonLat, isOffshore, preparedOpList); + pjDstGeocentricToLonLat, areaName, preparedOpList); proj_destroy(op_clone); } @@ -3019,13 +3020,15 @@ PJCoordOperation::PJCoordOperation( int idxInOriginalListIn, double minxSrcIn, double minySrcIn, double maxxSrcIn, double maxySrcIn, double minxDstIn, double minyDstIn, double maxxDstIn, double maxyDstIn, PJ *pjIn, const std::string &nameIn, - double accuracyIn, double pseudoAreaIn, bool isOffshoreIn, + double accuracyIn, double pseudoAreaIn, const char *areaNameIn, const PJ *pjSrcGeocentricToLonLatIn, const PJ *pjDstGeocentricToLonLatIn) : idxInOriginalList(idxInOriginalListIn), minxSrc(minxSrcIn), minySrc(minySrcIn), maxxSrc(maxxSrcIn), maxySrc(maxySrcIn), minxDst(minxDstIn), minyDst(minyDstIn), maxxDst(maxxDstIn), maxyDst(maxyDstIn), pj(pjIn), name(nameIn), accuracy(accuracyIn), - pseudoArea(pseudoAreaIn), isOffshore(isOffshoreIn), + pseudoArea(pseudoAreaIn), areaName(areaNameIn ? areaNameIn : ""), + isOffshore(areaName.find("- offshore") != std::string::npos), + isUnknownAreaName(areaName.empty() || areaName == "unknown"), isPriorityOp(isSpecialCaseForNAD83_to_NAD83HARN(name) || isSpecialCaseForGDA94_to_WGS84(name) || isSpecialCaseForWGS84_to_GDA2020(name)), diff --git a/src/iso19111/c_api.cpp b/src/iso19111/c_api.cpp index 59ea970f96..1ec48bd3b8 100644 --- a/src/iso19111/c_api.cpp +++ b/src/iso19111/c_api.cpp @@ -9135,7 +9135,7 @@ PJ *proj_normalize_for_visualization(PJ_CONTEXT *ctx, const PJ *obj) { alt.idxInOriginalList, minxSrc, minySrc, maxxSrc, maxySrc, minxDst, minyDst, maxxDst, maxyDst, pjNormalized, co->nameStr(), alt.accuracy, - alt.pseudoArea, alt.isOffshore, + alt.pseudoArea, alt.areaName.c_str(), alt.pjSrcGeocentricToLonLat, alt.pjDstGeocentricToLonLat); } diff --git a/src/proj_internal.h b/src/proj_internal.h index 409b1a5f32..f2a9a9a98b 100644 --- a/src/proj_internal.h +++ b/src/proj_internal.h @@ -343,7 +343,9 @@ struct PJCoordOperation { std::string name{}; double accuracy = -1.0; double pseudoArea = 0.0; + std::string areaName{}; bool isOffshore = false; + bool isUnknownAreaName = false; bool isPriorityOp = false; bool srcIsLonLatDegree = false; bool srcIsLatLonDegree = false; @@ -364,8 +366,8 @@ struct PJCoordOperation { double minySrcIn, double maxxSrcIn, double maxySrcIn, double minxDstIn, double minyDstIn, double maxxDstIn, double maxyDstIn, PJ *pjIn, const std::string &nameIn, - double accuracyIn, double pseudoAreaIn, bool isOffshoreIn, - const PJ *pjSrcGeocentricToLonLatIn, + double accuracyIn, double pseudoAreaIn, + const char *areaName, const PJ *pjSrcGeocentricToLonLatIn, const PJ *pjDstGeocentricToLonLatIn); PJCoordOperation(const PJCoordOperation &) = delete; @@ -377,7 +379,9 @@ struct PJCoordOperation { minyDst(other.minyDst), maxxDst(other.maxxDst), maxyDst(other.maxyDst), pj(proj_clone(ctx, other.pj)), name(std::move(other.name)), accuracy(other.accuracy), - pseudoArea(other.pseudoArea), isOffshore(other.isOffshore), + pseudoArea(other.pseudoArea), areaName(other.areaName), + isOffshore(other.isOffshore), + isUnknownAreaName(other.isUnknownAreaName), isPriorityOp(other.isPriorityOp), srcIsLonLatDegree(other.srcIsLonLatDegree), srcIsLatLonDegree(other.srcIsLatLonDegree), @@ -399,7 +403,9 @@ struct PJCoordOperation { minyDst(other.minyDst), maxxDst(other.maxxDst), maxyDst(other.maxyDst), name(std::move(other.name)), accuracy(other.accuracy), pseudoArea(other.pseudoArea), - isOffshore(other.isOffshore), isPriorityOp(other.isPriorityOp), + areaName(std::move(other.areaName)), isOffshore(other.isOffshore), + isUnknownAreaName(other.isUnknownAreaName), + isPriorityOp(other.isPriorityOp), srcIsLonLatDegree(other.srcIsLonLatDegree), srcIsLatLonDegree(other.srcIsLatLonDegree), dstIsLonLatDegree(other.dstIsLonLatDegree), @@ -422,7 +428,7 @@ struct PJCoordOperation { maxxDst == other.maxxDst && maxyDst == other.maxyDst && name == other.name && proj_is_equivalent_to(pj, other.pj, PJ_COMP_STRICT) && - accuracy == other.accuracy && isOffshore == other.isOffshore; + accuracy == other.accuracy && areaName == other.areaName; } bool operator!=(const PJCoordOperation &other) const { diff --git a/test/cli/testvarious b/test/cli/testvarious index a9589f500e..ed91426d91 100755 --- a/test/cli/testvarious +++ b/test/cli/testvarious @@ -1359,6 +1359,18 @@ $EXE -d 3 +proj=topocentric +datum=WGS84 +X_0=-3982059.42 +Y_0=3331314.88 +Z_0=3 0 0 0 EOF +echo "##############################################################" >> ${OUT} +echo "Test cs2cs EPSG:5488 (RGAF09) to EPSG:4559+5757 (RRAF 1991 / UTM zone 20N + Guadeloupe 1988 height)" >> ${OUT} +echo "Check that we use the horizontal transformation for Guadeloupe (RRAF 1991 to RGAF09 (2)), and not the one for Martinique" >> ${OUT} +# +if test "${TIFF_ENABLED}" = "yes"; then +PROJ_DATA=${PROJ_DATA}:${PROJ_DATA}/tests $EXE -d 3 EPSG:5488 EPSG:4559+5757 >> ${OUT} <> ${OUT} +fi + # Done! # do 'diff' with distribution results diff --git a/test/cli/tv_out.dist b/test/cli/tv_out.dist index 7dd56e5433..5e748b87f7 100644 --- a/test/cli/tv_out.dist +++ b/test/cli/tv_out.dist @@ -649,3 +649,7 @@ Test --t_epoch ############################################################## Test +proj=topocentric +datum=WGS84 +X_0=-3982059.42 +Y_0=3331314.88 +Z_0=3692463.58 +no_defs +type=crs +to EPSG:4978 0 0 0 -3982059.420 3331314.880 3692463.580 +############################################################## +Test cs2cs EPSG:5488 (RGAF09) to EPSG:4559+5757 (RRAF 1991 / UTM zone 20N + Guadeloupe 1988 height) +Check that we use the horizontal transformation for Guadeloupe (RRAF 1991 to RGAF09 (2)), and not the one for Martinique +661991.318 1796999.201 93.846