กำลังอ่านคลาสคุณลักษณะในฐานข้อมูลไฟล์โดยใช้ R?


27

ฉันมีคุณสมบัติที่มีอยู่ในฐานข้อมูลทางภูมิศาสตร์ที่มีขนาดใหญ่กว่า 2GB เป็นรูปร่างไฟล์ที่ส่งออก ฉันต้องการเรียกใช้ฟังก์ชันแยกใน 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
ก่อนหน้านี้คุณสามารถทำสิ่งนี้ได้ก็ต่อเมื่อคุณดาวน์โหลด ESRI filegeodatabase API และรวบรวม GDAL จากนั้น หากคุณใช้ OSGeo4W เพื่อติดตั้ง GDAL จะมีตัวเลือกให้ทำโดยอัตโนมัติ อย่างไรก็ตามสิ่งนี้อาจมีการเปลี่ยนแปลงในรุ่นที่ใหม่กว่าของ GDAL และตอนนี้อาจเป็นแบบดั้งเดิมดังนั้นหากฉันไม่ถูกต้องฉันขอโทษ
Jeffrey Evans

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 ไม่ได้ดำเนินการ ( ยัง? ) คุณจะต้องมีใบอนุญาต ArcGIS / ArcMap เช่นเดียวกับห้องสมุด R arcgisbinding(ดูhttps://github.com/R-ArcGIS/r-bridge )

st_drivers()$write[st_drivers()$long_name == "ESRI FileGDB"]
#> [1] FALSE
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.