You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

R语言调用here.com Isoline Routing生成等时线数据框失败问题

批量生成Here等时线失败的解决方案

针对使用hereR包批量处理点数据生成等时线时返回空数据框/仅含ID、报错行数不匹配的问题,可尝试以下解决方法:

  • 清理输入点数据
    确保输入的空间数据(sf对象)或坐标列无缺失值、无效几何:

    # 移除含缺失值的行
    points_clean <- na.omit(points)
    # 保留几何有效的行
    points_clean <- points_clean[sf::st_is_valid(points_clean), ]
    
  • 控制请求频率,避免触发限流
    Here免费账号有请求频次限制,批量请求易因限流返回空结果。可添加延迟或分批次处理:

    # 分批次处理,每批5个点,间隔1秒
    chunks <- split(points_clean, ceiling(seq_along(points_clean$id)/5))
    results_list <- lapply(chunks, function(chunk) {
      Sys.sleep(1)
      hereR::isoline(chunk, range = 300, range_type = "time", transport_mode = "car")
    })
    # 合并所有批次结果
    final_isolines <- do.call(rbind, results_list)
    
  • 确保ID列正确映射
    检查输入数据的ID列是否唯一、类型一致(推荐字符型),避免结果关联失败:

    # 将ID转为字符型,避免类型匹配问题
    points_clean$id <- as.character(points_clean$id)
    
  • 捕获单请求错误,定位问题点
    通过tryCatch捕获单个点的请求错误,排查具体失败的点:

    process_point <- function(row) {
      tryCatch({
        hereR::isoline(row, range = 300, range_type = "time", transport_mode = "car")
      }, error = function(e) {
        message(paste("ID", row$id, "请求失败:", e$message))
        return(NULL)
      })
    }
    # 逐个处理点并过滤空结果
    results_list <- lapply(seq(nrow(points_clean)), function(i) process_point(points_clean[i, ]))
    final_isolines <- do.call(rbind, Filter(Negate(is.null), results_list))
    

内容的提问来源于stack exchange,提问作者MelaniaCB

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 20:12:37