Archivio dei tag shapefile

Il GeoPackage: una valida alternativa al formato shape!

In questo articolo vi spiegherò perchè con il GeoPackage potete liberarvi degli shapefile

Il GeoPackage è un formato dati open che fu pubblicato per la prima volta nel 2014. E’ un formato che segue gli standard OGC (Open Geospatial Consortium) ed ha tutta una serie di qualità che lo rendono migliore del vecchio ed oramai superato formato shape.

Prima di conoscere in maniera quanto più approfondita possibile il GeoPackage, andremo a vedere i motivi per cui il formato shape DEVE essere abbandonato. In rete c’è un articolo dal titolo abbastanza significativo “Switch from Shapefile” che vi invito a leggere. In questo articolo sono elencate tutte le problematiche legate all’utilizzo di uno shapefile; di seguito mi limiterò ad elencarne alcune tra quelle più comuni che ho personalmente incontrato:

  • Il nome di un field della tabella attributi non può contenere più di 10 caratteri. Personalmente trovo fastidiosissimo dover troncare i nomi delle colonne! Se devo chiamare un field

    La struttura di uno shapefile

    Superfici_in_evoluzione“, con il formato shp sono costretto a scrivere cose tipo “sup_in_evo“. Brutto da vedere, brutto da leggere, brutto da gestire per la costruzione di una legenda sia in TOC che in layout di stampa.

  • Non si può andare oltre i 255 caratteri per il tipo di dato testuale. Sono davvero tantissimi i casi in cui 255 caratteri sono davvero pochi. Per la costruzione di una carta geologica, ad esempio, quando si ha la necessità di descrivere il tipo di unità geologica, 255 caratteri stanno stretti. Una (non)soluzione al problema che a volte ho adottato in questi casi è creare una tabella esterna con i testi lunghi che ho poi associato allo shp. Questo comporta la necessità di aggiungere un altro file alla già lunga lista di file associata allo shp con l’aumento della possibilità di copia parziale dei file se si devono inviare ad altre persone i dati. Sarà indispensabile inviare anche il file progetto per non perdere l’unione tra tabella esterna ed interna(un altro file da aggiungere!).
  • Non è possibile impostare un set di codifica caratteri. Vi siete mai trovati ad usare dati in una lingua diversa? Non per forza cinese o arabo. Mal di pancia vengono già con l’utilizzo di testi scritti in francese! Caratteri illeggibili, un disastro!
  • Lo shapefile non è un formato dati topologico! Questo significa che le geometrie che vengono generate non sono topologiche e quindi è probabile che incapperete in errori, ad esempio, in geoprocessing. Vi riporto una mia esperienza recente.
    Avevo uno shp pieno di geometrie non valide. Lo importai in PostGIS e con la funzione ST_MakeValid lo resi topologico. Quando lo esportai in shp di nuovo non lo era. Per prova lo esportai da PostGIS in SpatiaLite e risultava corretto anche in SpatiaLite. Come ulteriore prova lo esportai da SpatiaLite in shp ed anche in questo caso mi ritrovai un vettore con geometrie invalide.

Per un professionista del settore GIS queste già dovrebbero essere argomentazioni sufficienti a dire addio allo shapefile; nell’articolo che vi ho linkato ce ne sono molte altre!

Veniamo al GeoPackage. E’ un formato di dati geografici molto duttile, può infatti contenere sia vettori che raster. In realtà questo formato è un data container basato su SQLite. Questo ci consente di avere tanti vantaggi, vediamone alcuni.

ALL IN ONE. Il Geopackage può contenere al suo interno le geometrie, la tabella attributi associata alle geometrie, la topologia delle geometrie, il sistema di riferimento del vettore ed i tematismi!! Il formato shp per fare quasi la stessa cosa ha bisogno di almeno 6 file.

Essendo basato su SQLite possiamo senza problemi scrivere per esteso il titolo dei nostri field. Se il field in questione è di tipo testo non abbiamo nessuna limitazione ai caratteri e quindi possiamo inserire senza difficoltà testi molto lunghi. Essendo un formato che ricalca in pieno gli standard OGC avremmo massima libertà di uso ed interoperabilità tra piattaforme software, inoltre può immagazzinare più di 2GB di dati cosa che uno shapefile non può fare.

Un po’ di mesi fa fu lanciato su Twitter un sondaggio sullo switch dal formato shp, ed il GeoPackage è stato scelto come miglior sostituto surclassando il formato GeoJson.

Un’altra cosa interessante del GeoPackage è il fatto che può contenere raster. Con QGIS è semplicissimo passare da un .tiff ad un .gpkg(l’estensione del GeoPackage), basta effettuare una conversione di formato.

Visti i tanti pro perchè non passate al formato .gpkg?

Shapefile o Geodatabase: quale scegliere?

Può capitare di trovarsi di fronte a questo dubbio e non sapere quale “strada” scegliere tra uno shapefile ed un geodatabase. Cercherò brevemente di fare chiarezza ma prima di scendere nel dettaglio è opportuno dare una spiegazione di cosa sia un geodatabase; sarà utile sia a chi ci si imbatte per la prima sia a chi ne ha già avuto esperienza.

geodatabaseImmaginate le vostre elaborazioni geospaziali come fogli su una scrivania, un geodatabase può essere paragonato ad un raccoglitore da scrivania. Sono “strumenti” modulabili, si possono aggiungere vani da impilare su quelli che esistono già per aumentare la capienza del raccoglitore, è possibile inserire etichette in modo da effettuare una ricerca tra i fogli più rapida. E’ un ambiente sicuro che consente di avere tutti i fogli in una stessa posizione, subito a portata di mano.

Uno shapefile invece è uno di quei fogli che avete sulla scrivania. Quando sono troppi vi ritroverete con una scrivania invasa da pile di fogli indistinti e di cui non saprete cosa c’è riportato.

Scendendo un po’ più nel tecnico, un geodatabase, associa ad un database la componente spaziale portando in se quindi tutte le caratteristiche di un database.

Cosa è un database allora?

A database is an organized collection of data.[1] It is the collection of schemas, tables, queries, reports, views, and other objects. The data are typically organized to model aspects of reality in a way that supports processes requiring information, such as modelling the availability of rooms in hotels in a way that supports finding a hotel with vacancies. Fonte Wikipedia

Un databse è quindi un’insieme di dati raccolti in schemi, tabelle, query, report view ed altri oggetti. Tali dati sono organizzati mediante un modello logico che può essere di tipo relazionale oppure gerarchico. Un database inoltre deve essere organizzato con ridondanza minima, non devono esserci cioè dati inutilmente duplicati. Queste sono solo alcune caratteristiche di un databse che vengono sposate in pieno da un geodatabase.

E’ opportuno anche dire cosa è una DBMS. Spesso si confonde un (geo)database con il suo DBMS; il DBMS – DataBase Management System – non è nient’altro che un sistema per la gestione di un database, sia esso di tipo “tradizionale” o di tipo geografico. Ad esso va associato un client che interfacciandosi con il DBMS consente una serie di operazioni sul dato contenuto nel database e gestito dal DBMS. Un esempio di DBMS è Postgresql/PostGIS, mentre uno di client è QGIS.

Ritornando alla domanda di introduzione: è meglio scegliere uno shapefile o un geodatabase? La risposta è dipende! Dipende da quanti dati avete, il tipo di elaborazioni. Anche in base alla quantità di dati contenuta nel nostro vettore, e quindi non solo alla quantità di vettori, possiamo scegliere quale strada intraprendere; qui c’è un video molto interessate su un test di performance tra shapefile e geodatabase.