Lettura della feature class nel file geodatabase usando R?


27

Ho una funzione contenuta in un geodatabase di dimensioni superiori a 2 GB come file di forma esportato. Devo eseguire una funzione di estrazione in R per attribuire ai poligoni i dati di un file raster. L'esportazione della funzione come tabella non è una soluzione. Come posso leggere le classi di funzionalità contenute in un geodatabase di file Esri?

Risposte:


38

È possibile utilizzare rgdal per accedere alle classi di entità geografiche nei database di file Esri.

require(rgdal)

# The input file geodatabase
fgdb <- "C:/path/to/your/filegeodatabase.gdb"

# List all feature classes in a file geodatabase
subset(ogrDrivers(), grepl("GDB", name))
fc_list <- ogrListLayers(fgdb)
print(fc_list)

# Read the feature class
fc <- readOGR(dsn=fgdb,layer="some_featureclass")

# Determine the FC extent, projection, and attribute information
summary(fc)

# View the feature class
plot(fc)

2
In precedenza, era possibile farlo solo se si scaricava l'API filegeodatabase ESRI e si compilava GDAL su di essa. Se usi OSGeo4W per installare GDAL c'è un'opzione per farlo automaticamente. Tuttavia, questo potrebbe essere cambiato nelle versioni successive di GDAL e ora potrebbe essere nativo, quindi, se non sono corretto, mi scuso.
Jeffrey Evans,

3
@JeffreyEvans Questo è nativo ora.
Aaron

4
Sebbene sia nativo per Windows, non sembra essere attualmente incluso per altre piattaforme (almeno Debian Jessie).
Cotton.Rockwood

1
+1 Funziona bene. Aiuta a sapere che l' layerargomento può essere omesso quando c'è solo una classe di caratteristiche nel GDB.
whuber

2
Per coloro che non sanno nulla dei gdbfile, fgdbin questa risposta ecco una directory e ogrListLayers()lavora su questa directory ...
MichaelChirico,

2

Come già pubblicato in questa risposta , ora funziona anche molto bene con sf:

require(sf)
fc <- sf::st_read("C:/path/to/your/filegeodatabase.gdb", layer = "some_featureclass")

Ma scrivere in un fgdb non è implementato ( ancora? ), Dovresti avere una licenza ArcGIS / ArcMap e la libreria R arcgisbinding(vedi https://github.com/R-ArcGIS/r-bridge )

st_drivers()$write[st_drivers()$long_name == "ESRI FileGDB"]
#> [1] FALSE
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.