有效地将 OSMAR 对象划分为 R 中的块
Divide efficiently an OSMAR Object into chunks in R
我怎样才能有效地将 osmar 对象分成几个部分并将它们重新组合起来?
library(osmar)
src <- osmsource_api(url = "https://api.openstreetmap.org/api/0.6/")
bbox <- center_bbox(11.575278, 48.137222, 1000, 1000)
object <- get_osm(bbox, src)
根据 class 这是一个“osmar”“列表”。
class(object)
[1] "osmar" "list"
所以我尝试用以下方法划分它:
divide_a_vector_into_chunks <- function(x,n) split(x, cut(seq_along(x), n, labels = FALSE))
div_osmar<-divide_a_vector_into_chunks(object,2)
它创建了一个列表:
$`1`
$`1`$nodes
osmar$nodes object
1690 nodes, 1210 tags
lat lon
min 48.13385 11.5675
max 48.14264 11.5800
$`1`$ways
osmar$ways object
239 ways, 1306 tags, 2144 refs
$`2`
$`2`$relations
osmar$relations object
136 relations, 1327 tags, 958 node_refs, 8034 way_refs
但我无法像处理 osmar 对象那样处理此列表。
此外 osmar 包支持将 osmar 对象与
组合
o1 <- subset(object, node_ids = find(object, node(tags(v == "Marienplatz"))))
o2 <- subset(object, ids = find_down(object, way(c(96619179, 105071000))))
o1
o2
c(o1, o2)
所以应该可以将一个osmar对象分割再组合起来。
我找到了一个解决方案,但我不知道这个解决方案的效率如何:
node_ids_vector<-object$nodes$attrs$id
node_ids_vector_devided<-divide_a_vector_into_chunks(node_ids_vector,2)
o1<-subset(object,ids=find_up(object,node(node_ids_vector_devided$`1`)))
o2<-subset(object,ids=find_up(object,node(node_ids_vector_devided$`2`)))
c(o1, o2)
我怎样才能有效地将 osmar 对象分成几个部分并将它们重新组合起来?
library(osmar)
src <- osmsource_api(url = "https://api.openstreetmap.org/api/0.6/")
bbox <- center_bbox(11.575278, 48.137222, 1000, 1000)
object <- get_osm(bbox, src)
根据 class 这是一个“osmar”“列表”。
class(object)
[1] "osmar" "list"
所以我尝试用以下方法划分它:
divide_a_vector_into_chunks <- function(x,n) split(x, cut(seq_along(x), n, labels = FALSE))
div_osmar<-divide_a_vector_into_chunks(object,2)
它创建了一个列表:
$`1`
$`1`$nodes
osmar$nodes object
1690 nodes, 1210 tags
lat lon
min 48.13385 11.5675
max 48.14264 11.5800
$`1`$ways
osmar$ways object
239 ways, 1306 tags, 2144 refs
$`2`
$`2`$relations
osmar$relations object
136 relations, 1327 tags, 958 node_refs, 8034 way_refs
但我无法像处理 osmar 对象那样处理此列表。 此外 osmar 包支持将 osmar 对象与
组合o1 <- subset(object, node_ids = find(object, node(tags(v == "Marienplatz"))))
o2 <- subset(object, ids = find_down(object, way(c(96619179, 105071000))))
o1
o2
c(o1, o2)
所以应该可以将一个osmar对象分割再组合起来。
我找到了一个解决方案,但我不知道这个解决方案的效率如何:
node_ids_vector<-object$nodes$attrs$id
node_ids_vector_devided<-divide_a_vector_into_chunks(node_ids_vector,2)
o1<-subset(object,ids=find_up(object,node(node_ids_vector_devided$`1`)))
o2<-subset(object,ids=find_up(object,node(node_ids_vector_devided$`2`)))
c(o1, o2)