mirror of
https://github.com/qgis/QGIS.git
synced 2025-10-03 00:04:47 -04:00
Also fix pretty-breaks when single class
This commit is contained in:
parent
25444cca9f
commit
2c7980b97d
@ -45,6 +45,13 @@ QList<double> QgsClassificationPrettyBreaks::calculateBreaks( double &minimum, d
|
||||
if ( symmetricModeEnabled() )
|
||||
makeBreaksSymmetric( breaks, symmetryPoint(), symmetryAstride() );
|
||||
|
||||
// Special case for single class
|
||||
if ( minimum == maximum && breaks.isEmpty() )
|
||||
{
|
||||
// 1 is totally arbitrary but we need something
|
||||
breaks << maximum + 1.0;
|
||||
}
|
||||
|
||||
return breaks;
|
||||
}
|
||||
|
||||
|
@ -26,6 +26,8 @@ from qgis.core import (
|
||||
QgsRendererRangeLabelFormat,
|
||||
QgsVectorLayer,
|
||||
QgsFillSymbol,
|
||||
QgsClassificationFixedInterval,
|
||||
QgsClassificationPrettyBreaks,
|
||||
)
|
||||
import unittest
|
||||
from qgis.testing import start_app, QgisTestCase
|
||||
@ -799,6 +801,35 @@ class TestQgsGraduatedSymbolRenderer(QgisTestCase):
|
||||
"Equal interval classification not correct",
|
||||
)
|
||||
|
||||
def testPrettyBreakSingleClass(self):
|
||||
"""Test single class with pretty break, issue GH #63277"""
|
||||
|
||||
# Create a renderer
|
||||
renderer = QgsGraduatedSymbolRenderer()
|
||||
renderer.setClassificationMethod(QgsClassificationPrettyBreaks())
|
||||
symbol = createMarkerSymbol()
|
||||
renderer.setSourceSymbol(symbol.clone())
|
||||
|
||||
# Test retrieving data values from a layer
|
||||
ml = createMemoryLayer((0, 0))
|
||||
|
||||
renderer.setClassAttribute("value")
|
||||
# Equal interval calculations
|
||||
renderer.updateClasses(ml, 5)
|
||||
self.assertEqual(
|
||||
dumpRangeBreaks(renderer.ranges()),
|
||||
"(0.0000-1.0000,)",
|
||||
"Equal interval classification not correct",
|
||||
)
|
||||
|
||||
ml = createMemoryLayer((1, 1))
|
||||
renderer.updateClasses(ml, 5)
|
||||
self.assertEqual(
|
||||
dumpRangeBreaks(renderer.ranges()),
|
||||
"(1.0000-2.0000,)",
|
||||
"Equal interval classification not correct",
|
||||
)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
unittest.main()
|
||||
|
Loading…
x
Reference in New Issue
Block a user