Я пытаюсь создать небольшое подмножество более крупного объекта 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.
Теперь я хочу построить график этого нового подмножества:
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
содержит идентификаторы путей.
С уважением, Андреас.