Leggendo il file geodatabase usando R?


12

Il file geodatabase (fgdb) include numerose tabelle di file geodatabase. Per quanto ne so, esistono come dbffile, ma si trovano all'interno di un file Database.gdb.

In ArcCatalog, il percorso del file è simile C:\Users\...\Database.gdb\Stats_AA.

Come leggere tutti questi dbffile in R(un software statistico)? Qual è il percorso corretto da fornire? La funzione utilizzata è read.dbf(nel pacchetto estero).

Varianti di

test<-read.dbf(file="C:/Users..Database.gdb/Stats_AA.dbf") 

e

test<-read.dbf(file="C:/Users..Database/Stats_AA.dbf") 

non funziona. Qual è la "forma" corretta del nome del file da utilizzare o devo esportare tutte le tabelle di geodatabase dei file in un'altra forma o posizione?


1
i geodatabase memorizzano la geometria nei campi BLOB non dbf (ma lo fa shapefile).
Mapperz

1
Stavo per suggerire di usare il provider oledb di Esri per i file geodatabase , tuttavia sembra che R non possa leggere oledb . Potrebbe voler votare quella domanda, e anche questa .
Kirk Kuykendall,

Risposte:


4

Una soluzione semplice consiste nell'utilizzare la tabella in dBase (più) per esportare le tabelle (fare clic con il pulsante destro del mouse su FGDB> Esporta> in dBase (più). È inoltre possibile utilizzare questo strumento per esportare le tabelle degli attributi contenute nelle classi di entità FGDB. Basta trascinare le tabelle e o classi di funzionalità nello strumento e specificare una cartella di output. Naturalmente, è possibile scorrere la cartella contenente i nuovi file dBase utilizzando R.

inserisci qui la descrizione dell'immagine

inserisci qui la descrizione dell'immagine


Funziona- il mio menu a discesa non ha lo stesso aspetto (mi dispiace, non capisco perfettamente i file system ArcMap) ma ho scoperto che posso esportare le tabelle facendo clic con il tasto destro sulla voce della tabella stessa nel Sommario e genera un file .dbf leggibile. Grazie!
Nan,

9

I file geodatabase non memorizzano i loro dati come dbf, lo fanno gli shapefile. Gli FGDB utilizzano il proprio metodo di archiviazione interno.

ESRI ha pubblicato un'API , se la usi per compilare GDAL con il supporto del geodatabase di file potresti essere in grado di usare i plugin gdal di R per ottenere l'accesso ai tuoi dati in quel modo. Tuttavia, la soluzione più semplice è probabilmente convertire i tuoi dati in shapefile, quindi puoi usare gli strumenti dbf di R.


O semplicemente esporta la tabella degli attributi come dbf anziché convertire l'intera classe di caratteristiche.
Baltok,

1
Oh è vero! Puoi anche usare la barra degli strumenti Xtools per esportare la tabella degli attributi direttamente in Excel. La versione gratuita della barra degli strumenti include l'abilità di esportazione di Excel. xtoolspro.com
HeyOverCi è il

@ HeyOverThere- grazie per averlo sottolineato, hai ragione- queste tabelle sono "Tabelle di geodatabase di file" che spiegano perché non sono riuscito a trovarle come file .dbf. Vado con l'approccio di esportazione di Aaron, tuttavia, la conversione di tutti i miei dati in shapefile richiederebbe più tempo.
Nan,

Il collegamento API sembra essere morto. Potresti aggiornarlo, per favore?
Aaron

Sembra che ESRI abbia fatto delle pulizie domestiche. Il link è aggiornato per puntare alla nuova posizione
HeyOverThere

4

Ho riscontrato lo stesso problema. Secondo me, è scomodo usare ArcMap. Invece, ho invocato Python da R usando il seguente codice. Sfortunatamente, devi avere Arcpy.

Script Python:

import os,sys
import arcpy
from arcpy import env
from sys import argv ### This is needed to import variables

script, featureClass, inFeatures, outLocation, outFeatureClass = argv
env.workspace = featureClass ### set working directory
arcpy.FeatureClassToFeatureClass_conversion(inFeatures, outLocation,outFeatureClass)

Codice R:

script = "./Path To Python Script/Example.py"
featureClass = './Path To Geodatabase/Example.gdb'
inFeatures = "featureClass"
outLocation = "./Path To Outfile Location"
outFeatureClass = "test.shp"
system2('python', args = c(shQuote(script),shQuote(featureClass),shQuote(inFeatures),shQuote(outLocation),shQuote(outFeatureClass))) 

Quanto sopra genererà uno shapefile da un geodatabase, quindi dovrai importare in R.

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.