मैं बड़ी .kml फ़ाइलों (10 जीबी तक) के साथ काम कर रहा हूं और उन्हें आर में पढ़ने के लिए एक कुशल तरीके की आवश्यकता है। अब तक मैं उन्हें क्यूजीआईएस के माध्यम से आकार-प्रकार में परिवर्तित कर रहा हूं और फिर आर में पढ़ा जा सकता हूं। , वैसे, पूर्व की तुलना में ~ 1000 तेज है)। मैं आदर्श रूप से QGIS मध्यस्थ चरण को काटना चाहता हूं क्योंकि यह बोझिल और धीमा है।
सीधे पढ़ने के लिए .kml फ़ाइलें कैसे?
मैं देख रहा हूँ यह भी readOGR के साथ किया जा सकता है । दुर्भाग्य से, मैं यह नहीं देख सकता कि कैसे काम किए गए उदाहरण को लागू किया जाए (.kml फ़ाइल की लंबी तैयारी के बाद:) xx <- readOGR(paste(td, "cities.kml", sep="/"), "cities")
। ऐसा लगता है कि यहाँ "शहर" स्थानिक वस्तुओं का नाम है।
रोजर बिवांड मानते हैं कि "यह कैसे पता चलता है कि यह नाम स्पष्ट नहीं है, क्योंकि 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"