Çok büyük .kml dosyalarıyla (10 Gb'ye kadar) çalışıyorum ve bunları R'ye okumak için etkili bir yola ihtiyacım var. Şimdiye kadar, onları QGIS üzerinden şekil dosyalarına, sonra da readShapePoly ve readOGR (R) ye geri döndüm. Bu arada, öncekinden ~ 1000 daha hızlıdır). İdeal olarak, QGIS ara aşamasını hantal ve yavaş olduğu için kesmek istiyorum.
Doğrudan .kml dosyaları nasıl okunur?
Bunun readOGR ile de yapılabileceğini görüyorum . Ne yazık ki, çalışılan örneğin nasıl uygulandığını göremiyorum (.kml dosyasının uzunca hazırlanmasından sonra:) xx <- readOGR(paste(td, "cities.kml", sep="/"), "cities")
. Görünüşe göre buradaki "şehirler" mekansal nesnelerin adı.
Roger Bivand, "OGR'nin KML sürücüsünün dosyaya erişmesi gerektiğinden, bu adın nasıl anlaşılacağı belli değil." Diyor.
system(paste("ogrinfo", paste(td, "cities.kml", sep="/")), intern=TRUE)
"
Ama bu benim için de işe yaramıyor. İşte denemek için bir test .kml dosyası. Benim çalışma dizinde, readOGR("x.kml", "id")
bu hata iletisini oluşturur:
Error in ogrInfo(dsn = dsn, layer = layer, encoding = encoding, use_iconv = use_iconv) :
Cannot open layer .
Ve system(paste("ogrinfo", "x.kml"), intern=TRUE)
üretir:
[1] "Had to open data source read-only." "INFO: Open of `x.kml'"
[3] " using driver `KML' successful." "1: x (3D Polygon)"
ki sadece anlamıyorum.
Misiniz getKMLcoordinates
{maptools} geçerli bir alternatif olabilir mi?
Bunu da denedim:
tkml <- getKMLcoordinates(kmlfile="x.kml", ignoreAltitude=T)
head(tkml[[1]])
tkml <- SpatialPolygons(tkml,
proj4string=CRS("+init=epsg:3857"))
Koordinatlar doğru üretildi, ancak onları bir çokgen nesnesine geri dönüştürme girişimim şu mesajla başarısız oldu:
Error in SpatialPolygons(tkml, proj4string = CRS("+init=epsg:3857")) :
cannot get a slot ("area") from an object of type "double"