From c4cad4ae1d9bd301f85181b7dc8181c84948b820 Mon Sep 17 00:00:00 2001 From: Nyall Dawson Date: Wed, 29 Jan 2025 12:42:36 +1000 Subject: [PATCH 01/15] Attempt to delegate bounding box transformation to proj on >= 8.2 Refs #59821 --- src/core/proj/qgscoordinatetransform.cpp | 91 +++++++++++++++++++ src/core/proj/qgsprojutils.cpp | 19 ++++ src/core/proj/qgsprojutils.h | 37 ++++++++ tests/src/core/testqgscoordinatetransform.cpp | 20 +--- 4 files changed, 152 insertions(+), 15 deletions(-) diff --git a/src/core/proj/qgscoordinatetransform.cpp b/src/core/proj/qgscoordinatetransform.cpp index 3ff63ed766ba..c24189236cb5 100644 --- a/src/core/proj/qgscoordinatetransform.cpp +++ b/src/core/proj/qgscoordinatetransform.cpp @@ -592,6 +592,15 @@ QgsRectangle QgsCoordinateTransform::transformBoundingBox( const QgsRectangle &r return QgsRectangle( p, p ); } +#ifdef QGISDEBUG + if ( !mHasContext ) + { + QgsDebugMsgLevel( QStringLiteral( "No QgsCoordinateTransformContext context set for transform" ), 4 ); + } +#endif + + const double xMin = rect.xMinimum(); + const double xMax = rect.xMaximum(); double yMin = rect.yMinimum(); double yMax = rect.yMaximum(); if ( d->mGeographicToWebMercator && @@ -618,6 +627,87 @@ QgsRectangle QgsCoordinateTransform::transformBoundingBox( const QgsRectangle &r } } + // delegate logic to proj if version >= 8.2 available +#if PROJ_VERSION_MAJOR>8 || (PROJ_VERSION_MAJOR==8 && PROJ_VERSION_MINOR>=2) + + QgsScopedProjSilentLogger errorLogger; + + QgsDebugMsgLevel( QStringLiteral( "Entering transformBoundingBox..." ), 4 ); + + ProjData projData = d->threadLocalProjData(); + PJ_CONTEXT *projContext = QgsProjContext::get(); + + double transXMin = 0; + double transYMin = 0; + double transXMax = 0; + double transYMax = 0; + + proj_errno_reset( projData ); + const int projResult = proj_trans_bounds( projContext, projData, ( direction == Qgis::TransformDirection::Forward && !d->mIsReversed ) || ( direction == Qgis::TransformDirection::Reverse && d->mIsReversed ) ? PJ_FWD : PJ_INV, + xMin, yMin, xMax, yMax, + &transXMin, &transYMin, &transXMax, &transYMax, 21 ); + if ( projResult != 1 + || !std::isfinite( transXMin ) + || !std::isfinite( transXMax ) + || !std::isfinite( transYMin ) + || !std::isfinite( transYMax ) ) + { + const QString projErr = QString::fromUtf8( proj_context_errno_string( projContext, proj_errno( projData ) ) ); + const QString dir = ( direction == Qgis::TransformDirection::Forward ) ? QObject::tr( "Forward transform" ) : QObject::tr( "Inverse transform" ); + const QString msg = QObject::tr( "%1 (%2 to %3) of bounding box failed: %4" ) + .arg( dir, + ( direction == Qgis::TransformDirection::Forward ) ? d->mSourceCRS.authid() : d->mDestCRS.authid(), + ( direction == Qgis::TransformDirection::Forward ) ? d->mDestCRS.authid() : d->mSourceCRS.authid(), + projErr ); + QgsDebugError( msg ); + + throw QgsCsException( msg ); + } + + // check if result bbox is geographic and is crossing 180/-180 line: ie. min X is before the 180° and max X is after the -180° + bool doHandle180Crossover = false; + + if ( handle180Crossover + && ( ( direction == Qgis::TransformDirection::Forward && d->mDestCRS.isGeographic() ) || + ( direction == Qgis::TransformDirection::Reverse && d->mSourceCRS.isGeographic() ) ) + && ( transXMax < transXMin ) ) + { + //if crossing the date line, temporarily add 360 degrees to -ve longitudes + std::swap( transXMax, transXMin ); + if ( transXMin < 0 ) + transXMin += 360; + if ( transXMax < 0 ) + transXMax += 360; + doHandle180Crossover = true; + } + + QgsRectangle boundingBoxRect{ transXMin, transYMin, transXMax, transYMax }; + if ( boundingBoxRect.isNull() ) + { + // something bad happened when reprojecting the filter rect... no finite points were left! + throw QgsCsException( QObject::tr( "Could not transform bounding box to target CRS" ) ); + } + + if ( doHandle180Crossover ) + { + //subtract temporary addition of 360 degrees from longitudes + if ( boundingBoxRect.xMinimum() > 180.0 ) + boundingBoxRect.setXMinimum( boundingBoxRect.xMinimum() - 360.0 ); + if ( boundingBoxRect.xMaximum() > 180.0 ) + boundingBoxRect.setXMaximum( boundingBoxRect.xMaximum() - 360.0 ); + } + + QgsDebugMsgLevel( "Projected extent: " + boundingBoxRect.toString(), 4 ); + + if ( boundingBoxRect.isEmpty() ) + { + QgsDebugMsgLevel( "Original extent: " + rect.toString(), 4 ); + } + + return boundingBoxRect; +#else + // this logic is buggy! See https://github.com/qgis/QGIS/issues/59821 + // 64 points (<=2.12) is not enough, see #13665, for EPSG:4326 -> EPSG:3574 (say that it is a hard one), // are decent result from about 500 points and more. This method is called quite often, but // even with 1000 points it takes < 1ms. @@ -731,6 +821,7 @@ QgsRectangle QgsCoordinateTransform::transformBoundingBox( const QgsRectangle &r } return bb_rect; +#endif } void QgsCoordinateTransform::transformCoords( int numPoints, double *x, double *y, double *z, Qgis::TransformDirection direction ) const diff --git a/src/core/proj/qgsprojutils.cpp b/src/core/proj/qgsprojutils.cpp index f381644d301b..ad1db1f8cf4f 100644 --- a/src/core/proj/qgsprojutils.cpp +++ b/src/core/proj/qgsprojutils.cpp @@ -359,6 +359,10 @@ void QgsProjUtils::proj_collecting_logger( void *user_data, int /*level*/, const dest->append( messageString ); } +void QgsProjUtils::proj_silent_logger( void * /*user_data*/, int /*level*/, const char * /*message*/ ) +{ +} + void QgsProjUtils::proj_logger( void *, int level, const char *message ) { #ifdef QGISDEBUG @@ -619,3 +623,18 @@ QgsScopedProjCollectingLogger::~QgsScopedProjCollectingLogger() // reset logger back to terminal output proj_log_func( QgsProjContext::get(), nullptr, QgsProjUtils::proj_logger ); } + +// +// QgsScopedProjSilentLogger +// + +QgsScopedProjSilentLogger::QgsScopedProjSilentLogger() +{ + proj_log_func( QgsProjContext::get(), nullptr, QgsProjUtils::proj_silent_logger ); +} + +QgsScopedProjSilentLogger::~QgsScopedProjSilentLogger() +{ + // reset logger back to terminal output + proj_log_func( QgsProjContext::get(), nullptr, QgsProjUtils::proj_logger ); +} diff --git a/src/core/proj/qgsprojutils.h b/src/core/proj/qgsprojutils.h index a343df0d6204..fa5299283cf1 100644 --- a/src/core/proj/qgsprojutils.h +++ b/src/core/proj/qgsprojutils.h @@ -253,6 +253,11 @@ class CORE_EXPORT QgsProjUtils */ static void proj_collecting_logger( void *user_data, int level, const char *message ); + /** + * QGIS proj log function which ignores errors. + */ + static void proj_silent_logger( void *user_data, int level, const char *message ); + #if 0 // not possible in current Proj 6 API /** @@ -302,6 +307,38 @@ class CORE_EXPORT QgsProjContext #endif }; +/** + * \ingroup core + * + * \brief Scoped object for temporary suppression of PROJ logging output. + * + * Temporarily sets the PROJ log function to one which suppresses errors for the lifetime of the object, + * before returning it to the default QGIS proj logging function on destruction. + * + * \note The collecting logger ONLY applies to the current thread. + * + * \note Not available in Python bindings + * \since QGIS 3.42 + */ +class CORE_EXPORT QgsScopedProjSilentLogger +{ + public: + + /** + * Constructor for QgsScopedProjSilentLogger. + * + * PROJ errors will be ignored. + */ + QgsScopedProjSilentLogger(); + + /** + * Returns the PROJ logger back to the default QGIS PROJ logger. + */ + ~QgsScopedProjSilentLogger(); + +}; + + /** * \ingroup core diff --git a/tests/src/core/testqgscoordinatetransform.cpp b/tests/src/core/testqgscoordinatetransform.cpp index 96aa62f3558f..76964a81881c 100644 --- a/tests/src/core/testqgscoordinatetransform.cpp +++ b/tests/src/core/testqgscoordinatetransform.cpp @@ -609,21 +609,11 @@ void TestQgsCoordinateTransform::transformBoundingBox() QgsCoordinateTransform tr( sourceSrs, destSrs, QgsProject::instance() ); const QgsRectangle crossingRect( 6374985, -3626584, 7021195, -3272435 ); QgsRectangle resultRect = tr.transformBoundingBox( crossingRect, Qgis::TransformDirection::Forward, true ); - QgsRectangle expectedRect; - expectedRect.setXMinimum( 175.771 ); - expectedRect.setYMinimum( -39.7222 ); - expectedRect.setXMaximum( -176.549 ); - expectedRect.setYMaximum( -36.3951 ); - - qDebug( "BBox transform x min: %.17f", resultRect.xMinimum() ); - qDebug( "BBox transform x max: %.17f", resultRect.xMaximum() ); - qDebug( "BBox transform y min: %.17f", resultRect.yMinimum() ); - qDebug( "BBox transform y max: %.17f", resultRect.yMaximum() ); - - QGSCOMPARENEAR( resultRect.xMinimum(), expectedRect.xMinimum(), 0.001 ); - QGSCOMPARENEAR( resultRect.yMinimum(), expectedRect.yMinimum(), 0.001 ); - QGSCOMPARENEAR( resultRect.xMaximum(), expectedRect.xMaximum(), 0.001 ); - QGSCOMPARENEAR( resultRect.yMaximum(), expectedRect.yMaximum(), 0.001 ); + + QGSCOMPARENEAR( resultRect.xMinimum(), 175.771, 0.001 ); + QGSCOMPARENEAR( resultRect.yMinimum(), -39.7222, 0.001 ); + QGSCOMPARENEAR( resultRect.xMaximum(), -176.549, 0.001 ); + QGSCOMPARENEAR( resultRect.yMaximum(), -36.3951, 0.001 ); // test transforming a bounding box, resulting in an invalid transform - exception must be thrown tr = QgsCoordinateTransform( QgsCoordinateReferenceSystem( QStringLiteral( "EPSG:4326" ) ), QgsCoordinateReferenceSystem( QStringLiteral( "EPSG:28356" ) ), QgsProject::instance() ); From 0b2e8e21825d0e7932c30d4c17365ad2b3376902 Mon Sep 17 00:00:00 2001 From: Nyall Dawson Date: Thu, 30 Jan 2025 08:57:03 +1000 Subject: [PATCH 02/15] Explain magic number --- src/core/proj/qgscoordinatetransform.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/core/proj/qgscoordinatetransform.cpp b/src/core/proj/qgscoordinatetransform.cpp index c24189236cb5..a4f06d5e2c89 100644 --- a/src/core/proj/qgscoordinatetransform.cpp +++ b/src/core/proj/qgscoordinatetransform.cpp @@ -643,9 +643,11 @@ QgsRectangle QgsCoordinateTransform::transformBoundingBox( const QgsRectangle &r double transYMax = 0; proj_errno_reset( projData ); + // proj documentation recommends 21 points for densification + constexpr int DENSIFY_POINTS = 21; const int projResult = proj_trans_bounds( projContext, projData, ( direction == Qgis::TransformDirection::Forward && !d->mIsReversed ) || ( direction == Qgis::TransformDirection::Reverse && d->mIsReversed ) ? PJ_FWD : PJ_INV, xMin, yMin, xMax, yMax, - &transXMin, &transYMin, &transXMax, &transYMax, 21 ); + &transXMin, &transYMin, &transXMax, &transYMax, DENSIFY_POINTS ); if ( projResult != 1 || !std::isfinite( transXMin ) || !std::isfinite( transXMax ) From 8421d7981674888436d8235a6aa97d6532c29b66 Mon Sep 17 00:00:00 2001 From: Nyall Dawson Date: Thu, 30 Jan 2025 08:58:49 +1000 Subject: [PATCH 03/15] Add render masks --- .../expected_render_shading_1_mask.png | Bin 0 -> 50484 bytes .../expected_render_shading_2_mask.png | Bin 0 -> 46807 bytes .../expected_render_shading_3_mask.png | Bin 0 -> 9364 bytes .../expected_render_shading_4_mask.png | Bin 0 -> 6566 bytes .../expected_render_shading_5_mask.png | Bin 0 -> 4042 bytes 5 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 tests/testdata/control_images/map_renderer/expected_render_shading_1/expected_render_shading_1_mask.png create mode 100644 tests/testdata/control_images/map_renderer/expected_render_shading_2/expected_render_shading_2_mask.png create mode 100644 tests/testdata/control_images/map_renderer/expected_render_shading_3/expected_render_shading_3_mask.png create mode 100644 tests/testdata/control_images/map_renderer/expected_render_shading_4/expected_render_shading_4_mask.png create mode 100644 tests/testdata/control_images/map_renderer/expected_render_shading_5/expected_render_shading_5_mask.png diff --git a/tests/testdata/control_images/map_renderer/expected_render_shading_1/expected_render_shading_1_mask.png b/tests/testdata/control_images/map_renderer/expected_render_shading_1/expected_render_shading_1_mask.png new file mode 100644 index 0000000000000000000000000000000000000000..74a1fac149c649acaae3c82f8519855be441df29 GIT binary patch literal 50484 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 literal 0 HcmV?d00001 diff --git a/tests/testdata/control_images/map_renderer/expected_render_shading_2/expected_render_shading_2_mask.png b/tests/testdata/control_images/map_renderer/expected_render_shading_2/expected_render_shading_2_mask.png new file mode 100644 index 0000000000000000000000000000000000000000..42637ab9599bf2e57cce7e18f076eeb5e16f0365 GIT binary patch literal 46807 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 SrU4W{C*6=oi@y)L^?v|dz%2&= literal 0 HcmV?d00001 diff --git a/tests/testdata/control_images/map_renderer/expected_render_shading_4/expected_render_shading_4_mask.png b/tests/testdata/control_images/map_renderer/expected_render_shading_4/expected_render_shading_4_mask.png new file mode 100644 index 0000000000000000000000000000000000000000..f61daaafa857f60b3b840773746bd9b1a6730914 GIT binary patch literal 6566 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 H{jdEWAu-1Z literal 0 HcmV?d00001 diff --git a/tests/testdata/control_images/map_renderer/expected_render_shading_5/expected_render_shading_5_mask.png b/tests/testdata/control_images/map_renderer/expected_render_shading_5/expected_render_shading_5_mask.png new file mode 100644 index 0000000000000000000000000000000000000000..77cc3762ea9ae47898fba600c0283be20b46fa8f GIT binary patch literal 4042 zcmeHJdpOkj8h_`KOA@hbLMR5R)$L9Wo&Z?%iv=YGG)Rs#PohCN%xPByfZEsc4|CP-rvvCGX1l{?uOsQA z_Af$p1^267SVrM6I)-PCEYaAzp#P**(A}8pLp9@iNB^iPyTm7d(!FtDls*)sxA905WBSGYxEW#BF9jH| z{N(q&2z+ILfVz;DO2@`1p6z7NNv&8FHqoACSX69`>GVEsBs$8&NttglqC5I#r!}h; zt{gCN0u3bqCBqNQ=vWp$X9e(tp3Ws@Wo6NM1EnLw)%s(x709Kur(=G=#N28XJ@miC zd@?nGl5YOm*3e3(RJ{BHJM;4o9yp4J$2u6HLqVHnB#%3~gv>FrI2>cHDP+wuMa$c| zzKDSaYQU1t`*CWDl|AR&H}%=dUO&3h(e=*ud*^I^Yr^IiGb1J-hqXFqBTH5`Hm=W_e#F=fbtlf55EG+?OzzmYS>^P)aVz`i z{q61Tqk05@ZS+Y=-!A<CMi4ZIkS<+)NdWD(0CWv%c9oZ{x#^Kk3vF2gVeGY zV$=ijc;G3{Sa4y*1g(w?(3F}jkPVEM9$bI1Am-)0QE9Shbbc&M7-Gd>KtA^LV_kHVGGjMEk8bZz*Ku*4Ea_ ztQTHirvq7Q5YDOG4*CtLx{?6^%5{Np!ghd9w}Sb%ibaZiNh!zo&Ci7^XAcq+jodSn zdmAqaH^?M?k3F6Hm{+m{fsvs(tcgnQhQWAeO8|$U;d-{IsVP0FGDdi;LUSgbU`D^+ zDV5%})84vtHJBS?fx;IEyhY2+k2cqr%A@T`ATMMSwQBBtEt5@&pWA2MM$cd<`L6(M zj$8D-0@-Y4|JoL7VayJO(wM~LxpB_)R0lBcXjxlZmzxcRgoLy$F!!fs7S;nS>p8Br zX_bEL_={J;6q=E|X%XMBL~0SGNH0^?Lnq9s{E97Vuqt^6XDNzvU9lTkU z?{l)jo|<{74kQ7?uf*p~fT{tuq>az+YOe&>pt^{o@cPBR4f$HfRkCtdH`rs@j!Qxz zZprVgMT}gJ#a`I!*0>qVK3CtT_K!|47bZs&ytvIQQ_9lBw4C(ETlUSDwqO?y%xy8m zNR!M$-({NoR6H2z4xFD#wSrcrf21 zA8|mbz=NR3raeRzZXM3-MmMCuyLVCp#c2ev*)ZoN!XR8t?%I29_Q?2n3?8EwwY&^w zgG;Z7jWIZr;%E8jB^juvuRXY=O6fzbE}=v$^D){jUNCo~qs2uC)1H5J{L9<&_!F}V z+|K5$)&s zC{ijYIPW=cE<^Qpa`mgk%9M&yPiH~9aw#Y1&~d!1m0oUou|7Ag8q*o}2T7s>yKw3O zMWpkhC|`y)czH1u_%$p#HNPX80Q?wlH8A?u{lakuDgXNH1cY7gPk~gk6bhrTeadiMH-bPM(168V&(@s@j>hB)BFPc)B`Bp6 zCgSeAY6UsqA>09SGgmxbf{=UiQg88oYj#N=lFRD9Q=_%vXb8 zqbXNP{F*9K*4`Bc2G1;_71JljnMo^Q|K7Tf$E0FK;(tmf$*oHp!NmyZg~in~XG@GR z6grmOk0!?IB4RwZ%_Kwk8G;fZH4~Ix zjVQn$hUqACHbLRl$+U*i07&)w3zU)W@UjI`TS`ZUGOQ*4_Z?*_6khuiJuIYq|Me!r zKV{E{dPabw%;^O9rO$bF10U3LCl`UdT<4>;q?B{R_CzjXsLMGgk2fH{7>EUtInC7H1 zGHZ%mrgILNGCynKe!a-8Ns0mXis1DZ1BFvh9obf>nl9J(oxLY7;z!bUg(GiFzO8P6 z=JYvFbR+cHT7)T8)Wggvc~g`5=x~*5cnf=}Tu@jY-;6r4Q({IxS4kb#l<;`E(@zT+ z3m26i(kBJj9Nvvq6B20K?v>R0{|HUR5tWS2_st^g#|ZaPo(dw%PYWG~e2hZk0Ykwg zmJ3;@ma;j?zja6*fWIpZ-ADWb{tv79Lp=W8A@7RsCGFo4`%@$Of6t&<+}eod9+l*X REr{}9yQ7-}XA9-nzX9?uF5v(G literal 0 HcmV?d00001 From 512c65b5414d8369963a1dd48414147b44e594cc Mon Sep 17 00:00:00 2001 From: Nyall Dawson Date: Thu, 30 Jan 2025 09:01:18 +1000 Subject: [PATCH 04/15] Add render mask --- .../expected_painterclip_region_mask.png | Bin 1181 -> 1239 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/tests/testdata/control_images/rasterlayerrenderer/expected_painterclip_region/expected_painterclip_region_mask.png b/tests/testdata/control_images/rasterlayerrenderer/expected_painterclip_region/expected_painterclip_region_mask.png index a69f45eda8b9bc01d54390cc45e57c1f46835757..089902b96a51a834b7d8511f7e3a393fc7646331 100644 GIT binary patch delta 196 zcmV;#06YJk3D*gbIX8((L_t(|obA`ajpHyB1;I~;=MWr?GjnFHa0N&q$ zLW^r=_5i?PkJAGHU<3((3bRoIDgh%d@O(Z`Pk`H7GqX>RfV=yCzw>zbzk}cK1;GW@ zTBj$#?Fo}H0oEwQkGx*5*?T+x&&(X(aMgLg->0t^f7F_peR>4k-QIiFTBm2gt$87l y!OsvE_>F##t57Vr-=<8OsDahcTs00004k-a3FR5 zZEl7GJqnBhijyBQKbZW0`Qc;(CQtE?r=qgYSw3S=e_#81&yV2qXXf1YW@zA_tjJh7 f*?}<%4a Date: Thu, 30 Jan 2025 09:08:27 +1000 Subject: [PATCH 05/15] Add some tolerance to test --- tests/src/python/test_provider_wfs.py | 27 +++++++++++---------------- 1 file changed, 11 insertions(+), 16 deletions(-) diff --git a/tests/src/python/test_provider_wfs.py b/tests/src/python/test_provider_wfs.py index 2bec071435cf..b99d116c2765 100644 --- a/tests/src/python/test_provider_wfs.py +++ b/tests/src/python/test_provider_wfs.py @@ -4038,18 +4038,11 @@ def testGeomedia(self): self.assertEqual(vl.wkbType(), QgsWkbTypes.Type.MultiPolygon) # Extent before downloading features - reference = QgsGeometry.fromRect( - QgsRectangle( - 243900.3520259926444851, - 4427769.1559739429503679, - 1525592.3040170343592763, - 5607994.6020106188952923, - ) - ) - vl_extent = QgsGeometry.fromRect(vl.extent()) - assert QgsGeometry.compare( - vl_extent.asPolygon()[0], reference.asPolygon()[0], 0.05 - ), f"Expected {reference.asWkt()}, got {vl_extent.asWkt()}" + vl_extent = vl.extent() + self.assertAlmostEqual(vl_extent.xMinimum(), 243900, 0) + self.assertAlmostEqual(vl_extent.yMinimum(), 4427769, -2) + self.assertAlmostEqual(vl_extent.xMaximum(), 1525592, 0) + self.assertAlmostEqual(vl_extent.yMaximum(), 5607995, 0) # Download all features features = [f for f in vl.getFeatures()] @@ -4059,10 +4052,12 @@ def testGeomedia(self): # Let signals to be notified to QgsVectorLayer loop = QEventLoop() loop.processEvents() - vl_extent = QgsGeometry.fromRect(vl.extent()) - assert QgsGeometry.compare( - vl_extent.asPolygon()[0], reference.asPolygon()[0], 0.00001 - ), f"Expected {reference.asWkt()}, got {vl_extent.asWkt()}" + vl_extent = vl.extent() + self.assertAlmostEqual(vl_extent.xMinimum(), 500000, 3) + self.assertAlmostEqual(vl_extent.yMinimum(), 4500000, 3) + self.assertAlmostEqual(vl_extent.xMaximum(), 510000, 3) + self.assertAlmostEqual(vl_extent.yMaximum(), 4510000, 3) + self.assertEqual(features[0]["intfield"], 1) self.assertEqual(features[1]["intfield"], 2) From d1cde9569786bfa689bec24cc5dfb7b8669ce7d3 Mon Sep 17 00:00:00 2001 From: Nyall Dawson Date: Thu, 30 Jan 2025 09:26:36 +1000 Subject: [PATCH 06/15] Update server reference files to proj >= 8.2 versions --- .../qgis_server/wmts_getcapabilities.txt | 116 +++++++++--------- .../wmts_getcapabilities_config.txt | 116 +++++++++--------- .../results/getcapabilities_wms_dimension.txt | 6 +- 3 files changed, 119 insertions(+), 119 deletions(-) diff --git a/tests/testdata/qgis_server/wmts_getcapabilities.txt b/tests/testdata/qgis_server/wmts_getcapabilities.txt index 55264ba022f8..70a136d99daa 100644 --- a/tests/testdata/qgis_server/wmts_getcapabilities.txt +++ b/tests/testdata/qgis_server/wmts_getcapabilities.txt @@ -63,12 +63,12 @@ Content-Type: text/xml; charset=utf-8 QGIS Server Hello World QGIS Server Hello World - -174.766573 -69.957839 - 177.930819 84.307877 + -180 -69.957839 + 180 84.307877 - -19454925.899 -11055006.823 - 19807168.137 19143772.794 + -20037508.343 -11055006.823 + 20037508.343 19143772.794