Im trying to build a small subset of a bigger osm object:
First i load a bigger osm object into memory:
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)
then i build a subset based on coordinates of the nodes:
subset_bbox <- center_bbox(mid_point[1], mid_point[2], dist, dist)
maybe i have to use find instead of subset here?
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
so basically i search for all the node ids of nodes that are in the lat&lon value range of bbox.
now i want to build n igraph of this new subset:
gr_muc <- as_igraph(muc)
And get this error:
E<-`(`*tmp*`, value = `*vtmp*`) : invalid indexing
What is the mistake im making?
Before i subset i get this info regarding muc object
dim(muc)
nodes ways relations
360451 59490 3
After Subset i get 0 ways and relations. I think this is probably the mistake... how would i subset everything?
Even after i use find_up
function on subset_ids
i still dont get any relation_ids
.
subset_ids <- muc_subset_df$id
osm_subset_ids <- find_up(muc, node(subset_ids))
muc_subset <- subset(muc, osm_subset_ids)
What am i missing?
EDIT: After investigating a bit further it seems that
muc_subset <- subset(muc, osm_subset_ids)
Does not create a true subset of an osm object. It only creates an object containing nodes but no ways or relations. I suspect this to be a problem but still dont know how to solve it.
> muc_subset
osmar object
80165 nodes, 0 ways, 0 relations
> muc
osmar object
80165 nodes, 14161 ways, 0 relations
Yet osm_subset_ids
contains ids of ways.
Best regards, Andreas.
To say it in German: alter das wirst du nicht glauben!
So the problam was the way i called the function
subset
It is possble (at least in my working env) to call the function
subset
with parameterids
and without.. probably because this function is overloaded.this is possible:
as this:
Both calls will run and produce no error. the difference is the result:
VS
I hope it helps. Cheers.