如何在R中循环遍历CSV数据行,逐行调用谷歌街景接口获取对应图片
实现方案
前置准备
googleway调用街景接口需要提前配置谷歌地图API密钥,且需要确保密钥已经开通Street View Static API权限,否则会出现请求失败问题。
完整实现代码
library(googleway) # 配置你的谷歌地图API密钥 set_key("你自己的谷歌地图API密钥") # 1. 读取CSV坐标文件,sep参数根据你的CSV实际分隔符调整:逗号分隔填",",空格/制表符分隔填"" df_coords <- read.csv("你的坐标CSV文件完整路径.csv", stringsAsFactors = FALSE) # 2. 配置图片保存路径,提前在对应位置创建好保存文件夹 save_folder <- "./google_streetview_imgs/" # 3. 遍历所有坐标批量拉取街景 for (row_idx in 1:nrow(df_coords)) { # 取出当前行的经纬度 current_lat <- df_coords$lat[row_idx] current_lon <- df_coords$lon[row_idx] # 生成当前点位图片的保存路径,用行号+经纬度命名避免重名覆盖 save_path <- paste0(save_folder, "sv_", row_idx, "_lat", current_lat, "_lon", current_lon, ".png") # 错误捕获:单个点位无街景/请求失败不会中断整体任务 tryCatch({ # 调用街景接口 sv_img <- google_streetview( location = c(current_lat, current_lon), size = c(600, 400) ) # 保存图片到本地 writeBin(sv_img, save_path) # 打印进度方便追踪 cat("已完成:第", row_idx, "/", nrow(df_coords), "个点位\n") }, error = function(err) { cat("拉取失败:第", row_idx, "个点位,错误原因:", err$message, "\n") }) }
注意事项
- 20000次街景请求会产生谷歌API调用费用,提前确认你的账户配额和计费规则,避免超额扣费
- 如果需要控制请求频率避免被接口限流,可以在循环末尾添加
Sys.sleep(1),参数数字代表每次请求间隔的秒数 - 跑全量任务前可以先把循环条件改成
for (row_idx in 1:3),测试前3个点位确认逻辑正常后再运行全量
内容的提问来源于stack exchange,提问作者HelpMe
相关产品推荐
相关产品推荐

