已联网时使用R的osmdata包仍报Overpass查询无网络错误如何解决
排查解决思路
- 首先运行
osmdata:::has_internet()查看osmdata内置的网络检测结果。该包自行实现了网络检测逻辑,和R默认、rvest等包的网络判断逻辑无关,如果返回FALSE,说明检测逻辑误判。 - 手动测试Overpass服务连通性:运行
curl::curl_fetch_memory("https://overpass-api.de/api/interpreter"),查看返回的状态码是否为200。如果访问失败,说明你的网络环境虽然可访问CRAN等站点,但被防火墙/地区限制阻断了Overpass官方服务的访问,可尝试更换其他公开Overpass镜像端点,在opq函数中通过base_url参数指定即可。 - 强制指定osmdata使用curl进行网络请求:运行
Sys.setenv(OSM_USE_CURL = "TRUE"),跳过部分内置检测逻辑,再重新执行查询代码。 - 排查系统证书问题:Linux环境下如果证书配置异常会导致https访问失败,可先在终端执行
sudo apt update && sudo apt install ca-certificates更新系统根证书,再重启R会话测试。 - 清空osmdata本地缓存:运行
osmdata::osmdata_clear_cache()清除残留的异常缓存状态后重试。
内容的提问来源于stack exchange,提问作者Bahman Ajdari
相关产品推荐
相关产品推荐

