| name | rndt-explorer |
| description | Esplorazione guidata del Repertorio Nazionale dei Dati Territoriali (RNDT) tramite la CLI openrndt. Usa questa skill ogni volta che l'utente cerca dati geografici, cartografici o territoriali italiani — anche se non menziona esplicitamente RNDT, geoportale o metadati. Coprono: catasto, cartografia di base, uso del suolo, idrografia, trasporti, ambiente, servizi WMS/WFS regionali e nazionali, dati INSPIRE, dataset ISTAT georeferenziati, dati di enti come Agenzia delle Entrate, ISPRA, regioni, comuni, autorità di bacino. La skill guida l'utente passo passo: scopre le codelist disponibili, esegue ricerche con filtri progressivi, recupera il dettaglio del metadato e segnala le risorse scaricabili (WMS, WFS, download diretto).
|
| license | MIT |
| compatibility | Richiede la CLI openrndt (comandi: search, get, discover). Installazione: `uv tool install openrndt` (da PyPI) oppure `uvx openrndt`.
|
| metadata | {"author":"ondata","version":"1.0"} |
RNDT Explorer — esplorazione guidata del catalogo
Questa skill usa la CLI openrndt per interrogare il
Repertorio Nazionale dei Dati Territoriali,
catalogo ufficiale italiano dei metadati geografici (ISO 19115/19139).
L'opzione globale --format (sempre PRIMA del comando) sceglie l'output:
openrndt --format json search …
openrndt --format table search …
openrndt --format csv search …
openrndt --format compact search …
Il formato compact (solo per search) emette una riga JSON per record con i
campi ad alto segnale — id, title, org, type, category, updated, resources —
ideale per individuare il record giusto prima di chiedere il dettaglio con get.
Se resources è [] il record non linka servizi fruibili: fai get <id> e
guarda _source.links_s.
Altre opzioni globali (sempre PRIMA del comando): --timeout <secondi> per il
timeout HTTP per singolo tentativo (default 30s; con i retry il caso peggiore è
~3x — utile abbassarlo se il portale è lento), --base-url per un mirror.
Tutti i comandi hanno --help. La skill segue 4 fasi.
Fase 1 — Discovery (offline, sempre prima)
Scopri le codelist valide senza chiamate di rete:
openrndt --format json discover
openrndt --format json discover --what data_categories
openrndt --format json discover --what sort_values
openrndt --format json discover --what output_formats
openrndt --format json discover --what search_params
openrndt --format json discover --what lucene_fields
Dettaglio delle categorie ISO 19115 e cheat sheet
"bisogno → categoria" in references/categories.md.
Fase 2 — Search (filtri progressivi)
Parti stretto, poi allarga. La ricerca minima:
openrndt --format json search --q "catasto" --num 10
Filtri principali:
| Flag CLI | Filtra su |
|---|
--q | testo, sintassi Lucene/Elasticsearch |
--bbox | bounding box WGS84 xmin,ymin,xmax,ymax |
--data-category | categoria ISO 19115 (es. planningCadastre) |
--time | range temporale della risorsa yyyy-mm-dd/yyyy-mm-dd |
--modified | range modifica del record nel catalogo yyyy-mm-dd/yyyy-mm-dd |
--sort | campo:asc|desc su campo sortable (es. apiso_Modified_dt:desc). dateDescending/dateAscending non ordinano. apiso_Modified_dt è la data della scheda, non dei dati — vedi "Quale data stai ordinando" in references/search-syntax.md |
--start --num | paginazione (1-based, max num=5000) |
--id | recupera un solo metadato per ID |
Importante: il parametro dataCategory documentato sul RNDT non
filtra; la CLI traduce internamente --data-category in
q=keywords_s:VAL. Dettagli in ref/rest-api-rndt.md.
Sintassi --q (AND/OR/NOT, frasi esatte, wildcard, campi specifici):
vedi references/search-syntax.md.
Ricerca per campo — usa campo:valore in --q. I campi interrogabili
sono visibili con openrndt discover --what lucene_fields. Esempi utili:
openrndt search --q "apiso_OrganizationName_txt:\"Regione Siciliana\""
openrndt search --q "isOpendata:*"
openrndt search --q "isOpendata:\"CC BY 4.0\""
openrndt search --q "INSPIRETheme_s:\"Parcelle catastali\""
openrndt search --q "apiso_RevisionDate_dt:[2024-01-01T00:00:00Z TO *]"
openrndt search --q "apiso_Type_s:service"
Operatori disponibili nel testo libero:
openrndt search --q "(suolo -natura)"
openrndt search --q "(*suo*)"
openrndt search --q "(na??ra)"
openrndt search --q "(*suo* -na??ra)" --sort "title:desc"
Regole wildcard per suffisso (verificate su API reale):
| Contesto | Wildcard trailing | Leading wildcard |
|---|
Testo libero (senza campo:) | ✅ palerm* | ✅ *palerm* |
Campo _txt (analizzato) | ✅ palerm* | ❌ bloccato |
Campo _s (keyword, case-sensitive) | ✅ Palerm* | ❌ bloccato |
Campo _dt (data) | — | [2024-01-01T00:00:00Z TO *] |
Campo _i (intero) | — | [1 TO 10000] |
Campo _b (booleano) | — | true | false |
Il leading wildcard è bloccato solo quando si specifica un campo esplicito (campo:*valore*). Sul testo libero funziona.
Fase 3 — Detail (singolo metadato)
Con un id interessante:
openrndt --format json get <id>
openrndt get <id> --xml > meta.xml
openrndt get <id> --html > meta.html
Struttura del payload e mappa dei campi _source (per costruire ricerche
mirate via q=campo:valore):
vedi references/result-structure.md.
Fase 4 — Download (risorse collegate)
I servizi e i file scaricabili stanno in results[].links[] (per ogni
risultato di search) o in _source.links_s / _source.webServices_s
(per get). Filtra per dctype (WMS, WFS, WCS, download).
Esempio rapido — tutti i WMS dei primi 50 risultati di una ricerca:
openrndt --format json search --q "catasto" --num 50 \
| jq -r '.results[].links[]? | select(.dctype=="WMS") | .href' \
| sort -u
Tabella rel/dctype completa in
references/result-structure.md.
Una volta ottenuto l'endpoint di un servizio OGC (WMS/WFS/WCS/WMTS),
esploralo con GDAL/OGR a output JSON (gdalinfo -json "WMS:…",
ogrinfo -json "WFS:…"): nomi dei layer, feature type, quali layer sono
interrogabili con GetFeatureInfo, download vettoriale con ogr2ogr. Guida in
references/ogc-services.md.
Workflow pronti
references/workflows.md raccoglie sequenze
testate live (catasto per provincia, WMS di un tema INSPIRE, dataset di un
ente, aggiornamenti recenti per categoria, export CSV, dati scaricabili con
licenza e citazione della fonte per data journalist, sanity check con i
totali attesi).
Output e parsing
Quando usare json/table/csv/xml/html:
references/output-formats.md.
Riferimenti esterni