0

自几个月前以来,以下代码运行无误

   library(osmar)
   src <- osmsource_api(url = "https://api.openstreetmap.org/api/0.6/")
   bb <- corner_bbox(13.3,40.79,13.5,40.81)
   ua <- get_osm(bb, source = src)

现在它给了我以下错误

“函数错误(类型,msg,asError = TRUE):错误:1407742E:SSL 例程:SSL23_GET_SERVER_HELLO:tlsv1 警报协议版本”

我没能理解这个问题。我尝试使用其他两台具有不同版本(旧)R 的计算机运行代码,但它仍然无法正常工作。

任何人都有可能的解决方案?

提前致谢

4

1 回答 1

1

我遇到过同样的问题。详细地说,OSMAR 包使用包RCurl来加载使用某种旧加密标准的内容。您可以通过构建您的“自己的”OSMAR 软件包并稍作修改来解决此问题。

import(curl)
  • 在文件 R\get.R 中添加包
#' @import RCurl
#' @import XML
#' @import gtools
#' @import methods
#' @import Curl
  • 并将RCurl中的getURL方法与curl中的curl方法交换
get_osm_data.api <- function(source, what, ...) {
  request <- osm_request(source, what, ...)
  #response <- getURL(request, .encoding = "UTF-8")
  response <- paste(readLines(curl::curl(request)), collapse = "")
}
  • 最后你可以构建包了。重新启动 RStudio / 你的 R 环境以使用它。

这对我有帮助。最佳安德烈亚斯·韦格特

于 2020-09-15T11:58:03.503 回答