R을 사용하여 파일 지오 데이터베이스에서 기능 클래스를 읽습니까?


27

지오 데이터베이스에 내 보낸 shapefile로 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 파일 지오 데이터베이스 API를 다운로드하고 이에 대해 GDAL을 컴파일 한 경우에만이 작업을 수행 할 수있었습니다. OSGeo4W를 사용하여 GDAL을 설치하는 경우이를 자동으로 수행하는 옵션이 있습니다. 그러나 이것은 GDAL의 이후 릴리스에서 변경되었을 수 있으며 이제 기본이 될 수 있으므로 잘못되면 사과드립니다.
Jeffrey Evans

3
@JeffreyEvans 이것은 현재 네이티브입니다.
Aaron

4
윈도우 용이지만 기본적으로 다른 플랫폼 (적어도 데비안 제시)에는 포함되어 있지 않은 것 같습니다.
Cotton.Rockwood

1
+1 잘 작동합니다. layerGDB에 피쳐 클래스가 하나만 있으면 인수가 생략 될 수 있다는 것을 아는 데 도움이됩니다 .
whuber

2
에 대해 아무것도 모르는 사람들을 위해 gdb파일을 fgdb여기 대답 디렉토리입니다ogrListLayers()...이 디렉토리에서 작동
MichaelChirico

2

이 답변에 이미 게시 된 것처럼 이제 다음과도 매우 잘 작동합니다 sf.

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

그러나 fgdb에 쓰는 것은 아직 구현 되지 않았습니다 ( 아직? ). R 라이브러리뿐만 아니라 ArcGIS / ArcMap 라이센스가 있어야합니다 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.