diff --git a/src/core/qgsmaptopixelgeometrysimplifier.cpp b/src/core/qgsmaptopixelgeometrysimplifier.cpp index 0d85b380238..86cef906c5f 100644 --- a/src/core/qgsmaptopixelgeometrysimplifier.cpp +++ b/src/core/qgsmaptopixelgeometrysimplifier.cpp @@ -547,9 +547,15 @@ bool QgsMapToPixelSimplifier::simplifyPoints( QgsWkbTypes::Type wkbType, QgsCons if ( numPoints <= ( isaLinearRing ? 6 : 3 ) ) return false; - QgsRectangle envelope = calculateBoundingBox( singleType, QgsConstWkbPtr( sourceWkbPtr ), numPoints ); - sourceWkbPtr -= sizeof( int ); + const QgsRectangle envelope = calculateBoundingBox( singleType, QgsConstWkbPtr( sourceWkbPtr ), numPoints ); + if ( qMax( envelope.width(), envelope.height() ) / numPoints > tolerance * 2.0 ) + { + //points are in average too far appart to lead to any significant simplification + return false; + } + + sourceWkbPtr -= sizeof( int ); int targetWkbSize = 5 + sizeof( int ) + numPoints * ( 2 * sizeof( double ) ); unsigned char* targetWkb = new unsigned char[ targetWkbSize ]; diff --git a/tests/testdata/control_images/expected_arrowsymbollayer_1/expected_arrowsymbollayer_1.png b/tests/testdata/control_images/expected_arrowsymbollayer_1/expected_arrowsymbollayer_1.png index d2c5735a5e3..e467303f6a5 100644 Binary files a/tests/testdata/control_images/expected_arrowsymbollayer_1/expected_arrowsymbollayer_1.png and b/tests/testdata/control_images/expected_arrowsymbollayer_1/expected_arrowsymbollayer_1.png differ diff --git a/tests/testdata/control_images/expected_arrowsymbollayer_1/expected_arrowsymbollayer_1_mask.png b/tests/testdata/control_images/expected_arrowsymbollayer_1/expected_arrowsymbollayer_1_mask.png index 65c5e14cb9c..c5f75e25529 100644 Binary files a/tests/testdata/control_images/expected_arrowsymbollayer_1/expected_arrowsymbollayer_1_mask.png and b/tests/testdata/control_images/expected_arrowsymbollayer_1/expected_arrowsymbollayer_1_mask.png differ diff --git a/tests/testdata/control_images/expected_arrowsymbollayer_2/expected_arrowsymbollayer_2.png b/tests/testdata/control_images/expected_arrowsymbollayer_2/expected_arrowsymbollayer_2.png index 65e9a773cc7..0c88f92059b 100644 Binary files a/tests/testdata/control_images/expected_arrowsymbollayer_2/expected_arrowsymbollayer_2.png and b/tests/testdata/control_images/expected_arrowsymbollayer_2/expected_arrowsymbollayer_2.png differ diff --git a/tests/testdata/control_images/expected_arrowsymbollayer_2/expected_arrowsymbollayer_2_mask.png b/tests/testdata/control_images/expected_arrowsymbollayer_2/expected_arrowsymbollayer_2_mask.png index 7123107039b..c6b77b8d5dd 100644 Binary files a/tests/testdata/control_images/expected_arrowsymbollayer_2/expected_arrowsymbollayer_2_mask.png and b/tests/testdata/control_images/expected_arrowsymbollayer_2/expected_arrowsymbollayer_2_mask.png differ diff --git a/tests/testdata/control_images/expected_arrowsymbollayer_4/expected_arrowsymbollayer_4.png b/tests/testdata/control_images/expected_arrowsymbollayer_4/expected_arrowsymbollayer_4.png index ab29f2bb60a..4ead0fcacc3 100644 Binary files a/tests/testdata/control_images/expected_arrowsymbollayer_4/expected_arrowsymbollayer_4.png and b/tests/testdata/control_images/expected_arrowsymbollayer_4/expected_arrowsymbollayer_4.png differ diff --git a/tests/testdata/control_images/expected_arrowsymbollayer_4/expected_arrowsymbollayer_4_mask.png b/tests/testdata/control_images/expected_arrowsymbollayer_4/expected_arrowsymbollayer_4_mask.png index 18fbf3e056d..97a206dfcc5 100644 Binary files a/tests/testdata/control_images/expected_arrowsymbollayer_4/expected_arrowsymbollayer_4_mask.png and b/tests/testdata/control_images/expected_arrowsymbollayer_4/expected_arrowsymbollayer_4_mask.png differ diff --git a/tests/testdata/control_images/expected_geometrygenerator_buffer_lines/expected_geometrygenerator_buffer_lines.png b/tests/testdata/control_images/expected_geometrygenerator_buffer_lines/expected_geometrygenerator_buffer_lines.png index 4108cd8980f..ff11bd94b03 100644 Binary files a/tests/testdata/control_images/expected_geometrygenerator_buffer_lines/expected_geometrygenerator_buffer_lines.png and b/tests/testdata/control_images/expected_geometrygenerator_buffer_lines/expected_geometrygenerator_buffer_lines.png differ diff --git a/tests/testdata/control_images/expected_geometrygenerator_buffer_lines/expected_geometrygenerator_buffer_lines_mask.png b/tests/testdata/control_images/expected_geometrygenerator_buffer_lines/expected_geometrygenerator_buffer_lines_mask.png index 90b55f85a79..ee90aa92563 100644 Binary files a/tests/testdata/control_images/expected_geometrygenerator_buffer_lines/expected_geometrygenerator_buffer_lines_mask.png and b/tests/testdata/control_images/expected_geometrygenerator_buffer_lines/expected_geometrygenerator_buffer_lines_mask.png differ diff --git a/tests/testdata/control_images/qgis_server_accesscontrol/WMS_GetMap/WMS_GetMap.png b/tests/testdata/control_images/qgis_server_accesscontrol/WMS_GetMap/WMS_GetMap.png index 304e5e84625..0eb2d958895 100644 Binary files a/tests/testdata/control_images/qgis_server_accesscontrol/WMS_GetMap/WMS_GetMap.png and b/tests/testdata/control_images/qgis_server_accesscontrol/WMS_GetMap/WMS_GetMap.png differ