Skip to content

Commit a7042a1

Browse files
aborrusoclaude
andcommitted
docs: add full CLI reference page (docs/cli.md)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
1 parent 9b468cf commit a7042a1

3 files changed

Lines changed: 311 additions & 0 deletions

File tree

LOG.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,10 @@
11
# LOG
22

3+
## 2026-06-09 — docs: riferimento CLI completo
4+
5+
- Aggiunta `docs/cli.md`: guida completa a tutti i comandi e opzioni (opzioni globali, codici di uscita, comportamento `--skip-invalid`, gotcha ordine assi, output strutturato in `batch`).
6+
- README: aggiunto link al riferimento CLI sopra la tabella dei comandi.
7+
38
## 2026-06-08 — v0.2.1 — throttle tra i blocchi
49

510
- Aggiunto un **throttle** (default **2s**) tra i blocchi di conversione: scatta **solo** quando un job supera le 32000 coordinate (più richieste); una conversione singola non viene mai rallentata. Configurabile via `--throttle` (CLI) e `set_throttle()` (libreria), `0` per disabilitare.

README.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,8 @@ openverto -o csv convert ... # CSV
8686

8787
## Comandi
8888

89+
Tutte le opzioni sono documentate nel [**riferimento CLI completo**](docs/cli.md).
90+
8991
| Comando | Descrizione |
9092
|---|---|
9193
| `systems` | Elenco dei sistemi di riferimento supportati (EPSG + descrizione) |

docs/cli.md

Lines changed: 304 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,304 @@
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

Comments
 (0)