私は巨大な.kmlファイル(最大10 Gb)で作業しており、それらをRに読み込む効率的な方法が必要です。これまでは、QGISを介してシェープファイルに変換し、その後readShapePolyとreadOGR(後者ちなみに、前者よりも1000倍高速です)。面倒で時間がかかるため、QGIS中間段階を切り取りたいと考えています。
.kmlファイルを直接読み込む方法は?
私は、これはまた、readOGRで行うことができます参照します。残念ながら、実際の例を実装する方法はわかりません(.kmlファイルを長時間準備した後xx <- readOGR(paste(td, "cities.kml", sep="/"), "cities")
)。ここの「都市」は空間オブジェクトの名前のようです。
Roger Bivandは、「OGRのKMLドライバーはファイルにアクセスするためにこの名前を必要とするため、この名前の発見方法は明らかではありません。1つの可能性は次のとおりです。
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"