ʻE <-`(`*tmp*`, value = `*vtmp*`): неверное индексирование, построение подмножества объекта OSM. Изменить: подмножество не создает истинное подмножество
Я пытаюсь создать небольшое подмножество более крупного объекта 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)
может быть, мне нужно использовать здесь поиск вместо подмножества?
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.
теперь я хочу построить n igraph этого нового подмножества:
gr_muc <- as_igraph(muc)
И получите эту ошибку:
E<-`(`*tmp*`, value = `*vtmp*`) : invalid indexing
Какую ошибку я делаю?
Прежде чем я подмножество, я получаю эту информацию об объекте muc
dim(muc)
nodes ways relations
360451 59490 3
После подмножества я получаю 0 способов и отношений. Я думаю, что это, вероятно, ошибка... как бы мне все подгруппировать?
Даже после того, как я использую find_up
функционировать на subset_ids
я все еще не получаю 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
содержит идентификаторы путей.
С уважением, Андреас.
1 ответ
Сказать это по-немецки: alter das wirst du nicht glauben!
Итак, проблема заключалась в том, как я назвал функцию subset
Возможно (по крайней мере, в моем рабочем env) вызвать функцию subset
с параметром ids
и без.. видимо потому, что эта функция перегружена.
это возможно:
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
Я надеюсь, что это помогает. Ура.