【问题标题】:`E<-`(`*tmp*`, value = `*vtmp*`) : invalid indexing, building a subset of an OSM Object. Edit: subset does not create a true subset`E<-`(`*tmp*`, value = `*vtmp*`) : 无效索引,构建 OSM 对象的子集。编辑:子集不会创建真正的子集
【发布时间】:2020-07-11 10:48:58
【问题描述】:

我正在尝试构建一个更大的 osm 对象的一小部分:

首先我将一个更大的 osm 对象加载到内存中:

muc_bbox <- center_bbox(mid_point[1], mid_point[2], dist * 2, dist * 2)
src <- osmsource_osmosis(file = paste(maps_pfad,"streets_bayern.osm",sep = ""))
muc <- get_osm(muc_bbox, src)

然后我根据节点的坐标构建一个子集:

subset_bbox <- center_bbox(mid_point[1], mid_point[2], dist, dist)

也许我必须在这里使用 find 而不是子集?

muc_subset_df <- subset(muc$nodes$attrs, lon > subset_bbox[[1]] & lon < subset_bbox[[3]] 
&lat > subset_bbox[[2]] & lat < subset_bbox[[4]])

subset_ids <- muc_subset_df$id
muc_subset <- subset(muc, node_ids = subset_ids)

muc <- muc_subset

所以基本上我搜索所有在 bbox 的 lat&lon 值范围内的节点的节点 ID。

现在我想构建这个新子集的 n igraph:

gr_muc <- as_igraph(muc)

并得到这个错误:

E<-`(`*tmp*`, value = `*vtmp*`) : invalid indexing

我犯了什么错误?

在子集之前,我得到了关于 muc 对象的信息

    dim(muc)
    nodes      ways relations 
   360451     59490         3 

在子集之后,我得到 0 种方式和关系。 我认为这可能是一个错误......我将如何对所有内容进行子集化?

即使我在subset_ids 上使用find_up 函数后,我仍然没有得到任何relation_ids

subset_ids <- muc_subset_df$id
osm_subset_ids <- find_up(muc, node(subset_ids))
muc_subset <- subset(muc,  osm_subset_ids)

我错过了什么?

编辑: 经过进一步调查,似乎

muc_subset <- subset(muc,  osm_subset_ids)

不创建 osm 对象的真正子集。 它只创建一个包含节点但没有方式或关系的对象。 我怀疑这是一个问题,但仍然不知道如何解决。

> muc_subset
osmar object
80165 nodes, 0 ways, 0 relations 
> muc
osmar object
80165 nodes, 14161 ways, 0 relations 

然而osm_subset_ids 包含方式的ID。

最好的问候, 安德烈亚斯。

【问题讨论】:

    标签: r openstreetmap igraph osmar


    【解决方案1】:

    用德语说:alter das wirst du nicht glauben!

    所以问题是我调用函数subset的方式

    可以(至少在我的工作环境中)使用参数 ids 调用函数 subset 而没有..可能是因为这个函数被重载了。

    这是可能的:

    muc_subset <- subset(muc,  ids = osm_subset_ids)
    

    这样:

    muc_subset <- subset(muc,  osm_subset_ids)
    

    这两个调用都会运行并且不会产生错误。 不同的是结果:

    osmar object
    0 nodes, 0 ways, 0 relations 
    

    VS

    osmar object
    80165 nodes, 14161 ways, 0 relations 
    

    我希望它有所帮助。 干杯。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-02-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-11
      • 2017-07-11
      • 1970-01-01
      • 2012-12-05
      相关资源
      最近更新 更多