CSV remoti, come forzare il tipo di campo

I file CSV sono file di testo con colonne separati da virgola e senza definizione dei campi, cioè tutti i campi sono testo.

Spesso i CSV contengono campi con valori String (testo), valori Integer (numeri interi), valori Real (virgola mobile) e risulta molto utile poterli utilizzare, per esempio in QGIS, con la reale definizione del campo.

Un modo per far capire a QGIS il tipo di campo di un CSV è tramite la definizione del file gemello del CSV, cioè il file CSVT; è un file che ha stesso nome del file CSV, cambia solo l’estensione. Questo file contiene solo una riga che definisce il tipo di campo (String, Integer, Real).

Un altro modo molto elegante, soprattutto utilizzando file CSV remoti, è attraverso la definizione di un Virtual File Format.

Vediamo un pratico esempio

Qui è presente un file CSV, cosi strutturato:

se importato, come testo delimitato, QGIS tenta di interpretare i campi e il risultato è il seguente:

cioè, il campo cod_ISTAT viene interpretato come numerico. Questo potrebbe comportare dei problemi se volessimo, successivemente, fare una Join tabellare.

Per ovviare a tale problema e forzare il tipo di campo, basta utilizzare un file standard OGR, cioè un vrt cosi definito:

<OGRVRTDataSource>
<OGRVRTLayer name="pop_res_regioni_ISTAT20190101">
    <SrcDataSource relativeToVRT="0">/vsicurl/https://gist.githubusercontent.com/pigreco/bc22970f613b4c8682cffa2267853c92/raw/ac512c116700fcb4ce981c77e19d62e0275d1094/pop_res_regioni_ISTAT20190101.csv</SrcDataSource>
    <Field name="cod_ISTAT" type="String" />
    <Field name="regione" type="String" />
    <Field name="pop_res2019" type="Integer" />
</OGRVRTLayer>
</OGRVRTDataSource>

questo file (pop_res_regioni_ISTAT20190101.vrt) può essere importato in QGIS in vari modi, tramite dragAndDrop oppure con il provider HTTPS:

e il file viene visto nel modo corretto:


NOTE FINALI: GDAL/OGR uno strumento indispensabile!


Riferimenti

Ringraziamenti

Rispondi

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo di WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione /  Modifica )

Google photo

Stai commentando usando il tuo account Google. Chiudi sessione /  Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione /  Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione /  Modifica )

Connessione a %s...

Questo sito utilizza Akismet per ridurre lo spam. Scopri come vengono elaborati i dati derivati dai commenti.