Ich versuche, eine Tabelle direkt aus einer ESRI-File-Geodatabase in R zu lesen. Eine Beispieldatendatei kann hier heruntergeladen werden . Die Datenbank enthält eine Point-Feature-Class (Zone9_2014_01_Broadcast) und zwei verknüpfte Tabellen (Zone9_2014_01_Vessel und Zone9_2014_01_Voyage). Sie können das Shapefile in R mit dem folgenden Befehl readOGR
aus dem rgeos
Paket lesen :
library(rgeos)
library(downloader)
download("https://coast.noaa.gov/htdata/CMSP/AISDataHandler/2014/01/Zone9_2014_01.zip", dest="Zone9_2014_01.zip", mode="wb")
unzip("Zone9_2014_01.zip", exdir = ".")
# Not Run (loads large point file)
# broadcast <- readOGR(dsn = "Zone9_2014_01.gdb", layer = "Zone9_2014_01_Broadcast")
Die beiden verknüpften Tabellen zeigen auch, wann Sie ogrListLayers
oder verwenden ogrInfo
. Es ogrInfo
gibt jedoch eine Warnung:
Warnmeldung: In ogrInfo ("Zone9_2014_01.gdb", Layer = "Zone9_2014_01_Vessel"): ogrInfo: Alle Funktionen NULL
Und wenn Sie versuchen, readOGR
auf den Tabellen zu verwenden, erhalten Sie eine Fehlermeldung:
vessel <- readOGR(dsn = "Zone9_2014_01.gdb", layer = "Zone9_2014_01_Vessel")
Fehler in readOGR (dsn = "Zone9_2014_01.gdb", layer = "Zone9_2014_01_Vessel"): Keine Features gefunden Zusätzlich: Warnmeldung: In ogrInfo (dsn = dsn, layer = layer, encoding = encoding, use_iconv = use_iconv,: ogrInfo: Alle Funktionen NULL
Somit scheint es, dass nur geografische Merkmale von readOGR gelesen werden können. Gibt es eine Möglichkeit, die Tabellen direkt in R zu importieren, oder ist dies die einzige Lösung, um sie zuerst aus ArcGIS als * .dbf- (oder * .txt-) Dateien zu exportieren, wie in dieser Antwort angegeben?
Wenn außerdem jemand Aufrufe von R an ein Python-Skript senden kann, das den Export von * csv- (vorzugsweise) oder * .dbf-Dateien automatisiert, ist dies eine akzeptable Lösung. Die Lösung muss nur skalierbar und automatisiert sein.
quelle
arcgisbbinding
in R verwenden. Die Funktionarc.open()
öffnet die Tabelle alsarc.dataset-class object
.data.table
Verwenden Sie die Funktion, um direkt als zu öffnenarc.select
.Antworten:
Ich bin ein bisschen zu spät zur Party, aber das kann jetzt gelesen werden von
sf
, mitEs wird eine Warnung zurückgegeben (keine Feature-Geometrien vorhanden), aber auch ein data.frame mit der Tabelle. Siehe den Thread, der hier begonnen hat: https://stat.ethz.ch/pipermail/r-sig-geo/2018-February/026344.html
quelle
sf
Lösung gesucht und Google hat mich glücklich mit einer super hilfreichen Lösung zu derselben Party zurückgebracht (daher habe ich dieser Frage meine positive Bewertung hinzugefügt).Ich verwende GDAL 2.0.2, das mit FDGB-Unterstützung "ausgeliefert" wird, und ohne einen Drittanbieter einen FGDB-Treiber , um dieses Zeug zu untersuchen. Die Testumgebung ist Debian Jessie 64-Bit.
Kurz gesagt, es scheint, dass die "Ebene"
Zone9_2014_01_Vessel
reine Attributdaten enthält und die EbeneZone9_2014_01_Broadcast
Positionsdaten enthält. Sie können eine Problemumgehung in R über einen Systemaufruf und die Konversation der GDB mit einem Shapefile-Container (letztes Skript am Ende der Antwort) verwenden.Hier sind die Untersuchungsschritte:
Wie Sie sehen, ist das Feld auf
Geometry
eingestelltNone
. Sie können die Daten mit inogr2ogr
eine Formdatei konvertieren und erhalten auch nur eine Datenbankattributdatei:Geometrien (Positionen) können in der Ebene gefunden werden
Zone9_2014_01_Broadcast
.Schiff und Reise, die keine Positionsdaten gemäß dem AIS-Nachrichtenprotokoll enthalten .
Hier die vollständige Problemumgehung in R unter Verwendung eines Systemaufrufs, damit die GDB die Konversation formt und das Paket
foreign
die DBFs liest:quelle
Nicht sicher, ob Sie dies mit readOGR tun können, aber versuchen Sie es
Wenn dies nicht funktioniert, versuchen Sie es
ogr2ogr
direkt. Dadurch können Nicht-Geometrien in eine Tabelle exportiert werden. (Vielleicht versuchen Sie R-PaketgdalUtils
, um das auszuführen, sobald Sie Ihren Prozess heruntergefahren haben.)quelle
readOGR
hat nicht die Fähigkeit, GDB-Tabellen zu lesen.Es gibt eine kürzlich veröffentlichte Integration zwischen R und ArcGIS von Esri, R ArcGIS Tools . Es bietet eine Integration zwischen R und ArcGIS und ermöglicht den austauschbaren Zugriff auf R-Tools und ArcGIS-Ressourcen. Mit dieser Integration sollten Sie auf Geodatabase-Feature-Classes / -Tabellen zugreifen können.
Probe R - Tools zur Verfügung hier und Beispiel Tools darstellt , R Nutzung Skripte in Geoverarbeitungs sind hier .
quelle
Diese benutzerdefinierte Funktion folgt im Wesentlichen dem von @huckfinn angegebenen Pfad, verwendet jedoch die
gdalUtils
von @mdsumner vorgeschlagene Bibliothek.Führen Sie es so aus:
Wenn Sie es noch nicht
gdal
installiert haben, müssen Sie es installieren, um auf es zugreifen zu könnengdalUtils
. Sie können Binärdateien und Anweisungen für die ‚gdal‘ Installation finden hier .quelle