Alternative ai Shapefile come tipi di set di dati open source e multipiattaforma [chiuso]


20

Sto lavorando a un software molto orientato all'ESRI, ma una versione futura probabilmente non utilizzerà il software ESRI. Utilizza Shapefile e geodatabase. Sto programmando di trasferire tutti i miei dati su Shapefile in previsione di future versioni del software che probabilmente saranno su Android e altri dispositivi mobili. Sembra che gli Shapefile siano il tipo di dati più comune per le funzionalità nel mondo GIS open source, ma quali sono gli altri e quali vantaggi apportano? Conosco GeoJSON e KML, ma sono sicuro che ce ne sono altri.

Vorrei conoscere tutte le opzioni, ma sono particolarmente interessato ai tipi di set di dati più adatti per l'archiviazione su dispositivi mobili (i dati devono essere accessibili senza una connessione Internet).



1
Quella domanda del 2011 è stata posta prima dell'esistenza di GeoPackage e le risposte naturalmente non includono tale alternativa.
user30184

2
Esri File Geodatabase ha una lunghezza massima del campo char che farebbe concorrenza al contenuto di testo della maggior parte delle librerie di piccole dimensioni, Esri Personal Geodatabase supporta anche campi di testo molto lunghi. Entrambi sono accessibili tramite QGIS e, naturalmente, Esri ArcGIS ma il supporto per questi tipi di dati è limitato al di fuori di questi pacchetti. Attenzione alla versione, proverei a creare la versione 9.3 poiché la maggior parte dei software Esri che probabilmente incontrerai saranno 10+ e le API di geodatabase per QGIS dovrebbero supportare questa versione. GeoJSON e KML possono anche supportare campi di testo di grandi dimensioni ma non sono così universalmente leggibili.
Michael Stimson,

1
Umm, 9.3 non è un buon piano per la compatibilità di file geodatabase - L'API FGDB non supporta .gdb in stile 9.x.
Vince,

1
Gli shapefile di @ElioDiaz esistono ancora, nonostante i loro limiti, in quanto sono i media di trasferimento delle caratteristiche più universali: quasi tutti i pacchetti GIS si aprono o possono importare gli shapefile di Esri. Il formato è uno standard aperto in modo che chiunque possa leggere e implementare a modo suo. Esistono indubbiamente formati di funzionalità GIS superiori ma non sono così universalmente adottati ... questo argomento è stato discusso molte volte su GIS.SE. Per quanto lo desidereremmo altrimenti gli shapefile sono probabilmente il minimo comune denominatore di funzionalità per qualche tempo, quindi dobbiamo solo sorridere e sopportarlo.
Michael Stimson,

Risposte:


18

Come dice @ user890, questo dipende molto da come verranno utilizzati i dati. Principalmente ci sono due modi per accedere ai dati:

  1. Caricando tutto in memoria in una volta sola e quindi accedere / interrogare i dati in memoria.
  2. Eseguendo una query per funzionalità specifiche, riquadri di delimitazione ecc

Formati come GeoJSON e KML sono più adatti per i casi in cui si desidera caricare tutto in una volta. I vantaggi sono che i dati possono essere strutturati in un modo più adatto alla propria applicazione. Gli aspetti negativi: dimensioni di file più grandi (poiché sono basate su testo) e l'impossibilità di eseguire query efficienti direttamente dal file.

SQLite / Spatialite è migliore per le query (SQL), ma è più difficile strutturare i dati: devi appiattire tutto nelle tabelle del database e quindi eseguire JOIN (che può essere costoso) durante le query.

Non esiste davvero un formato file perfetto che copra tutto (ma poi gli shapefile sono tutt'altro che perfetti). Un'alternativa da considerare è quella di creare il proprio formato specifico per l'applicazione, ma funziona solo se non è necessario condividere i dati con il mondo esterno.


14

Penso che l' elenco dei formati vettoriali OGR (link aggiornato) identifichi praticamente ogni formato open source di cui abbia mai sentito parlare, e molti altri ancora. Ognuno di questi formati ha i suoi vantaggi / svantaggi, quindi è difficile dire quale sia il "migliore". Per le app mobili, immagino che la dimensione del file sarà uno dei fattori decisivi più importanti.

Per le applicazioni mobili, penso che il formato sqlite / spatialite sia il formato logico con cui iniziare. So che Android fornisce supporto nativo per sqlite. Quindi, supponendo che tu possa caricare le estensioni spazialite, avrai a disposizione un gis molto potente.

A seconda di quanto sei avventuroso, sembrerebbe che costruire gdal per Android non sia impossibile. Potresti quindi avere molti più formati a tua disposizione. Sono sicuro che molti utenti di questo sito sarebbero interessati se seguissi questa strada.


13

Un nuovo formato che è nato di recente è il Geopackage . Questa specifica si basa sul database SQLite, quindi ha la stessa base per file singolo, ma con l'ulteriore vantaggio di essere uno standard OGC .
Per quanto riguarda le dimensioni del file, è probabile che il formato di archiviazione sia più compatto rispetto al formato .shpe .dbfper i dati spaziali e di attributo utilizzati nel file di forma. Pertanto, è probabile che il GeoPackage abbia le stesse dimensioni o dimensioni inferiori rispetto alla totalità delle stesse funzionalità in un file di forma.
Questa foto mostra una rete fognaria di San Diego salvata come Shapefile e GeoPackage. Come puoi vedere, hanno essenzialmente le stesse dimensioni. Shapefile vs Geopackage Size
Poiché questo formato è basato su SQLite, dovrebbe essere pronto per i dispositivi mobili. Molte app utilizzano già questo formato di database per l'archiviazione, quindi è una tecnologia collaudata. Può essere utilizzato su più piattaforme senza alcuna traduzione richiesta.


4

Concordo con Lennert, scegli il formato giusto per il lavoro.

Tuttavia ho trovato Spatialite un formato piuttosto versatile. Hai il singolo file che ti dà la flessibilità di archiviare e condividere i dati come un file di forma, ma annulli i problemi che menzioni con i limiti di carattere; dandoti l'opportunità di sfruttare i vantaggi di un database spaziale.

Sfortunatamente non è pienamente supportato in ArcGIS (non ci provo da un po ', quindi potrei sbagliarmi), ma funziona benissimo in QGIS.


4

Esistono molti formati diversi e il meglio dipende dal set di dati che hai, dagli strumenti che usi e dalle cose che vuoi fare con esso.

Alcuni di quelli che uso:

  • File Database di geodatabase e spazialite: una catchall che mi piace usare. Può contenere tutti i tipi di dati e avere relazioni, indicizzazione ... Uso gdb quando lavoro in un ambiente Esri, spatialite per qualsiasi altra cosa.

  • GeoJson: formato di facile lettura che utilizzo generalmente per piccoli set di dati che non richiedono molto in termini di indicizzazione

  • Database adeguati: tendo a usarlo per enormi set di dati e algoritmi complessi.

Ma ce ne sono tonnellate anche di altri.


3

Consiglierei di usare il database SQLite / spatiallite. È un singolo file come geodatabase (da una a molte tabelle / livelli all'interno) e può essere utilizzato in ArcGIS Desktop e QGIS.


Ho salvato i dati poligonali in sqlite e li ho caricati con QGIS, e ho ricevuto un messaggio che diceva "CRS non era definito: impostazione predefinita su CRS EPSG: 4326 - WGS84". Non perde informazioni sulla proiezione?
Ichiro,

Con quale software hai salvato il layer poligonale in sqlite?
artwork21

1

Le opzioni dipendono davvero dalla lingua che utilizzerai e dal modo in cui i dati verranno utilizzati. Molto probabilmente Android sarà Java. Ogni opzione sarà una sorta di confronto costi / benefici basato su quella decisione. Tutti i formati di dati sono ottimizzati per alcuni casi d'uso.

La domanda successiva è come verranno utilizzati i dati. L'app mobile leggerà solo i dati spaziali? O leggerà e scriverà frequentemente i dati? Con quale frequenza scambieranno dati con altri dispositivi o server?

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.