функция get_osm в osmar (R) выдает ошибку SSL

#r #osmar

#r #osmar

Вопрос:

Поскольку пару месяцев назад следующий код выполнялся без ошибок

    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)
  

теперь она выдает мне следующую ошибку

«Ошибка в функции (тип, сообщение об ошибке, asError = TRUE): ошибка: 1407742E: Процедуры SSL: SSL23_GET_SERVER_HELLO: версия протокола оповещения tlsv1»

Я не смог понять проблему. Я пытаюсь запустить код, используя два других компьютера с другой версией (более старой) R, но он все еще не работает.

У кого-нибудь есть возможное решение?

Заранее спасибо

Ответ №1:

У меня была такая же проблема. Подробно пакет OSMAR использует пакет RCurl для загрузки содержимого, которое каким-то образом использует старый стандарт шифрования. Вы можете устранить проблему, создав свой «собственный» пакет OSMAR с небольшими изменениями.

  • загрузка исходного кода пакета из CRAN:https://cran.r-project.org/web/packages/osmar/index.html
  • распакуйте ее
  • создайте файл проекта R в папке osmar, например, с помощью RStudio и нажмите создать проект
  • перейдите в файл ПРОСТРАНСТВА ИМЕН и добавьте строку
 import(curl)
  
  • добавьте пакет в файл Rget.R
 #' @import RCurl
#' @import XML
#' @import gtools
#' @import methods
#' @import Curl
  
  • и замените метод getURL из RCurl методом 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, чтобы использовать ее.

Это помогло в моем случае. Лучший Андреас Вайгерт