He tratado de ejecutar el código de codificación geográfica de ubicaciones en R a través de Google Maps y el paquete XML
de esta entrada del blog: http://www.r-chart.com/2010/07/maps-geocoding-and-r-user-conference.htmlgeocodificación en R con Google Maps
He aquí sus funciones:
getDocNodeVal=function(doc, path){
sapply(getNodeSet(doc, path), function(el) xmlValue(el))
}
gGeoCode=function(str){
library(XML)
u=paste('http://maps.google.com/maps/api/geocode/xml?sensor=false&address=',str)
doc = xmlTreeParse(u, useInternal=TRUE)
str=gsub(' ','%20',str)
lng=getDocNodeVal(doc, "/GeocodeResponse/result/geometry/location/lat")
lat=getDocNodeVal(doc, "/GeocodeResponse/result/geometry/location/lng")
c(lat,lng)
}
Cuando corro gGeoCode()
, me sale el siguiente error:
> gGeoCode("Philadelphia, PA")
failed to load external entity "http%3A//maps.google.com/maps/api/geocode/xml%3Fsensor=false&address=%20Philadelphia,%20PA"
Error: 1: failed to load external entity "http%3A//maps.google.com/maps/api/geocode/xml%3Fsensor=false&address=%20Philadelphia,%20PA"
Si tan sólo pegar en un navegador de la ur API l con Philadelphia, PA
añadido al final, como la cadena pasó a xmlParseTree
, obtengo un resultado que parece xml legítimo cuando lo descargo.
¿Esto es un problema con el código, o no he podido configurar algo?
Aside/off-topic: en lugar de str = gsub ('', '% 20', str), podría hacer str = URLencode (str). Solo comento aquí porque creo que es una función genial :) –
Sí, una función muy buena. Si solo funcionara! : -/ – JoFrhwld
la llamada json funciona, vea mi respuesta a continuación :) –