|
| 1 | +# Riferimento CLI |
| 2 | + |
| 3 | +Guida completa ai comandi e alle opzioni di `openverto`. Per l'avvio rapido vedi il [README](../README.md). |
| 4 | + |
| 5 | +--- |
| 6 | + |
| 7 | +## Ordine degli assi |
| 8 | + |
| 9 | +Tutte le coordinate seguono la convenzione **est (e) prima, nord (n) dopo**. |
| 10 | + |
| 11 | +- Sistemi proiettati: `e` = easting (m), `n` = northing (m) |
| 12 | +- Sistemi geografici: `e` = longitudine (gradi decimali), `n` = latitudine (gradi decimali) |
| 13 | + |
| 14 | +> **Attenzione**: per i CRS geografici (4265, 4230, 4670, 6706) questo è l'**inverso** dell'ordine lat/long del registro EPSG. Passa sempre la longitudine per prima. Le posizioni GeoJSON (x, y) corrispondono già a (e, n) e non richiedono alcuno scambio. |
| 15 | +
|
| 16 | +--- |
| 17 | + |
| 18 | +## Opzioni globali |
| 19 | + |
| 20 | +Le opzioni globali vanno **prima** del sottocomando: |
| 21 | + |
| 22 | +```bash |
| 23 | +openverto [OPZIONI GLOBALI] <comando> [OPZIONI COMANDO] |
| 24 | +``` |
| 25 | + |
| 26 | +| Opzione | Default | Descrizione | |
| 27 | +|---|---|---| |
| 28 | +| `-o / --output` | `table` | Formato di output: `table`, `json`, `jsonl`, `csv` | |
| 29 | +| `--timeout` | `30.0` | Timeout per ogni richiesta HTTP (secondi) | |
| 30 | +| `--throttle` | `2.0` | Pausa tra batch consecutivi nei job con più di 32 000 coordinate (secondi); `0` per disabilitare | |
| 31 | +| `-H / --header` | — | Header HTTP aggiuntivo `Nome: Valore` (ripetibile) | |
| 32 | +| `-V / --version` | — | Mostra la versione ed esce | |
| 33 | + |
| 34 | +### Formati di output |
| 35 | + |
| 36 | +```bash |
| 37 | +openverto systems # tabella Rich (default in terminale) |
| 38 | +openverto -o json systems # JSON indentato |
| 39 | +openverto -o jsonl convert ... # JSON Lines: un oggetto per riga (ideale per pipeline) |
| 40 | +openverto -o csv convert ... # CSV con intestazione |
| 41 | +``` |
| 42 | + |
| 43 | +`jsonl` è il formato più adatto allo streaming verso `jq` o altri strumenti di linea. |
| 44 | + |
| 45 | +### Throttle e batch |
| 46 | + |
| 47 | +`--throttle` interviene **solo** quando un job supera le 32 000 coordinate per richiesta (il limite del servizio IGM). Una singola richiesta non viene mai rallentata. Aumenta il valore se il servizio restituisce errori temporanei su job molto grandi. |
| 48 | + |
| 49 | +--- |
| 50 | + |
| 51 | +## Codici di uscita |
| 52 | + |
| 53 | +| Codice | Significato | |
| 54 | +|---|---| |
| 55 | +| `0` | Successo | |
| 56 | +| `2` | Errore d'uso (parametri errati, coordinata fuori griglia) | |
| 57 | +| `3` | EPSG non trovato nel catalogo IGM | |
| 58 | +| `5` | Errore del servizio o di rete | |
| 59 | + |
| 60 | +--- |
| 61 | + |
| 62 | +## Comandi |
| 63 | + |
| 64 | +### `systems` — sistemi di riferimento supportati |
| 65 | + |
| 66 | +```bash |
| 67 | +openverto systems [--refresh] |
| 68 | +``` |
| 69 | + |
| 70 | +Elenca i 20 sistemi di riferimento italiani supportati da Verto Online (EPSG + descrizione). Il risultato è memorizzato in cache offline dopo la prima chiamata. |
| 71 | + |
| 72 | +| Opzione | Descrizione | |
| 73 | +|---|---| |
| 74 | +| `--refresh` | Forza il recupero live ignorando la cache | |
| 75 | + |
| 76 | +**Esempi** |
| 77 | + |
| 78 | +```bash |
| 79 | +openverto systems |
| 80 | +openverto -o jsonl systems |
| 81 | +openverto systems --refresh |
| 82 | +``` |
| 83 | + |
| 84 | +--- |
| 85 | + |
| 86 | +### `convert` — conversione di coordinate |
| 87 | + |
| 88 | +```bash |
| 89 | +openverto convert --from <EPSG> --to <EPSG> [e n ...] |
| 90 | +``` |
| 91 | + |
| 92 | +Converte una o più coppie di coordinate. Le coppie si passano come argomenti posizionali; in alternativa si leggono da stdin nel formato `e,n` (una coppia per riga). |
| 93 | + |
| 94 | +| Opzione | Descrizione | |
| 95 | +|---|---| |
| 96 | +| `--from` | EPSG di origine (obbligatorio) | |
| 97 | +| `--to` | EPSG di destinazione (obbligatorio) | |
| 98 | +| `--no-cache` | Ignora la cache delle conversioni già effettuate | |
| 99 | + |
| 100 | +**Esempi** |
| 101 | + |
| 102 | +```bash |
| 103 | +# singola coordinata geografica Roma40 → RDN2008 |
| 104 | +openverto convert --from 4265 --to 6706 12.4924 41.8902 |
| 105 | + |
| 106 | +# proiettata UTM33 → RDN2008 con output JSON Lines |
| 107 | +openverto -o jsonl convert --from 23033 --to 6706 290000 4640000 |
| 108 | + |
| 109 | +# più coppie in un colpo solo |
| 110 | +openverto convert --from 3003 --to 6707 1500000 4640000 1510000 4650000 |
| 111 | + |
| 112 | +# da stdin |
| 113 | +printf '290000,4640000\n291000,4641000\n' | openverto -o csv convert --from 23033 --to 6706 |
| 114 | +``` |
| 115 | + |
| 116 | +> Se la coordinata cade fuori dalla copertura della griglia IGM (Italia e mari circostanti), il servizio restituisce un errore. Usa `detect` e `inspect` per verificare EPSG e ordine degli assi prima di convertire. |
| 117 | +
|
| 118 | +--- |
| 119 | + |
| 120 | +### `batch` — conversione di un CSV |
| 121 | + |
| 122 | +```bash |
| 123 | +openverto batch <file> --from <EPSG> --to <EPSG> [OPZIONI] |
| 124 | +``` |
| 125 | + |
| 126 | +Converte un intero CSV di coordinate. Il file è letto con DuckDB: il delimitatore (`,`, `;`, tab, `|`) viene rilevato automaticamente. Usa `-` come file per leggere da stdin. |
| 127 | + |
| 128 | +| Opzione | Default | Descrizione | |
| 129 | +|---|---|---| |
| 130 | +| `--from` | — | EPSG di origine (obbligatorio) | |
| 131 | +| `--to` | — | EPSG di destinazione (obbligatorio) | |
| 132 | +| `--e-col` | auto | Nome della colonna est/longitudine (rilevato dai nomi comuni se omesso) | |
| 133 | +| `--n-col` | auto | Nome della colonna nord/latitudine (rilevato dai nomi comuni se omesso) | |
| 134 | +| `--decimal` | `.` | Separatore decimale del CSV: `.` oppure `,` (italiano, es. `12,4924`) | |
| 135 | +| `--out` | stdout | File di output | |
| 136 | +| `--format` | `csv` | Formato di output: `csv` oppure `geojson` | |
| 137 | +| `--skip-invalid` | off | Isola e salta le coordinate che il servizio rifiuta (biseziona il batch) | |
| 138 | +| `--rejects` | — | Salva le righe saltate in questo file CSV | |
| 139 | + |
| 140 | +#### Comportamento del servizio con coordinate non valide |
| 141 | + |
| 142 | +Il servizio IGM è **tutto-o-niente** per ogni richiesta: se anche una sola coordinata è fuori dalla copertura della griglia, l'intera richiesta fallisce. |
| 143 | + |
| 144 | +- **Senza `--skip-invalid`** (default): se una qualsiasi coordinata è fuori griglia, il comando termina con errore e nessun risultato viene scritto. |
| 145 | +- **Con `--skip-invalid`**: il batch viene bisecato ricorsivamente fino a isolare i singoli punti problematici. I punti validi vengono convertiti normalmente; quelli rifiutati sono esclusi dall'output (e facoltativamente salvati con `--rejects`). |
| 146 | + |
| 147 | +```bash |
| 148 | +# 500 punti, 20 fuori Italia: i 480 validi vengono salvati, i 20 esclusi riportati su stderr |
| 149 | +openverto batch punti.csv --from 4265 --to 6706 --skip-invalid |
| 150 | + |
| 151 | +# salva anche le righe scartate in un file separato |
| 152 | +openverto batch punti.csv --from 4265 --to 6706 --skip-invalid --rejects fuori_griglia.csv |
| 153 | +``` |
| 154 | + |
| 155 | +#### Output strutturato |
| 156 | + |
| 157 | +Con `-o json`, `-o jsonl` o `-o csv`, l'output va sempre su **stdout** e le opzioni `--out` e `--format` vengono ignorate. |
| 158 | + |
| 159 | +```bash |
| 160 | +openverto -o jsonl batch catasto.csv --from 3003 --to 6707 --e-col est --n-col nord |
| 161 | +``` |
| 162 | + |
| 163 | +**Altri esempi** |
| 164 | + |
| 165 | +```bash |
| 166 | +# CSV all'italiana (virgola decimale) |
| 167 | +openverto batch comuni.csv --from 4265 --to 6706 --decimal , --e-col lon --n-col lat |
| 168 | + |
| 169 | +# output GeoJSON su file |
| 170 | +openverto batch points.csv --from 3003 --to 6706 --format geojson --out out.geojson |
| 171 | + |
| 172 | +# da stdin verso stdout |
| 173 | +cat comuni.csv | openverto batch - --from 4265 --to 6706 --decimal , |
| 174 | +``` |
| 175 | + |
| 176 | +--- |
| 177 | + |
| 178 | +### `geojson` — riproiezione di un file GeoJSON |
| 179 | + |
| 180 | +```bash |
| 181 | +openverto geojson <file> --from <EPSG> --to <EPSG> [--out <file>] |
| 182 | +``` |
| 183 | + |
| 184 | +Riproietta tutte le coordinate delle geometrie di un file GeoJSON. Le posizioni GeoJSON (x, y) corrispondono già a (e, n): nessuno scambio di assi necessario. Usa `-` per leggere da stdin. |
| 185 | + |
| 186 | +| Opzione | Descrizione | |
| 187 | +|---|---| |
| 188 | +| `--from` | EPSG di origine delle posizioni nel file (obbligatorio) | |
| 189 | +| `--to` | EPSG di destinazione (obbligatorio) | |
| 190 | +| `--out` | File di output (default: stdout) | |
| 191 | + |
| 192 | +**Esempi** |
| 193 | + |
| 194 | +```bash |
| 195 | +openverto geojson aree.geojson --from 4230 --to 6706 --out out.geojson |
| 196 | +cat aree.geojson | openverto geojson - --from 4230 --to 6706 |
| 197 | +``` |
| 198 | + |
| 199 | +--- |
| 200 | + |
| 201 | +### `inspect` — metadati di un EPSG |
| 202 | + |
| 203 | +```bash |
| 204 | +openverto inspect <EPSG> [<EPSG> ...] |
| 205 | +``` |
| 206 | + |
| 207 | +Mostra famiglia datum, ordine degli assi, unità, fuso e false easting per uno o più EPSG. Utile per disambiguare sistemi simili (es. 3003 vs 3004) prima di una conversione. |
| 208 | + |
| 209 | +**Esempi** |
| 210 | + |
| 211 | +```bash |
| 212 | +openverto inspect 3003 |
| 213 | +openverto -o json inspect 3003 6706 |
| 214 | +``` |
| 215 | + |
| 216 | +--- |
| 217 | + |
| 218 | +### `detect` — indovina il sistema di riferimento |
| 219 | + |
| 220 | +```bash |
| 221 | +openverto detect <e> <n> |
| 222 | +``` |
| 223 | + |
| 224 | +Indovina il sistema di riferimento probabile di una coordinata basandosi sulla sua magnitudine. Utile quando un dataset è etichettato vagamente ("UTM", "Gauss-Boaga") senza EPSG esplicito. |
| 225 | + |
| 226 | +**Esempi** |
| 227 | + |
| 228 | +```bash |
| 229 | +openverto detect 290000 4640000 |
| 230 | +openverto -o json detect 1500000 4640000 |
| 231 | +``` |
| 232 | + |
| 233 | +--- |
| 234 | + |
| 235 | +### `targets` — destinazioni valide per una conversione |
| 236 | + |
| 237 | +```bash |
| 238 | +openverto targets <EPSG> |
| 239 | +``` |
| 240 | + |
| 241 | +Elenca i sistemi di riferimento verso cui è possibile convertire un dato EPSG. Le conversioni tra sistemi con lo stesso datum sono rifiutate dal servizio: questo comando mostra solo le destinazioni con datum diverso. |
| 242 | + |
| 243 | +**Esempi** |
| 244 | + |
| 245 | +```bash |
| 246 | +openverto targets 3003 |
| 247 | +openverto -o csv targets 3003 |
| 248 | +``` |
| 249 | + |
| 250 | +--- |
| 251 | + |
| 252 | +### `roundtrip` — verifica la reversibilità di una catena datum |
| 253 | + |
| 254 | +```bash |
| 255 | +openverto roundtrip --from <EPSG> --to <EPSG> [e n ...] |
| 256 | +``` |
| 257 | + |
| 258 | +Esegue la conversione A→B→A e riporta l'errore residuo (Δe, Δn, distanza in metri). Permette di certificare che una catena di datum sia lossless entro tolleranza prima di pubblicare dati. |
| 259 | + |
| 260 | +**Esempi** |
| 261 | + |
| 262 | +```bash |
| 263 | +openverto roundtrip --from 23033 --to 6706 290000 4640000 |
| 264 | +openverto -o json roundtrip --from 3003 --to 6707 1500000 4640000 |
| 265 | +``` |
| 266 | + |
| 267 | +--- |
| 268 | + |
| 269 | +### `cache` — gestione della cache offline |
| 270 | + |
| 271 | +```bash |
| 272 | +openverto cache [--stats] [--clear] |
| 273 | +``` |
| 274 | + |
| 275 | +La cache memorizza le risposte del servizio IGM per permettere pipeline riproducibili offline (es. in CI). La cache dei sistemi di riferimento viene aggiornata automaticamente; quella delle conversioni cresce con l'uso. |
| 276 | + |
| 277 | +| Opzione | Descrizione | |
| 278 | +|---|---| |
| 279 | +| `--stats` | Mostra le statistiche della cache (percorso, numero di voci, dimensione) | |
| 280 | +| `--clear` | Elimina la cache dei sistemi e delle conversioni | |
| 281 | + |
| 282 | +**Esempi** |
| 283 | + |
| 284 | +```bash |
| 285 | +openverto cache --stats |
| 286 | +openverto cache --clear |
| 287 | +``` |
| 288 | + |
| 289 | +--- |
| 290 | + |
| 291 | +### `doctor` — verifica la connettività |
| 292 | + |
| 293 | +```bash |
| 294 | +openverto doctor |
| 295 | +``` |
| 296 | + |
| 297 | +Verifica la raggiungibilità del servizio IGM Verto Online e riporta il numero di sistemi disponibili. |
| 298 | + |
| 299 | +**Esempi** |
| 300 | + |
| 301 | +```bash |
| 302 | +openverto doctor |
| 303 | +openverto -o json doctor |
| 304 | +``` |
0 commit comments