[general]
name=Zornade Particelle Catastali
qgisMinimumVersion=3.28
qgisMaximumVersion=4.99
description=Download enriched Italian cadastral parcels with 110+ attribute fields including terrain, population, buildings, economics, demographics, land cover, land use, OMI valuation and valuation history, coastal erosion, cultural heritage, POI, solar PV potential and nightlights data via the free Zornade API v2.4.
version=3.1.0
author=Zornade
email=e.pascatti@gmail.com

about=Professional QGIS plugin to download enriched Italian cadastral parcels via the free Zornade API v2.4 (100%% free, 1,000 req/hour). Search by GPS coordinates, map canvas bounding box (adaptive quadtree subdivision), or cadastral reference (fuzzy municipality name, sheet, parcel, section). Each parcel includes 110+ attribute fields across 20 data sections: accurate geometry (Polygon/MultiPolygon), CORINE land cover classification, Urban Atlas land use, seismic zone (1–4), PGA, flood and landslide risk, subsidence analysis (velocity, acceleration, risk class, direction, trend), terrain (elevation, slope, aspect, ruggedness), population estimates (WorldPop/dasymetric), building footprints, economics (average income, Gini index, affordability PIR, income brackets), demographics (census 2021: age, education, employment, foreigners, households, dwellings), OMI real estate valuation (purchase and rental ranges with previous semester), OMI valuation history (semestral series 2015–2025 with gross yield), coastal erosion, cultural heritage (MiBACT), Foursquare POI, solar photovoltaic potential (JRC PVGIS-SARAH3: kWp, annual yield, payback, NPV, LCOE, viability class), and nightlights (NASA VIIRS Black Marble VNP46A4 luminosity class and radiance). Sketching: categorized renderer for CORINE land cover (5 Level-1 classes), seismic zone (4 classes), and subsidence risk (5 classes). Scale-dependent labeling. Default search by map canvas bbox. The map view is no longer moved after download by default (opt-in checkbox). Native Qt6 interface with geocoding, map picking, async download via QgsTask with retry logic. Free API tokens at app.zornade.com.

tracker=https://github.com/menimenocchio/zornade-parcel-downloader/issues
repository=https://github.com/menimenocchio/zornade-parcel-downloader
homepage=https://zornade.com

hasProcessingProvider=no
changelog=3.1.0 - 3 new data sections, map view no longer moves on download
    - FIX: the map canvas is no longer recentered/zoomed after a download; a new opt-in checkbox "Sposta la vista sulle particelle scaricate" (off by default, persisted) restores the old behavior on demand
    - NEW: solar section (JRC PVGIS-SARAH3 photovoltaic potential): availability, building count, max kWp, modern/pessimistic annual yield, simple payback, 20y NPV, CAPEX, LCOE, viability class
    - NEW: nightlights section (NASA VIIRS Black Marble VNP46A4): luminosity class, parcel radiance, density, share, municipal mean, year
    - NEW: valuation_history section (OMI semestral series 2015–2025): historical zone, semester count, first/last semester, first/last mid purchase €/m², last mid rental €/m², last gross yield, and computed purchase change %%
    - 113 attribute fields mapped from API v2.4 response (was 90+), now covering all 20 data sections
    - DOCS: bundled API reference updated with solar, nightlights and valuation_history sections
    - CLEANUP: removed the embedded Supabase anon JWT and the Authorization Bearer header; only the x-api-key header is required
    3.0.0 - Complete API v2.4 alignment: 90+ attribute fields, all 17 data sections
    - CRITICAL FIX: added mandatory Authorization Bearer header for Supabase Edge Functions
    - CRITICAL FIX: search endpoint now uses correct API v2.4 params (comune, foglio, label, sezione)
    - CRITICAL FIX: parcel detail now sends include=all to receive all data sections
    - NEW: terrain section (elevation min/max/mean/std, slope, ruggedness, TRI, aspect)
    - NEW: population section (estimated, method, confidence, municipality total)
    - NEW: buildings section (count, footprint, residential count/footprint)
    - NEW: economics section (avg income, taxpayers, total income, net tax, Gini, PIR affordability, avg price/m²)
    - NEW: demographics section (census pop, male/female, employed, foreigners, dwellings, vacant, households)
    - NEW: land use section (Urban Atlas: code, class, level1, level2)
    - NEW: coastal erosion section (dynamic, avg change m/year, distance)
    - NEW: cultural heritage section (count, name, type from MiBACT)
    - NEW: POI section (count, first name, categories from Foursquare)
    - NEW: addresses section (count, first formatted address)
    - IMPROVED: subsidence now includes all 7 fields (velocity, acceleration, risk_class, risk_label, risk_index, direction, trend)
    - IMPROVED: valuation now includes fascia, condition, and entry count
    - IMPROVED: cadastral search tab uses fuzzy municipality name (not Belfiore code) + sezione field
    - IMPROVED: results table now shows Foglio column
    - CHANGED: default search tab is now Vista Mappa (bbox) instead of Coordinate
    - 90+ attribute fields mapped from API v2.4 response (was 35)
    - User-Agent updated to ZornadeQGISPlugin/3.0
    2.2.1 - Fix: attribute type coercion for reliable feature insertion
    - Explicit type casting (int/float/str) before setAttribute to prevent type mismatch rejections
    - Per-feature fallback with error logging when batch addFeatures fails
    2.2.0 - Fix: empty layer after download (reserved field name conflict)
    - Renamed field "fid" to "parcel_id" to avoid conflict with QGIS memory provider internal field
    - Fixed critical bug: addFeatures silently failed for all or some features
    - Restored batch addFeatures (removed temporary per-feature diagnostics)
    - Updated sketching label expression with new field name
    2.1.0 - Complete data model rewrite, CORINE sketching, subsidence & valuation
    - 35 attribute fields mapped from API v2 response (was 15, mostly null)
    - CORINE Land Cover Level 1 categorized renderer (5 Italian classes)
    - Seismic zone renderer (zones 1–4, graduated color scale)
    - Subsidence risk renderer (classes 1–5, graduated color scale)
    - OMI real estate valuation: purchase and rental price ranges (€/m²)
    - Subsidence analysis: velocity (mm/year), risk class, direction
    - Cadastral fields: foglio, sezione urbana, CAP, indirizzo
    - Adaptive quadtree bbox search (subdivides tiles at API cap, no 200-parcel limit)
    - Robust GeoJSON parsing via OGR (handles all geometry types)
    - Download retry logic (3 attempts with exponential backoff on 5xx errors)
    - Clean error messages for server errors (no raw HTML dumps)
    - Default max results raised to 500
    - Scale-dependent labels: "label — F.foglio" format
    - Removed all deprecated v1 field references
    - Full import cleanup and code audit
    2.0.1 - Multi-point bbox search, QgsTask, English metadata
    - Map canvas bbox search (3x3 grid, deduplicated results)
    - Background download via QgsTask (QGIS best practice)
    - QgsMessageLog for all plugin logging
    - English description and about
    2.0.0 - Complete rewrite for API v2
    - Native Qt6 interface
    - Free API v2 (no RapidAPI required)
    - Search by coordinates, map canvas bbox, cadastral reference
    - Map picking: select point directly from the map
    - Categorized sketching with Zornade classification and risk colors
    - Async download with progress bar via QgsTask
    - Secure token management with in-app verification
    - Scale-dependent labeling with expressions
    - Polygon and MultiPolygon GeoJSON support
    1.0.0 - Initial release (deprecated)

tags=italy,cadastral,parcel,particella,catasto,api,zornade,data,download,geometry,real estate,land use,risk,rischio,gis,geocoding,free

category=Web
icon=icon.png
experimental=False
deprecated=False

server=False
license=GPL-2.0-or-later
plugin_type=professional
