Saya sedang bekerja dengan file .kml besar (hingga 10 Gb) dan perlu cara yang efisien untuk membacanya menjadi R. Sampai sekarang saya telah mengonversinya menjadi shapefile melalui QGIS dan kemudian kembali ke R dengan readShapePoly dan readOGR (yang terakhir , omong-omong, ~ 1000 lebih cepat dari yang sebelumnya). Saya idealnya ingin memotong tahap perantara QGIS karena rumit dan lambat.
Bagaimana cara membaca file .kml secara langsung?
Saya melihat ini bisa juga dilakukan dengan readOGR . Sayangnya, saya tidak bisa melihat bagaimana menerapkan contoh yang dikerjakan (setelah persiapan panjang file .kml:) xx <- readOGR(paste(td, "cities.kml", sep="/"), "cities")
. Tampaknya "kota" di sini adalah nama objek spasial.
Roger Bivand mengakui bahwa "Bagaimana seseorang menemukan nama ini tidak jelas, karena driver KML di OGR membutuhkannya untuk mengakses file. Salah satu kemungkinan adalah:
system(paste("ogrinfo", paste(td, "cities.kml", sep="/")), intern=TRUE)
"
Tapi ini juga tidak berhasil untukku. Berikut ini file uji .kml untuk dicoba. Dengan itu di direktori kerja saya, readOGR("x.kml", "id")
menghasilkan pesan kesalahan ini:
Error in ogrInfo(dsn = dsn, layer = layer, encoding = encoding, use_iconv = use_iconv) :
Cannot open layer .
Dan system(paste("ogrinfo", "x.kml"), intern=TRUE)
menghasilkan:
[1] "Had to open data source read-only." "INFO: Open of `x.kml'"
[3] " using driver `KML' successful." "1: x (3D Polygon)"
, yang saya tidak mengerti.
Apakah getKMLcoordinates
{maptools} menjadi alternatif yang valid?
Saya juga sudah mencoba ini:
tkml <- getKMLcoordinates(kmlfile="x.kml", ignoreAltitude=T)
head(tkml[[1]])
tkml <- SpatialPolygons(tkml,
proj4string=CRS("+init=epsg:3857"))
Koordinat dihasilkan dengan benar, tetapi upaya saya untuk mengubahnya kembali menjadi objek poligon gagal dengan pesan berikut:
Error in SpatialPolygons(tkml, proj4string = CRS("+init=epsg:3857")) :
cannot get a slot ("area") from an object of type "double"