Đọc lớp tính năng trong tập tin cơ sở dữ liệu địa lý bằng R?


27

Tôi có một tính năng chứa trong cơ sở dữ liệu địa lý lớn hơn 2GB dưới dạng shapefile xuất khẩu. Tôi cần chạy một hàm trích xuất trong R để gán các đa giác với dữ liệu từ tệp raster. Xuất khẩu tính năng dưới dạng bảng không phải là một giải pháp. Làm cách nào tôi có thể đọc các lớp đối tượng có trong cơ sở dữ liệu địa lý tệp Esri?

Câu trả lời:


38

Bạn có thể sử dụng rgdal để truy cập các lớp tính năng trong cơ sở dữ liệu địa lý tệp 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
Trước đây, bạn chỉ có thể làm điều này nếu bạn đã tải xuống API cơ sở dữ liệu ESRI và biên dịch GDAL chống lại nó. Nếu bạn sử dụng OSGeo4W để cài đặt GDAL, có một tùy chọn để thực hiện việc này một cách tự động. Tuy nhiên, điều này có thể đã thay đổi trong các bản phát hành sau của GDAL và bây giờ nó có thể là bản địa vì vậy, nếu tôi không chính xác, tôi xin lỗi.
Jeffrey Evans

3
@JeffreyEvans Đây là bản địa bây giờ.
Aaron

4
Mặc dù nó có nguồn gốc cho các cửa sổ, nhưng dường như hiện tại nó không được bao gồm cho các nền tảng khác (ít nhất là Debian Jessie).
Cotton.Rockwood

1
+1 Hoạt động độc đáo. Nó giúp biết rằng layerđối số có thể được bỏ qua khi chỉ có một lớp tính năng trong GDB.
whuber

2
Đối với những người không biết gì về gdbcác tập tin, fgdbtrong câu trả lời này, đây là một thư mụcogrListLayers()hoạt động trên thư mục này ...
MichaelChirico 7/12/18

2

Như đã được đăng trong câu trả lời này, giờ đây nó cũng hoạt động rất độc đáo với sf:

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

Nhưng viết vào fgdb ist chưa được triển khai ( chưa? ), Bạn phải có Giấy phép ArcGIS / ArcMap cũng như thư viện R arcgisbinding(xem https://github.com/R-ArcGIS/r-bridge )

st_drivers()$write[st_drivers()$long_name == "ESRI FileGDB"]
#> [1] FALSE
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.