Dosya kullanarak coğrafi veritabanında özellik sınıfı okunuyor


27

Dışa aktarılan bir şekil dosyası olarak 2 GB'den büyük bir coğrafi veritabanında bulunan bir özelliğe sahibim. Çokgenleri bir raster dosyasındaki verilerle ilişkilendirmek için R'deki bir çıkarma işlevini çalıştırmam gerekiyor. Özelliğin bir tablo olarak dışa aktarılması bir çözüm değildir. Bir Esri dosyası coğrafi veritabanında bulunan özellik sınıflarını nasıl okuyabilirim?

Yanıtlar:


38

Esri dosya coğrafi veritabanlarındaki özellik sınıflarına erişmek için rgdal kullanabilirsiniz .

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
Önceden, bunu yalnızca ESRI filegeodatabase API'sini indirdiyseniz ve karşı GDAL'yi derlediyseniz yapabilirdiniz. GDAL'i kurmak için OSGeo4W kullanıyorsanız, bunu otomatik olarak yapma seçeneği vardır. Ancak, bu daha sonra GDAL sürümlerinde değişmiş olabilir ve şimdi doğal olabilir, bu yüzden yanlış yaparsam özür dilerim.
Jeffrey Evans

3
@JeffreyEvans Bu şimdi yerel.
Aaron

4
Pencereler için yerel olsa da, şu anda diğer platformlara (en azından Debian Jessie) dahil edilmemiş gibi görünüyor.
Cotton.Rockwood

1
+1 Güzel çalışıyor. layerGDB'de sadece bir özellik sınıfı olduğunda , argümanın atlanabileceğini bilmek yardımcı olur .
whuber

2
gdbDosyalar hakkında hiçbir şey bilmeyenler için , fgdbbu cevapta bir dizin var ve ogrListLayers()bu dizinde çalışıyor ...
MichaelChirico

2

Bu cevapta zaten yayınlandığı gibi , bu da şu şekilde çok iyi çalışıyor sf:

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

Ancak bir fgdb'ye yazılmadıysa ( henüz? ), Bir ArcGIS / ArcMap Lisansının yanı sıra R kütüphanesine sahip olmanız gerekir arcgisbinding(bkz. Https://github.com/R-ArcGIS/r-bridge ).

st_drivers()$write[st_drivers()$long_name == "ESRI FileGDB"]
#> [1] FALSE
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.