나는 거대한 .kml 파일 (최대 10Gb)로 작업하고 있으며 R로 읽을 수있는 효율적인 방법이 필요합니다. 지금까지 QGIS를 통해 shapefiles로 변환 한 다음 readShapePoly 및 readOGR (후자)을 사용하여 R로 다시 변환했습니다 그건 그렇고, 전자보다 ~ 1000 빠릅니다). QGIS 중개 단계가 번거롭고 느리기 때문에 잘라내는 것이 이상적입니다.
.kml 파일을 직접 읽는 방법은 무엇입니까?
나는 이 또한 readOGR와 함께 할 수 있습니다 참조 . 불행히도 (.kml 파일을 오랜 시간 준비한 후) 작동하는 예제를 구현하는 방법을 알 수 없습니다 xx <- readOGR(paste(td, "cities.kml", sep="/"), "cities")
. 여기서 "도시"는 공간 객체의 이름 인 것 같습니다.
Roger Bivand는 OGR의 KML 드라이버가 파일에 액세스해야하기 때문에이 이름을 발견하는 방법은 분명하지 않습니다. 한 가지 가능성은 다음과 같습니다.
system(paste("ogrinfo", paste(td, "cities.kml", sep="/")), intern=TRUE)
"
그러나 이것은 나에게도 효과가 없습니다. 다음은 테스트 .kml 파일입니다. 내 작업 디렉토리 readOGR("x.kml", "id")
에이 오류 메시지가 생성됩니다.
Error in ogrInfo(dsn = dsn, layer = layer, encoding = encoding, use_iconv = use_iconv) :
Cannot open layer .
그리고 다음을 system(paste("ogrinfo", "x.kml"), intern=TRUE)
생성합니다.
[1] "Had to open data source read-only." "INFO: Open of `x.kml'"
[3] " using driver `KML' successful." "1: x (3D Polygon)"
이해가 안됩니다.
겠습니까 getKMLcoordinates
{maptools}는 유효한 대안이 될?
나는 또한 이것을 시도했다 :
tkml <- getKMLcoordinates(kmlfile="x.kml", ignoreAltitude=T)
head(tkml[[1]])
tkml <- SpatialPolygons(tkml,
proj4string=CRS("+init=epsg:3857"))
좌표가 올바르게 생성되었지만 다각형 메시지로 다시 변환하려는 시도가 다음 메시지와 함께 실패했습니다.
Error in SpatialPolygons(tkml, proj4string = CRS("+init=epsg:3857")) :
cannot get a slot ("area") from an object of type "double"