Open realalien opened 7 years ago
第四章 第9题
library(XML)
library(stringr)
library(maps)
doc <- xmlParse("cemetery_eg.KML")
# xpathSApply(doc, '//x:Placemark', namespaces= c(x = "http://www.opengis.net/kml/2.2"), process)
# xpathSApply(places, "//*[local-name()= 'placemark']", xmlValue) # NOTE: gives warning that returns NULL
cemeteries <- do.call(rbind, xpathApply(doc, '//x:Placemark', namespaces= c(x = "http://www.opengis.net/kml/2.2"), function(node) {
latlng <- xmlValue(xmlChildren(node[["Point"]])[["coordinates"]])
name <- xmlValue(node[["name"]])
lng <- as.numeric( sub(",","", str_extract(latlng, "(.*),")))
lat <- as.numeric( sub(",","", str_extract(latlng, ",(.*)")))
data.frame(name, lat, lng, stringsAsFactors = FALSE)
}))
## mapping
# NOTE: install.packages("mapdata") install.packages("maps")
library(maps)
library(mapdata)
#REF: https://www.students.ncl.ac.uk/keith.newman/r/maps-in-r#countries
map('worldHires',
c('UK', 'Ireland', 'Isle of Man','Isle of Wight', 'Wales:Anglesey'),
xlim=c(-11,3), ylim=c(49,60.9))
points(cemeteries$lng, cemeteries$lat, col = "red", cex = .05)
box()
大家可以参考一下。
比如第四章习题7(g),答案使用的是(f)的代码。这道题有些搞脑子,花了我一两个小时。 毕竟大家是在学习工具;当工具稍微复杂了点,就照葫芦画瓢吧,节省大家时间。