Skip to content
4 changes: 4 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,10 @@ RELEASING:
14. Create new release in GitHub with tag version and release title of `vX.X.X`
-->

## Unreleased
### Fixed
- Log the correct ApiError message in the isochrone processing algorithm with > 10 ranges ([#264](https://github.com/GIScience/orstools-qgis-plugin/issues/264))

## [1.8.4] - 2024-07-29

### Fixed
Expand Down
61 changes: 15 additions & 46 deletions ORStools/common/isochrones_core.py
Original file line number Diff line number Diff line change
Expand Up @@ -29,21 +29,19 @@

from typing import Any, Generator

from qgis._core import QgsMapLayer
from qgis.core import (
QgsPointXY,
QgsFeature,
QgsField,
QgsFields,
QgsGeometry,
QgsSymbol,
QgsSimpleFillSymbolLayer,
QgsRendererCategory,
QgsCategorizedSymbolRenderer,
QgsGraduatedSymbolRenderer,
QgsMapLayer,
QgsStyle,
QgsClassificationEqualInterval,
)

from qgis.PyQt.QtCore import QVariant
from qgis.PyQt.QtGui import QColor


# import processing
Expand Down Expand Up @@ -176,49 +174,20 @@ def stylePoly(self, layer: QgsMapLayer) -> None:
:type layer: QgsMapLayer
"""

if self.dimension == "time":
legend_suffix = " min"
else:
legend_suffix = " m"

field = layer.fields().indexOf(self.field_dimension_name)
unique_values = sorted(layer.uniqueValues(field))

colors = {
0: QColor("#2b83ba"),
1: QColor("#64abb0"),
2: QColor("#9dd3a7"),
3: QColor("#c7e9ad"),
4: QColor("#edf8b9"),
5: QColor("#ffedaa"),
6: QColor("#fec980"),
7: QColor("#f99e59"),
8: QColor("#e85b3a"),
9: QColor("#d7191c"),
}

categories = []

for cid, unique_value in enumerate(unique_values):
# initialize the default symbol for this geometry type
symbol = QgsSymbol.defaultSymbol(layer.geometryType())

# configure a symbol layer
symbol_layer = QgsSimpleFillSymbolLayer(
color=colors[cid], strokeColor=QColor("#000000")
)

# replace default symbol layer with the configured one
if symbol_layer is not None:
symbol.changeSymbolLayer(0, symbol_layer)

# create renderer object
category = QgsRendererCategory(unique_value, symbol, str(unique_value) + legend_suffix)
# entry for the list of category items
categories.append(category)

# create renderer object
renderer = QgsCategorizedSymbolRenderer(self.field_dimension_name, categories)
classification_method = QgsClassificationEqualInterval()
ramp_name = "Spectral"
default_style = QgsStyle().defaultStyle()
color_ramp = default_style.colorRamp(ramp_name)
color_ramp.invert()
num_classes = len(unique_values)

renderer = QgsGraduatedSymbolRenderer(self.field_dimension_name)
renderer.setSourceColorRamp(color_ramp)
renderer.setClassificationMethod(classification_method)
renderer.updateClasses(layer, num_classes)

# assign the created renderer to the layer
if renderer is not None:
Expand Down
Loading