The function setCosts
define costs for the edges of a
gGraph object according to a node attribute and some rules
defined in the @meta\$costs
slot of the object. Each node has a value
for the chosen attribute, which is associated to a costs (a friction). The
cost of an edge is computed as a function (see argument method
) of
the costs of its nodes.
Usage
setCosts(
x,
attr.name = NULL,
node.values = NULL,
method = c("mean", "product", "function"),
FUN = NULL,
...
)
Arguments
- x
a gGraph object with a least one node attribute, and a
@meta$costs
component (for an example, see worldgraph.10k dataset).- attr.name
the name of the node attribute used to compute costs (i.e., of one column of
@nodes.attr
).- node.values
a numeric vector giving costs associated to the nodes. If provided, it will be used instead of
attr.name
.- method
a character string indicating which method should be used to compute edge cost from nodes costs. Currently available options are 'mean', 'prod' and 'function', where the cost associated to an edge is respectively computed as the mean, the product or a custom function (defined in
FUN
) of the costs of its nodes.- FUN
a function used to compute the cost between two nodes (needed if
method="function"
).- ...
additional parameters to be passed to
FUN
.
Value
A gGraph object with the newly defined costs used as weightings of edges.
Details
Note that costs are inversely proportional to connectivity between edges:
the larger the cost associated to an edge, the lower the connectivity
between the two concerned nodes.
Also note that 'costs' defined in geoGraph
are equivalent to
'weights' as defined in graph
and RBGL
packages.
See also
dropDeadEdges
, to get rid of edge whose cost is below
a given threshold. geo.add.edges
to add edges to a
gGraph object.
Examples
plot(rawgraph.10k, reset = TRUE)
## zooming in
geo.zoomin(list(x = c(-6, 38), y = c(35, 73)))
title("Europe")
## defining a new object restrained to visible nodes
x <- rawgraph.10k[isInArea(rawgraph.10k)]
## define weights for edges
x <- setCosts(x, attr.name = "habitat")
plot(x, edges = TRUE)
title("costs defined by habitat (land/land=1, other=100)")