使用get_osm {osmar}在R中使用Open Street Map

时间:2012-01-23 23:07:25

标签: r openstreetmap osmar

我想附加一系列相关的方法并给出一个区域的边界。 我试过以下但是被困了:

require(osmar)
require(XML)

# a set of open street map ways (lines) related as given by a relation..
# (if connected these ways represent the boundary of a political 
#  district in Tyrol/Austria)
myxml <- xmlParse("http://api.openstreetmap.org/api/0.6/relation/85647")

# extracting way ids at the according xml-nodes:
els <- getNodeSet(myxml, "//member[@ref]")
ways <- as.numeric(sapply(els, function(el) xmlGetAttr(el, "ref")))

# now I try to get one of those ways as an osmar-obj and plot it,
# which throws an error:
plot_ways(get_osm(way(ways[1])))

显然有一个边界框丢失,但我不知道如何将它分配给这种对象..如果我解决了这个问题,我想用线/方式制作一个多边形。

1 个答案:

答案 0 :(得分:4)

该软件包的作者非常善于提供缺少当前文档的信息: 参数get_osm(..,all = T)只是缺失...所有= T都检索到所有相关元素。

获取我想要的区域边界以下代码适用:

District_Boundary <- get_osm(relation(85647), all = T)