Читання класу функцій у базі даних геоданих за допомогою R?


27

У мене є функція, що міститься в базі даних геоданих, яка перевищує 2 ГБ як експортований файл форми. Мені потрібно запустити функцію вилучення в R, щоб віднести багатокутники до даних із растрового файлу. Експорт функції у вигляді таблиці не є рішенням. Як я можу читати класи функцій, що містяться у базі даних про географічну базу даних Esri?

Відповіді:


38

Ви можете використовувати rgdal для доступу до класів функцій у базах даних про файли 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
Раніше ви могли це зробити лише в тому випадку, якщо ви завантажили API файлових баз даних ESRI і компілювали GDAL проти нього. Якщо ви використовуєте OSGeo4W для встановлення GDAL, є можливість зробити це автоматично. Однак це може змінитися в пізніших випусках GDAL, і тепер воно може бути рідним, якщо я помиляюся, вибачаюся.
Джефрі Еванс

3
@JeffreyEvans Це зараз рідне.
Аарон

4
Незважаючи на те, що він рідний для Windows, він, схоже, наразі не включений для інших платформ (принаймні, Debian Jessie).
Cotton.Rockwood

1
+1 працює чудово. Це допомагає знати, що layerаргумент може бути опущений, коли у GDB є лише один клас функцій.
whuber

2
Для тих, хто нічого не знає про gdbфайли, fgdbу цій відповіді ось каталог і ogrListLayers()працює над цим каталогом ...
MichaelChirico

2

Як вже було розміщено у цій відповіді , це зараз також дуже добре працює з sf:

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

Але запис у fgdb ist не реалізований ( ще? ), Вам доведеться мати ліцензію ArcGIS / ArcMap, а також бібліотеку R arcgisbinding(див. Https://github.com/R-ArcGIS/r-bridge )

st_drivers()$write[st_drivers()$long_name == "ESRI FileGDB"]
#> [1] FALSE
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.