geocode / google限制每天2500个请求或代码运行?

时间:2015-03-15 00:43:05

标签: r google-maps

建立在这一个之上: Plot USA map - big white triangle. FIXED. New: geocode limit of 2500 requests per day

我想在地图上标记广告/来电/等数量的城市 - 4900个地点的数据框。但是,Google会限制非商业用户每天使用2500次。还是一跑?如果我将数据集剪切为2500,我可以成功运行代码多次。那么规则是什么?

反正。你知道一个更优雅的解决方案,除了在较小(< = 2500)行的数据帧中破坏DF,制作一个地理点和拼接吗?

E.g。像那样,用伪数据。 (显然,我每天可以超过2500个限制,我跑了10次。)

state = rep("IL", 2500)
city  = rep("Chicago", 2500)
ads   = rep(15, 2500)

ads_df = data.frame(state,city,ads)
ads_df <- cbind(geocode(as.character(ads_df$city)), ads_df)

state= rep("FL", 2500)
city  = rep("Miami", 2500)
ads   = rep(15, 2500)

ads_df1 = data.frame(state,city,ads)
ads_df1 <- cbind(geocode(as.character(ads_df1$city)), ads_df1)

ads_df = rbind(ads_df,ads_df1)

plot(ggplot(US, aes(x=long, y=lat)) +
              geom_polygon(aes(group = group) ) +
              coord_map() + geom_point(data=ads_df, aes(x=lon, y=lat, size=ads), color="orange"))

1 个答案:

答案 0 :(得分:2)

这是一个完整的例子,也使用了正确的美国预测:

# devtools::install_github("hrbrmstr/localgeo")
library(localgeo)
library(ggplot2)
library(dplyr)

state <- c(rep("IL", 2500), rep("FL", 2500))
city <- c(rep("Chicago", 2500), rep("Miami", 2500))
ads <- c(rep(15, 2500), rep(15, 2500))

ads_df <- data.frame(state, city, ads, stringsAsFactors=FALSE)
ads_df <- bind_cols(ads_df, geocode(ads_df$city, ads_df$state))

us <- map_data("state")
us <- fortify(us, region="region")

# for theme_map
devtools::source_gist("33baa3a79c5cfef0f6df")

gg <- ggplot()
gg <- gg + geom_map(data=us, map=us,
                    aes(x=long, y=lat, map_id=region, group=group),
                    fill="#ffffff", color="#7f7f7f", size=0.25)
gg <- gg + geom_point(data=ads_df,
                      aes(x=lon, y=lat, size=ads), color="orange")
# life's too short for bad projections
gg <- gg + coord_map("albers", lat0=39, lat1=45)
gg <- gg + theme_map()
gg <- gg + theme(legend.position="bottom")
gg

enter image description here

请注意,此软件包不会完全替代API服务,并且不像诺基亚或Google那样对名称感到宽容。但是,当你达到API限制并拥有相当不错/干净的城市名称/数据时,它会有所帮助。