【发布时间】:2016-05-24 18:04:09
【问题描述】:
除了 EST 中的时间戳之外,我还有大约 900 万条经纬度记录。我想使用纬度和经度来生成适当的区域时区,然后我想根据相关时区调整所有这些时间。
我尝试过使用地名
data_raw$tz <- mapply(GNtimezone, data$lat,data$lon)
但是,这会返回以下错误:
Error in getJson("timezoneJSON", list(lat = lat, lng = lng, radius = 0)) :
error code 13 from server: ERROR: canceling statement due to statement timeout
我尝试使用this post中描述的方法。
data$tz_url <- sprintf("https://maps.googleapis.com/maps/api/timezone/%s?location=%s,%s×tamp=%d&sensor=%s",
"xml",
data$lat,
data$lon,
as.numeric(data$time),
"false")
for(i in 1:100){
data$tz[i] <- xmlParse(readLines(data$tz_url[i]), isURL=TRUE)[["string(//time_zone_name)"]]
}
通过这种方法,我可以获取 XML 数据的 url。但是当我尝试在 for 循环中提取 XML 数据并将时区附加到数据帧时,它并没有对所有记录都这样做......(实际上,一次只有 10 条记录间歇性地)。
有没有人知道任何替代方法或包可以相对快速地获得大约 900 万条记录的三个字符时区(即 EST)?非常感谢您的帮助。或者更好的是,如果您对我上面使用的代码为什么不起作用有任何想法,我也将不胜感激。
【问题讨论】:
-
如果您正在寻找一个通用时区,您是否考虑从经度计算它? 24小时360度。根据您的需要,它可能足够接近。
标签: r xml google-maps timezone