R语言调用osmdata_sf时出现curl::curl_fetch_memory() HTTP请求错误
解决osmdata包HTTP请求失败及主机名解析错误问题
问题分析
- 参数非法:
opq()函数的osm_types参数不存在"lines"这个合法取值,该参数仅支持node、way、relation三类,非法参数可能引发后续请求异常。 - 域名解析失败:默认调用的
overpass.kumi.systems服务器域名无法被DNS解析,导致无法建立与Overpass API的连接。
解决方案
步骤1:修正非法参数
将osm_types中的"lines"替换为合法值,若不需要关系(relation)类数据,也可直接省略该参数(默认会请求所有支持的OSM类型)。
步骤2:手动指定可用的Overpass服务器
使用set_overpass_url()函数切换到稳定可访问的Overpass API服务器,比如官方维护的节点。
修正后的完整代码
library(osmdata) # 设置可用的Overpass服务器 set_overpass_url("https://overpass-api.de/api/interpreter") # 获取目标区域边界 bb <- getbb('North Goa, India') # 构建并执行查询(修正osm_types参数) q <- opq(bbox = bb, osm_types = c("node", "way", "relation")) %>% add_osm_feature(key = 'highway') %>% osmdata_sf()
额外排查建议
- 先在浏览器中打开指定的Overpass服务器URL,确认本地网络可正常访问该节点。
- 若仍有连接问题,可尝试其他Overpass镜像服务器,比如
https://overpass.openstreetmap.fr/api/interpreter。
内容的提问来源于stack exchange,提问作者UseR10085
相关产品推荐
相关产品推荐

