Lesen von File-Geodatabase mit R?

12

File-Geodatabase (fgdb) enthält zahlreiche File-Geodatabase-Tabellen. Soweit ich weiß, existieren sie als dbfDateien, befinden sich aber innerhalb eines Database.gdb.

In ArcCatalog ähnelt der Dateipfad C:\Users\...\Database.gdb\Stats_AA.

Wie lese ich all diese dbfDateien ein R(eine Statistiksoftware)? Was ist der richtige Weg, um zu versorgen? Die verwendete Funktion ist read.dbf(im Fremdpaket).

Varianten von

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

und

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

arbeite nicht Wie lautet die richtige "Form" des zu verwendenden Dateinamens oder muss ich alle File-Geodatabase-Tabellen in eine andere Form oder einen anderen Speicherort exportieren?

Nan
quelle
1
Geodatabases speichern Geometrie in Blobfeldern, nicht in DBF (Shapefile jedoch).
Mapperz
1
Ich wollte vorschlagen, den Oledb-Provider von Esri für File-Geodatabases zu verwenden , es scheint jedoch, dass R Oledb nicht lesen kann . Vielleicht möchten Sie diese und auch diese Frage beantworten .
Kirk Kuykendall

Antworten:

4

Eine einfache Lösung besteht darin, Ihre Tabellen mit Table to dBase (multiple) zu exportieren (Klicken Sie mit der rechten Maustaste auf FGDB> Exportieren> To dBase (multiple). Mit diesem Tool können Sie auch Attributtabellen exportieren, die in FGDB-Feature-Classes enthalten sind. Ziehen Sie die Tabellen einfach per Drag & Drop und / oder Feature-Classes in das Tool ein und geben Sie einen Ausgabeordner an. Natürlich können Sie dann den Ordner mit den neuen dBase-Dateien mit R durchlaufen.

Bildbeschreibung hier eingeben

Bildbeschreibung hier eingeben

Aaron
quelle
Dies funktioniert - mein Dropdown-Menü sieht nicht gleich aus (es tut mir leid, ich verstehe ArcMap-Dateisysteme nicht vollständig), aber ich habe festgestellt, dass ich Tabellen exportieren kann, indem ich im Inhaltsverzeichnis mit der rechten Maustaste auf den Tabelleneintrag selbst klicke Generieren Sie eine lesbare DBF-Datei. Vielen Dank!
Nan
9

File-Geodatabases speichern ihre Daten nicht wie Shapefiles als DBF. FGDBs verwenden ihre eigene interne Speichermethode.

ESRI hat eine API veröffentlicht. Wenn Sie sie zum Kompilieren von GDAL mit File-Geodatabase-Unterstützung verwenden, können Sie möglicherweise die GDAL-Plugins von R verwenden, um auf diese Weise auf Ihre Daten zuzugreifen. Die einfachste Lösung ist jedoch wahrscheinlich die Konvertierung Ihrer Daten in Shapefile. Dann können Sie die dbf-Tools von R verwenden.

HeyOverThere
quelle
Oder exportieren Sie einfach die Attributtabelle als DBF, anstatt die gesamte Feature-Class zu konvertieren.
Baltok
1
Oh das stimmt! Sie können auch die Xtools-Symbolleiste verwenden, um die Attributtabelle direkt nach Excel zu exportieren. Die kostenlose Version der Symbolleiste enthält die Excel-Exportfunktion. xtoolspro.com
HeyOverThere
@ HeyOverThere- danke, dass Sie darauf hingewiesen haben, dass Sie richtig liegen. Diese Tabellen sind "File Geodatabase Tables", was erklärt, warum ich sie nicht als DBF-Dateien gefunden habe. Ich gehe zum Exportansatz von Aaron über, aber das Konvertieren aller meiner Daten in Shapefiles wäre zeitaufwändiger.
Nan
Der API-Link scheint nicht mehr zu funktionieren. Könnten Sie es bitte aktualisieren?
Aaron
Sieht so aus, als hätte ESRI Hausputz gemacht. Der Link wurde aktualisiert, um auf den neuen Ort zu verweisen
HeyOverThere
4

Ich bin auf dasselbe Problem gestoßen. Meiner Meinung nach ist es unbequem, ArcMap zu verwenden. Stattdessen habe ich Python aus R mit dem folgenden Code aufgerufen. Leider müssen Sie Arcpy haben.

Python-Skript:

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)

R-Code:

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))) 

Mit dem obigen Befehl wird ein Shapefile aus einer Geodatabase ausgegeben. Anschließend müssen Sie es in R importieren.

user44796
quelle