201 lines
15 KiB
Markdown
201 lines
15 KiB
Markdown
# LME Mappe Catastali
|
|
|
|
App .NET MAUI Blazor Hybrid per Android, iOS, Mac Catalyst e Windows, pensata per consultare mappe catastali e lavorare sul campo con GPS.
|
|
|
|
## Versione Pro 1.0.1 test
|
|
|
|
- Il controllo aggiornamenti Pro ignora le release e gli APK della versione Base e segue esclusivamente il canale Pro.
|
|
- KML e KMZ generici conservano punti, linee e poligoni; il filtro particelle viene applicato soltanto ai file riconosciuti come catastali.
|
|
- Android propone LME tra le app disponibili per aprire KML, KMZ, GeoJSON, progetti JSON e backup ZIP.
|
|
- I selettori file Android mostrano correttamente progetti condivisi e backup con estensione composta.
|
|
- Il gestore licenze mantiene una chiave locale incompatibile come backup e consente il ripristino della chiave corretta senza arrestarsi.
|
|
- I comandi di backup e ripristino chiave restano visibili anche su finestre strette.
|
|
|
|
## Versione 0.4.7
|
|
|
|
## Preparazione versione Pro Play Store
|
|
|
|
- La copia Pro usa l'identificativo Android `it.liviomerola.lmemappecatastali.pro`, titolo `LME Mappe Catastali Pro`, versione iniziale `1.0.0` e Android App Bundle in Release.
|
|
- La separazione Base/Pro e centralizzata in `Services/EntitlementService.cs`; le funzioni Pro principali sono archivio progetti, export, sync WebDAV, offline, strumenti avanzati e traccia GPS.
|
|
- L'accesso Pro puo derivare da Google Play oppure da un codice manuale cifrato e firmato, con ritorno automatico a Base alla scadenza. Il gestore e le istruzioni sono in `tools/LmeLicenseManager` e `MANUAL_LICENSES.md`.
|
|
- Lingua e sistema di misura sono centralizzati in `Services/AppLocalizationService.cs` e propagati alla mappa JavaScript, incluse distanze, superfici e Leaflet Draw.
|
|
- La checklist Play Store, Billing, firma e privacy e in `PLAY_STORE_PRO_CHECKLIST.md`.
|
|
- Il progetto usa .NET 10, target Android API 36 e Google Play Billing 9.1.
|
|
|
|
- La ricerca nel pannello Layer conserva correttamente posizione e selezione del cursore durante il filtraggio; digitando `pio` il testo non viene piu invertito in `oip`.
|
|
- L'elenco revisioni viene aggiornato dopo salvataggi manuali e automatici, rinomina, importazione e selezione del progetto.
|
|
- Il pannello Progetti mostra quante revisioni sono disponibili e spiega quando un progetto appena creato non possiede ancora versioni precedenti.
|
|
|
|
## Versione 0.4.6
|
|
|
|
- `Mostra cornice/layer del foglio` carica dal WFS ufficiale AdE il vero confine `CP:CadastralZoning` di ciascun foglio delle particelle.
|
|
- Le particelle appartenenti a fogli diversi producono cornici distinte, senza piu creare un unico rettangolo cumulativo tra aree lontane.
|
|
- Le cornici gia presenti nel progetto o trasferite in un altro gruppo vengono riconosciute e non vengono scaricate o duplicate.
|
|
- Ogni foglio e salvato come oggetto autonomo e puo essere rinominato, bloccato, rimosso o spostato in un altro gruppo dal pannello Layer.
|
|
- I vecchi riquadri cumulativi generati automaticamente vengono rimossi durante il caricamento e sostituiti dai fogli ufficiali.
|
|
|
|
## Versione 0.4.5
|
|
|
|
- Corretto il layout del pannello Layer sui telefoni e sui foldable: checkbox, lucchetto, ordinamento e freccia di espansione non si sovrappongono e restano allineati.
|
|
- La tabella oggetti include un comando dedicato per modificare i metadati di ciascun elemento.
|
|
- L'editor metadati permette di copiare i campi da un altro oggetto, scegliendo se importare anche i valori oppure soltanto i nomi.
|
|
- Il pannello Progetti consente di rinominare un progetto duplicato o esistente senza perdere contenuti, identita e revisioni.
|
|
- La barra Leaflet include una guida completa con istruzioni ed esempi concreti per disegno, modifica, eliminazione, riparazione, fori e confronto confini.
|
|
|
|
## Versione 0.4.4
|
|
|
|
- I comandi `Rinomina`, `Sposta nel gruppo` e `Rimuovi` occupano una riga completa e restano visibili anche nei pannelli Layer molto stretti.
|
|
- `Sposta nel gruppo` e disponibile per padri e figli di disegni, dati importati, cornici, fogli importati e particelle evidenziate dalla ricerca catastale.
|
|
- Editor distinti per linea e riempimento su gruppi e singoli oggetti, con contagocce dove supportato e valori modificabili HEX, RGB e HSL.
|
|
- Copia HEX per riutilizzare esattamente un colore su altri oggetti; stili conservati nei progetti e negli export.
|
|
- Rimossi dai menu i riferimenti al colore rosso fisso delle particelle catastali.
|
|
- Nei progetti in sola lettura anche il trasferimento tra gruppi viene correttamente disabilitato.
|
|
|
|
## Versione 0.4.3
|
|
|
|
- `Mostra particella sulla mappa` riattiva sempre il layer dei confini rossi e lo porta in primo piano.
|
|
- Una particella gia evidenziata o temporaneamente nascosta viene recuperata senza creare duplicati.
|
|
- Deduplicazione estesa alle particelle presenti in progetti e file GeoJSON, KML e KMZ, tramite riferimenti catastali o confronto geometrico.
|
|
- Ricerca WFS ampliata per rendere piu affidabile il recupero dei confini di particelle estese o irregolari.
|
|
- Guida rapida collassabile in fondo a Layer e a ogni pannello operativo, con istruzioni specifiche per le relative funzioni.
|
|
|
|
## Versione 0.4.2
|
|
|
|
- Nuovo comando `Sposta nel gruppo` visibile accanto a Rinomina e Rimuovi per padri, sottogruppi e singoli oggetti.
|
|
- Scelta della categoria e del sottogruppo di destinazione, con possibilita di creare un nuovo gruppo.
|
|
- I disegni possono essere organizzati in sottogruppi come i dati importati.
|
|
- `Sposta geometria` resta separato e continua a traslare gli oggetti in metri verso nord, sud, est o ovest.
|
|
|
|
## Versione 0.4.1
|
|
|
|
- Pannelli operativi allineati a destra, con ricerca lasciata nella posizione precedente.
|
|
- Espansione della gerarchia Layer esclusivamente tramite freccia accanto alla maniglia di trascinamento.
|
|
- Colori coerenti tra gruppo padre e figli, intensita progressiva per livello e conteggio figli in grassetto.
|
|
- Spostamento dei gruppi tra `Disegni e POI` e `Progetti e dati importati`.
|
|
- Rinomine persistenti nei progetti e negli export GeoJSON, KML e KMZ.
|
|
- Gli oggetti e i gruppi rimossi dal progetto non vengono piu inclusi nei salvataggi e negli export.
|
|
- Editor interni per rinomina, attributi multilinea, coordinate, spostamento e buffer.
|
|
- Selezione multipla e blocco disponibili anche nella tabella oggetti e particelle.
|
|
- Evidenziazione nel Layer dell'oggetto selezionato sulla mappa e centratura automatica opzionale, disattivata per impostazione predefinita.
|
|
- Strumenti controllo/riparazione, foro e confronto nella barra Leaflet, con risultati visibili in una finestra dedicata.
|
|
- Comandi del pannello Progetti disposti verticalmente senza scorrimento orizzontale.
|
|
|
|
## Versione 0.4.0
|
|
|
|
La mappa ora occupa tutta la schermata: il pannello `Layer` resta subito accessibile, mentre ricerca, catasto, dati, progetti, esportazione, strumenti avanzati e impostazioni sono raccolti nel menu in alto.
|
|
|
|
Tra le funzioni principali della versione 0.4.0:
|
|
|
|
- rinomina, ordinamento, selezione, blocco e rimozione reversibile di singoli oggetti e gruppi;
|
|
- evidenziazione coordinata dei gruppi e gerarchia visiva tra padri, figli e livelli annidati;
|
|
- annulla/ripristina, cestino, storico modifiche, autosalvataggio e backup programmati;
|
|
- modifica o eliminazione del solo disegno selezionato oppure di tutti i disegni;
|
|
- tabella oggetti, ricerca, attributi personalizzati, etichette, note e foto;
|
|
- strumenti geometrici per buffer, unione, divisione, fori, confronto e controllo/riparazione;
|
|
- importazione controllata di GeoJSON, KML e KMZ con analisi, pulizia e deduplicazione;
|
|
- cache cartografica offline, sincronizzazione WebDAV e condivisione di progetti modificabili o in sola lettura;
|
|
- controllo aggiornamenti da Gitea con versione installata, versione disponibile, note e download APK;
|
|
- esportazione PDF con schema vettoriale, freccia nord, scala grafica e riferimenti catastali.
|
|
|
|
## Funzioni implementate
|
|
|
|
- Mappa interattiva Leaflet con sfondi Esri, OpenStreetMap, OpenTopoMap, CARTO Voyager, Google Maps e Azure Maps configurabili tramite chiave.
|
|
- Layer WMS ufficiale Agenzia delle Entrate: particelle, numeri particella, fogli, fabbricati, strade e acque.
|
|
- Trasparenza configurabile del layer catastale.
|
|
- Interrogazione WMS con click/tap sulla mappa.
|
|
- Import di file KML, KMZ, GeoJSON e JSON.
|
|
- Import GeoJSON compatibile con BOM, geometrie singole, array, FeatureCollection e coordinate Web Mercator EPSG:3857.
|
|
- Filtro KML/KMZ `solo particelle` attivo per impostazione predefinita, con separazione dei MultiPolygon ed esclusione di GroundOverlay e perimetri del foglio; il layer foglio resta importabile e puo essere mostrato o nascosto separatamente.
|
|
- Migrazione automatica dei vecchi progetti: i GroundOverlay `DOC_...` salvati in precedenza insieme alle particelle vengono riconosciuti, separati e nascosti in tempo reale dal relativo check.
|
|
- Inquadramento e pulizia dei layer importati.
|
|
- Disegno di marker, linee, poligoni e rettangoli.
|
|
- Area, Distanza e Cerchio disponibili nella barra Leaflet laterale, nascosta all'avvio e controllata dalla sezione `Dati e disegni` insieme agli altri strumenti.
|
|
- Misure permanenti attivabili anche sui layer importati da KML, KMZ e GeoJSON.
|
|
- Toolbar di disegno completa di icone, modifica, eliminazione singola e pulizia di tutti i disegni/POI.
|
|
- Archivio multiprogetto nella cartella privata dell'app, con nome, selezione da elenco, sovrascrittura ed eliminazione.
|
|
- Sezioni `Progetti` ed `Esporta` nel menu: la prima gestisce archivio e opzioni live di visualizzazione, la seconda esporta selettivamente l'intera mappa in GeoJSON, KML o KMZ.
|
|
- Ogni progetto salva file GIS, POI, disegni, traccia, inquadratura e tutte le opzioni di visualizzazione: sfondo, layer catastali, trasparenza, misure, foglio importato, barra strumenti e preferenze GPS.
|
|
- GPS nativo MAUI ad alta precisione con permessi Android/iOS.
|
|
- Centratura automatica una tantum all'apertura: prima tramite posizione approssimativa della connessione Internet, poi tramite singola lettura GPS se la rete non restituisce una posizione; nessun punto o cerchio viene mostrato e il tracking continuo non viene avviato.
|
|
- Punto e cerchio di precisione del GPS live possono essere mostrati o nascosti dalle impostazioni senza fermare il rilevamento.
|
|
- Marker posizione, cerchio accuratezza in metri, tracciamento percorso.
|
|
- Controllo se la posizione GPS cade dentro un poligono importato o disegnato.
|
|
- Interrogazione WFS ufficiale Agenzia delle Entrate attorno alla posizione GPS per evidenziare la particella catastale corrente quando il servizio restituisce la geometria.
|
|
- Mappa a tutto schermo con menu compatto e pannelli adattabili a telefoni, tablet e schermi pieghevoli.
|
|
- Ingrandimento oltre lo zoom satellitare nativo senza tessere "Map data not yet available".
|
|
- Tendine concatenate Regione, Comune, Foglio e Particella.
|
|
- Ricerca di localita e indirizzi eseguita nativamente con fallback Esri e OpenStreetMap, senza richieste CORS dalla WebView.
|
|
- Catalogo dei Comuni incluso nell'APK e cataloghi regionali OnData scaricati in cache solo quando servono.
|
|
- Ricerca catastale eseguita dal codice .NET nativo, senza DuckDB WebAssembly nella WebView Android.
|
|
- La registrazione della traccia GPS e' disattivata all'avvio; la toolbar di disegno completa puo' essere mostrata o nascosta dalla sezione `Dati e disegni`.
|
|
- Pannello `Layer` accessibile direttamente dalla mappa, con checkbox sincronizzati per confini, numeri particella, fogli, fabbricati, strade e acque.
|
|
- Le particelle cercate possono essere aggiunte una dopo l'altra, mantenendo contemporaneamente sulla mappa tutti i confini selezionati.
|
|
- Comandi separati per rimuovere le particelle selezionate o pulire importazioni, disegni, POI e traccia GPS.
|
|
- Anteprima WMS ufficiale mostrata dentro l'app senza aprire una nuova finestra Android.
|
|
- Confini delle particelle selezionate e della particella GPS sovrapposti anche all'anteprima WMS corrente.
|
|
- Richieste WMS catastali in EPSG:4258 compatibili con il servizio AdE; i numeri particella sono visibili alle scale di dettaglio consentite dal servizio (circa zoom 17 o superiore).
|
|
- Collegamenti separati al Geoportale pubblico e all'Area riservata AdE per CAPTCHA, SPID/CIE e download ufficiali.
|
|
|
|
## Limite ufficiale AdE da considerare
|
|
|
|
Il WFS dell'Agenzia delle Entrate consente `GetFeature` con bounding box, ma non una ricerca diretta per attributi come Comune + Foglio + Particella. Per rendere quel flusso completamente automatico servono:
|
|
|
|
1. un indice locale o remoto Comune/Foglio/Particella -> punto interno particella, per esempio i dati OnData;
|
|
2. una chiamata WFS con bounding box piccola intorno a quel punto;
|
|
3. filtro lato app sul risultato per selezionare la particella corretta.
|
|
|
|
Questo passaggio e' implementato nel tab `Catasto`. Regione e Comune sono disponibili subito; alla prima selezione di un Comune l'app scarica il file della regione, da circa 6 a 72 MB, e lo conserva nella cache del dispositivo. Fogli e particelle vengono poi popolati automaticamente.
|
|
|
|
I layer cartografici pubblici WMS/WFS sono open data e non richiedono CAPTCHA. Il CAPTCHA o l'autenticazione SPID/CIE appartengono ai servizi web di consultazione e download documentale: l'app li apre nel sito ufficiale dell'Agenzia e non tenta di aggirarli.
|
|
|
|
## Azure Maps Gen2
|
|
|
|
Nel tab `Impostazioni` sono disponibili gli sfondi `Strade - Azure Maps` e `Satellite - Azure Maps`. Per usarli:
|
|
|
|
1. crea una risorsa Azure Maps con piano Gen2 nel portale Azure;
|
|
2. copia una delle chiavi di sottoscrizione della risorsa;
|
|
3. inseriscila in `Chiave sottoscrizione Azure Maps Gen2` e premi `Salva chiave Azure Maps`.
|
|
|
|
La chiave viene validata prima del salvataggio e rimane nel `SecureStorage` del dispositivo; non e' inclusa nel codice o nell'APK. Lasciando vuoto il campo e premendo il pulsante, la chiave viene rimossa.
|
|
|
|
La quota gratuita mensile Gen2 indicata da Microsoft comprende 5.000 transazioni per le mappe di base e 1.000 per le immagini satellitari. Una transazione raggruppa fino a 15 richieste di tessere. Oltre la quota si applicano le condizioni economiche della sottoscrizione Azure, quindi e' opportuno configurare budget e avvisi nel portale.
|
|
|
|
- Creazione account e autenticazione: https://learn.microsoft.com/azure/azure-maps/how-to-manage-account-keys
|
|
- Prezzi e quota gratuita: https://azure.microsoft.com/pricing/details/azure-maps/
|
|
|
|
## Aprire in Visual Studio
|
|
|
|
Apri `LMEMappeCatastaliApp.csproj` con Visual Studio 2022/2026 e seleziona:
|
|
|
|
- `Windows Machine` per test desktop;
|
|
- un emulatore o dispositivo Android per test mobile;
|
|
- iOS/Mac Catalyst da Mac con workload Apple configurati.
|
|
|
|
Per Android serve Android SDK installato e configurato in Visual Studio.
|
|
|
|
## Build da terminale
|
|
|
|
```powershell
|
|
dotnet build -f net10.0-windows10.0.19041.0
|
|
```
|
|
|
|
Per Android:
|
|
|
|
```powershell
|
|
dotnet build -f net10.0-android -p:AndroidSdkDirectory=C:\Users\livio\AppData\Local\Android\Sdk
|
|
```
|
|
|
|
## APK Release generato
|
|
|
|
La pubblicazione Android genera:
|
|
|
|
```text
|
|
C:\Users\livio\Documents\LMEMappeCatastali\LMEMappeCatastaliPRO\bin\Release\net10.0-android\publish\it.liviomerola.lmemappecatastali.pro-Signed.apk
|
|
```
|
|
|
|
Per installarlo con telefono collegato e debug USB attivo:
|
|
|
|
```powershell
|
|
C:\Users\livio\AppData\Local\Android\Sdk\platform-tools\adb.exe install -r C:\Users\livio\Documents\LMEMappeCatastali\LMEMappeCatastaliPRO\artifacts\android-test\LME-Mappe-Catastali-Pro-1.0.0-test.apk
|
|
```
|