#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, чтобы использовать ее.
Это помогло в моем случае. Лучший Андреас Вайгерт