我想使用R中包geocode
中的函数ggmap
但是我无法在R文档中运行示例代码:
geocode("houston texas", output = "more")
结果是:
Information from URL : http://maps.googleapis.com/maps/api/geocode/json?address=houston%20texas&sensor=false
Error in fromJSON(paste(lines, collapse = "")) : unexpected character '<'
我想知道这是fromJSON
的问题,所以我下载了JSON文件(如abcd.json),然后将其导入R:
data <- fromJSON(file="abcd.json")
它有效。
但是当我这样做时:
theurl <- "http://maps.googleapis.com/maps/api/geocode/json?address=houston%20texas&sensor=false"
data <- fromJSON(file=theurl)
它返回相同的错误:
Error in fromJSON(paste(lines, collapse = "")) : unexpected character '<'
我与rjson
一起尝试了RJSONIO
和Rcurl
。无论如何都会返回错误。
相关信息:
答案 0 :(得分:0)
鉴于无效字符为<
,您可能会提取某种HTML错误消息。直接提取数据URL会让您确定:
theurl <- "http://maps.googleapis.com/maps/api/geocode/json?address=houston%20texas&sensor=false"
jsondata <- fread(theurl)
cat(jsondata)
我建议您尝试使用HTTPS链接,但这可能会解决问题(除非它是伟大的防火墙。)
答案 1 :(得分:0)
我选择使用工具箱JSONlab转向Matlab。
其余代码的一般概念与geocode()
它有效。
对于那些位于中国大陆的人/学院,R包ggmap
中的许多功能都不可用(由于防火墙)。使用包geoChina
来代替您的项目。百度API可在geoChina
中找到。它比中国的谷歌地图API更快。
此外,如果您的数据非常大,
result <- apply(data, 1, geocode)
可能会返回错误。建议Matlab处理相对较大的数据。