Skip to content

Commit bdd5e4b

Browse files
pigrecoclaude
andcommitted
Aggiorna versione a 1.4.4: stile rule-based particelle, conteggio in legenda
Closes #4 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
1 parent b12933e commit bdd5e4b

3 files changed

Lines changed: 74 additions & 1 deletion

File tree

README.md

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,11 +57,24 @@ Nella sezione **Opzioni** è disponibile il checkbox **"Carica WMS Cartografia C
5757

5858
Il layer WMS viene caricato una sola volta per progetto (se già presente viene saltato).
5959

60+
### Stile automatico particelle (v1.4.4)
61+
62+
Il layer delle particelle viene caricato con uno **stile rule-based** automatico basato sul campo `LABEL`:
63+
64+
| Tipo | Colore | Regola |
65+
|------|--------|--------|
66+
| Particella (numero) | Arancione | Tutti i valori numerici (ELSE) |
67+
| Strada | Grigio | `LABEL` contiene "STRADA" |
68+
| Acqua | Blu | `LABEL` contiene "ACQUA" |
69+
70+
Il conteggio feature per categoria è visibile in legenda.
71+
6072
### Caratteristiche tecniche
6173

6274
- Download multi-tile con progress bar per aree estese
6375
- Deduplicazione automatica delle feature
6476
- Filtro spaziale per tutte le modalità
77+
- Stile automatico rule-based (particelle/strade/acque) con conteggio in legenda
6578
- Espansione opzionale del riferimento catastale nazionale
6679
- Caricamento opzionale WMS Cartografia Catastale AdE
6780
- GUI con illustrazioni SVG e griglia 2x2
@@ -103,6 +116,7 @@ L'autore declina ogni responsabilità per eventuali usi impropri del plugin o pe
103116

104117
## Changelog
105118

119+
- **1.4.4** - Stile automatico rule-based per particelle (arancione), strade (grigio), acque (blu) con conteggio feature in legenda
106120
- **1.4.3** - WMS Cartografia Catastale AdE (7 sublayer), connessione WMS auto nel profilo, posizionamento sopra basemap XYZ, versione plugin nel titolo GUI
107121
- **1.4.2** - Funzione `get_particella_info($geometry)` per il calcolatore di campi
108122
- **1.4.1** - Disegno polilinea nella modalità Linea, licenza CC-BY 4.0 cliccabile, link cliccabili nell'avviso, fix GUI in primo piano

metadata.txt

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
name=WFS Catasto Download Particelle BBox
77
qgisMinimumVersion=3.0
88
description=Download particelle catastali dal WFS dell'Agenzia delle Entrate tramite BBox, selezione poligono, linea con buffer o layer di punti.
9-
version=1.4.3
9+
version=1.4.4
1010
author=Salvatore Fiandaca
1111
email=pigrecoinfinito@gmail.com
1212

@@ -30,6 +30,9 @@ repository=https://github.com/pigreco/wfs_catasto_download_particelle_bbox
3030

3131
hasProcessingProvider=no
3232
changelog=
33+
1.4.4 - Stile automatico rule-based per il layer particelle: arancione per particelle
34+
numeriche, grigio per strade (STRADA), blu per acque (ACQUA).
35+
Conteggio feature per categoria visibile in legenda.
3336
1.4.3 - Opzione per caricare il WMS Cartografia Catastale dell'Agenzia delle Entrate
3437
(province, mappe, acque, strade, vestizioni, fabbricati, particelle).
3538
Connessione WMS aggiunta automaticamente al profilo QGIS se non presente.

wfs_catasto_download_particelle_bbox_p.py

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,8 @@
3232
QgsFeature,
3333
QgsField,
3434
QgsExpression,
35+
QgsRuleBasedRenderer,
36+
QgsFillSymbol,
3537
)
3638
from qgis.gui import QgsMapTool, QgsRubberBand
3739
from qgis.PyQt.QtCore import Qt, QVariant, QTimer, QSettings
@@ -104,6 +106,53 @@ def _is_point_layer(layer):
104106
return layer.geometryType() == 0
105107

106108

109+
def _applica_stile_particelle(layer):
110+
"""Applica stile rule-based al layer particelle in base al campo LABEL.
111+
112+
- Particelle numeriche → arancione
113+
- STRADA → grigio
114+
- ACQUA → blu
115+
"""
116+
# Simbolo base (serve come root per il renderer)
117+
root_rule = QgsRuleBasedRenderer.Rule(None)
118+
119+
# Regola STRADA → grigio
120+
sym_strada = QgsFillSymbol.createSimple({
121+
"color": "153,153,153,255",
122+
"outline_color": "102,102,102,255",
123+
"outline_width": "0.3",
124+
})
125+
rule_strada = QgsRuleBasedRenderer.Rule(sym_strada)
126+
rule_strada.setLabel("Strada")
127+
rule_strada.setFilterExpression('"LABEL" LIKE \'%STRADA%\'')
128+
root_rule.appendChild(rule_strada)
129+
130+
# Regola ACQUA → blu
131+
sym_acqua = QgsFillSymbol.createSimple({
132+
"color": "74,144,217,255",
133+
"outline_color": "44,95,138,255",
134+
"outline_width": "0.3",
135+
})
136+
rule_acqua = QgsRuleBasedRenderer.Rule(sym_acqua)
137+
rule_acqua.setLabel("Acqua")
138+
rule_acqua.setFilterExpression('"LABEL" LIKE \'%ACQUA%\'')
139+
root_rule.appendChild(rule_acqua)
140+
141+
# Regola ELSE (particelle numeriche) → arancione
142+
sym_particella = QgsFillSymbol.createSimple({
143+
"color": "255,140,0,255",
144+
"outline_color": "204,112,0,255",
145+
"outline_width": "0.3",
146+
})
147+
rule_particella = QgsRuleBasedRenderer.Rule(sym_particella)
148+
rule_particella.setLabel("Particella")
149+
rule_particella.setIsElse(True)
150+
root_rule.appendChild(rule_particella)
151+
152+
renderer = QgsRuleBasedRenderer(root_rule)
153+
layer.setRenderer(renderer)
154+
155+
107156
# Qt enum scoped (Qt6) vs flat (Qt5)
108157
try:
109158
_WindowModal = Qt.WindowModality.WindowModal
@@ -794,8 +843,15 @@ def esegui_download_e_caricamento(min_lat, min_lon, max_lat, max_lon, filter_geo
794843
mem_provider.addFeatures(new_features)
795844
mem_layer.updateExtents()
796845

846+
# Applica stile rule-based (arancione/grigio/blu)
847+
_applica_stile_particelle(mem_layer)
848+
797849
# Aggiungi al progetto
798850
QgsProject.instance().addMapLayer(mem_layer)
851+
# Mostra conteggio feature per categoria in legenda
852+
tree_layer = QgsProject.instance().layerTreeRoot().findLayer(mem_layer.id())
853+
if tree_layer:
854+
tree_layer.setCustomProperty("showFeatureCount", True)
799855
feat_count = mem_layer.featureCount()
800856

801857
print(f"[OK] Layer temporaneo caricato con {feat_count} feature(s)")

0 commit comments

Comments
 (0)