You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用R的osmdata包获取OpenStreetMap的relation层级数据?

解决osmdata包无法获取OSM Relation数据的问题

核心问题原因

osmdata包默认不会返回Relation的完整结构及其关联成员,默认参数members = FALSE会导致仅获取Relation关联的零散点/线/面元素,而无法拿到osm_relation数据集。

解决方案代码

方案1:精准查询指定Relation ID

直接通过目标Relation ID查询,效率更高:

# 直接查询目标relation(ID:15019644)
y <- opq_osm_id(type = "relation", id = 15019644) %>%
  osmdata_sf(members = TRUE) # 关键参数:获取relation的成员及完整结构

方案2:范围查询时过滤并获取Relation

如果需要查询爱尔兰范围内所有plant:source=wind的Relation,调整代码如下:

bbx <- getbb("Ireland")
y <- bbx %>%
  opq(timeout = 25*100) %>%
  add_osm_feature(key = "type", value = "multipolygon") %>% # 匹配目标relation的type标签
  add_osm_feature(key = "plant:source", value = "wind") %>%
  osmdata_sf(members = TRUE) # 开启成员获取

验证结果

执行代码后,通过y$osm_relation即可查看获取到的Relation数据,y$osm_multipolygon等数据集会包含该Relation关联的几何元素。

内容的提问来源于stack exchange,提问作者user1966593

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.20 18:43:12