Class representing a general metric graph.
Object of R6Class for creating metric graphs.
VMatrix with positions in Euclidean space of the vertices of the graph.
nVThe number of vertices.
EMatrix with the edges of the graph, where each row represents an
edge, E[i,1] is the vertex at the start of the ith edge and E[i,2] is
the vertex at the end of the edge.
nEThe number of edges.
edge_lengthsVector with the lengths of the edges in the graph.
CConstraint matrix used to set Kirchhoff constraints.
CoBChange-of-basis object used for Kirchhoff constraints.
PtVVector with the indices of the vertices which are observation locations.
meshMesh object used for plotting.
edgesThe coordinates of the edges in the graph.
DirectionalWeightFunction_inFunction for inwards weights in directional models
DirectionalWeightFunction_outFunction for outwards weights in directional models
verticesThe coordinates of the vertices in the graph, along with several attributes.
geo_distGeodesic distances between the vertices in the graph.
res_distResistance distances between the observation locations.
LaplacianThe weighted graph Laplacian of the vertices in the graph. The weights are given by the edge lengths.
characteristicsList with various characteristics of the graph.
new()Create a new metric_graph object.
metric_graph$new(
edges = NULL,
V = NULL,
E = NULL,
vertex_unit = NULL,
length_unit = NULL,
edge_weights = NULL,
kirchhoff_weights = NULL,
directional_weights = NULL,
longlat = NULL,
crs = NULL,
proj4string = NULL,
which_longlat = "sp",
include_obs = NULL,
include_edge_weights = NULL,
project = FALSE,
project_data = FALSE,
which_projection = "Winkel tripel",
manual_edge_lengths = NULL,
perform_merges = NULL,
approx_edge_PtE = TRUE,
tolerance = list(vertex_vertex = 0.001, vertex_edge = 0.001, edge_edge = 0),
check_connected = TRUE,
remove_deg2 = FALSE,
merge_close_vertices = NULL,
factor_merge_close_vertices = 1,
remove_circles = FALSE,
auto_remove_point_edges = TRUE,
verbose = 1,
add_obs_options = list(return_removed = FALSE, verbose = verbose),
lines = deprecated()
)edgesA list containing coordinates as m x 2 matrices (that is, of matrix type) or m x 2 data frames (data.frame type) of sequence of points connected by straightlines. Alternatively, you can also prove an object of type SSN, osmdata_sp, osmdata_sf, SpatialLinesDataFrame or SpatialLines (from sp package) or MULTILINESTRING (from sf package).
Vn x 2 matrix with Euclidean coordinates of the n vertices. If non-NULL, no merges will be performed.
Em x 2 matrix where each row represents one of the m edges. If non-NULL, no merges will be performed.
vertex_unitThe unit in which the vertices are specified. The options are 'degree' (the great circle distance in km), 'km', 'm' and 'miles'. The default is NULL, which means no unit. However, if you set length_unit, you need to set vertex_unit.
length_unitThe unit in which the lengths will be computed. The options are 'km', 'm' and 'miles'. The default, when longlat is TRUE, or an sf or sp objects are provided, is 'km'.
edge_weightsEither a number, a numerical vector with length given by the number of edges, providing the edge weights, or a data.frame with the number of rows being equal to the number of edges, where
each row gives a vector of weights to its corresponding edge. Can be changed by using the set_edge_weights() method.
kirchhoff_weightsIf non-null, the name (or number) of the column of edge_weights that contain the Kirchhoff weights. Must be equal to 1 (or TRUE) in case edge_weights is a single number and those are the Kirchhoff weights.
directional_weightsIf non-null, the name (or number) of the column of edge_weights that contain the directional weights. The default is the first column of the edge weights.
longlatThere are three options: NULL, TRUE or FALSE. If NULL (the default option), the edges argument will be checked to see if there is a CRS or proj4string available, if so, longlat will be set to TRUE, otherwise, it will be set to FALSE. If TRUE, then it is assumed that the coordinates are given.
in Longitude/Latitude and that distances should be computed in meters. If TRUE it takes precedence over
vertex_unit and length_unit, and is equivalent to vertex_unit = 'degree' and length_unit = 'm'.
crsCoordinate reference system to be used in case longlat is set to TRUE and which_longlat is sf. Object of class crs. The default choice, if the edges object does not have CRS nor proj4string, is sf::st_crs(4326).
proj4stringProjection string of class CRS-class to be used in case longlat is set to TRUE and which_longlat is sp. The default choice, if the edges object does not have CRS nor proj4string, is sp::CRS("+proj=longlat +datum=WGS84").
which_longlatCompute the distance using which package? The options are sp and sf. The default is sp.
include_obsIf the object is of class SSN, should the observations be added? If NULL and the edges are of class SSN, the data will be automatically added. If FALSE, the data will not be added. Alternatively, one can set this argument to the numbers or names of the columns of the observations to be added as observations.
include_edge_weightsIf the object is of class SSN, osmdata_sp, osmdata_sf, SpatialLinesDataFrame, MULTILINESTRING, LINESTRING, sfc_LINESTRING, sfc_MULTILINESTRING, should the edge data (if any) be added as edge weights? If NULL, the edge data will be added as edge weights, if FALSE they will not be added. Alternatively, one can set this argument to the numbers or names of the columns of the edge data to be added as edge weights.
projectIf longlat is TRUE should a projection be used to compute the distances to be used for the tolerances (see tolerance below)? The default is FALSE. When TRUE, the construction of the graph is faster.
project_dataIf longlat is TRUE should the vertices be project to planar coordinates? The default is FALSE. When TRUE, the construction of the graph is faster.
which_projectionWhich projection should be used in case project is TRUE? The options are Robinson, Winkel tripel or a proj4string. The default is Winkel tripel.
manual_edge_lengthsIf non-NULL, a vector containing the edges lengths, and all the quantities related to edge lengths will be computed in terms of these. If merges are performed, it is likely that the merges will override the manual edge lengths. In such a case, to provide manual edge lengths, one should either set the perform_merges argument to FALSE or use the set_manual_edge_lengths() method.
perform_mergesThere are three options, NULL, TRUE or FALSE. The default option is NULL. If NULL, it will be set to FALSE unless 'edges', 'V' and 'E' are NULL, in which case it will be set to TRUE. If FALSE, this will take priority over the other arguments, and no merges (except the optional merge_close_vertices below) will be performed. Note that the merge on the additional merge_close_vertices might still be performed, if it is set to TRUE.
approx_edge_PtEShould the relative positions on the edges be approximated? The default is TRUE. If FALSE, the speed can be considerably slower, especially for large metric graphs.
toleranceList that provides tolerances during the construction of the graph:
vertex_vertex Vertices that are closer than this number are merged (default = 1e-7).
vertex_edge If a vertex at the end of one edge is closer than this
number to another edge, this vertex is connected to that edge
(default = 1e-7). Previously vertex_line, which is now deprecated.
edge_edge If two edges at some point are closer than this number, a new
vertex is added at that point and the two edges are connected (default = 0).
vertex_line, Deprecated. Use vertex_edge instead.
line_line, Deprecated. Use edge_edge instead.
In case longlat = TRUE, the tolerances are given in length_unit.
check_connectedIf TRUE, it is checked whether the graph is
connected and a warning is given if this is not the case.
remove_deg2Set to TRUE to remove all vertices of degree 2 in the
initialization. Default is FALSE.
merge_close_verticesShould an additional step to merge close vertices be done? The options are NULL (the default), TRUE or FALSE. If NULL, it will be determined automatically. If TRUE this step will be performed even if perfom_merges is set to FALSE.
factor_merge_close_verticesWhich factor to be multiplied by tolerance vertex_vertex when merging close vertices at the additional step?
remove_circlesAll circlular edges with a length smaller than this number
are removed. If TRUE, the vertex_vertex tolerance will be used. If FALSE, no circles will be removed.
auto_remove_point_edgesShould edges of length zero, that is, edges that are actually points, be automatically removed?
verbosePrint progress of graph creation. There are 3 levels of verbose, level 0, 1 and 2. In level 0, no messages are printed. In level 1, only messages regarding important steps are printed. Finally, in level 2, messages detailing all the steps are printed. The default is 1.
add_obs_optionsList containing additional options to be passed to the add_observations() method when adding observations from SSN data?
lines
A graph object can be initialized in two ways. The first method
is to specify V and E. In this case, all edges are assumed to be straight
lines. The second option is to specify the graph via the lines input.
In this case, the vertices are set by the end points of the lines.
Thus, if two lines are intersecting somewhere else, this will not be
viewed as a vertex.
A metric_graph object.
remove_small_circles()Sets the edge weights
metric_graph$remove_small_circles(tolerance, verbose = 1)toleranceTolerance at which circles with length less than this will be removed.
verbosePrint progress of graph creation. There are 3 levels of verbose, level 0, 1 and 2. In level 0, no messages are printed. In level 1, only messages regarding important steps are printed. Finally, in level 2, messages detailing all the steps are printed. The default is 1.
No return value. Called for its side effects.
get_edges()Exports the edges of the MetricGraph object as an sf or sp.
metric_graph$get_edges(format = c("sf", "sp", "list"))formatThe format for the exported object. The options are sf (default), sp and list.
For format == "sf", the function returns an sf object of LINESTRING geometries, where the associated data frame includes edge weights.
For format == "sp", the function returns a SpatialLinesDataFrame where the data frame includes edge weights.
get_bounding_box()Bounding box of the metric graph
metric_graph$get_bounding_box(format = "sf")formatIf the metric graph has a coordinate reference system, the format for the exported object. The options are sf (default), sp and matrix.
A bounding box of the metric graph
get_vertices()Exports the vertices of the MetricGraph object as an sf, sp or as a matrix.
metric_graph$get_vertices(format = c("sf", "sp", "list"))formatThe format for the exported object. The options are sf (default), sp and matrix.
For which_format == "sf", the function returns an sf object of POINT geometries.
For which_format == "sp", the function returns a SpatialPointsDataFrame object.
export()Exports the MetricGraph object as an sf or sp object.
metric_graph$export(format = "sf")formatThe format for the exported object. The options are sf (default) and sp.
Returns a list with three elements: edges, vertices, and data.
For format == "sf", edges is an sf object of LINESTRING geometries with edge weights, and vertices and data are sf objects with POINT geometries.
For format == "sp", edges is a SpatialLinesDataFrame with edge weights, and vertices and data are SpatialPointsDataFrame.
leaflet()Return the metric graph as a leaflet::leaflet() object to be built upon.
metric_graph$leaflet(
width = NULL,
height = NULL,
padding = 0,
options = leafletOptions(),
elementId = NULL,
sizingPolicy = leafletSizingPolicy(padding = padding)
)widththe width of the map
heightthe height of the map
paddingthe padding of the map
optionsthe map options
elementIdUse an explicit element ID for the widget (rather than an automatically generated one).
sizingPolicyhtmlwidgets sizing policy object. Defaults to leafletSizingPolicy().
mapview()Returns a mapview::mapview() object of the metric graph
metric_graph$mapview(...)...Additional arguments to be passed to mapview::mapview(). The x argument of mapview, containing the metric graph is already passed internally.
set_edge_weights()Sets the edge weights
metric_graph$set_edge_weights(
weights = NULL,
kirchhoff_weights = NULL,
directional_weights = NULL,
verbose = 0
)weightsEither a number, a numerical vector with length given by the number of edges, providing the edge weights, or a data.frame with the number of rows being equal to the number of edges, where
each row gives a vector of weights to its corresponding edge.
kirchhoff_weightsIf non-null, the name (or number) of the column of weights that contain the Kirchhoff weights. Must be equal to 1 (or TRUE) in case weights is a single number and those are the Kirchhoff weights.
directional_weightsIf non-null, the name (or number) of the column of weights that contain the directional weights.
verboseThere are 3 levels of verbose, level 0, 1 and 2. In level 0, no messages are printed. In level 1, only messages regarding important steps are printed. Finally, in level 2, messages detailing all the steps are printed. The default is 1.
No return value. Called for its side effects.
get_edge_weights()Gets the edge weights
metric_graph$get_edge_weights(
data.frame = FALSE,
format = c("tibble", "sf", "sp", "list"),
tibble = deprecated()
)data.frameIf the edge weights are given as vectors, should the result be returned as a data.frame?
formatWhich format should the data be returned? The options are tibble for tidyr::tibble, sf for POINT, sp for SpatialPointsDataFrame and list for the internal list format.
tibble
A vector or data.frame containing the edge weights.
get_vertices_incomp_dir()Gets vertices with incompatible directions
metric_graph$get_vertices_incomp_dir()A vector containing the vertices with incompatible directions.
summary()Prints a summary of various informations of the graph
metric_graph$summary(
messages = FALSE,
compute_characteristics = NULL,
check_euclidean = NULL,
check_distance_consistency = NULL
)messagesShould message explaining how to build the results be given for missing quantities?
compute_characteristicsShould the characteristics of the graph be computed? If NULL it will be determined based on the size of the graph.
check_euclideanCheck if the graph has Euclidean edges? If NULL it will be determined based on the size of the graph.
check_distance_consistencyCheck the distance consistency assumption? If NULL it will be determined based on the size of the graph.
No return value. Called for its side effects.
No return value. Called for its side effects.
compute_characteristics()Computes various characteristics of the graph
metric_graph$compute_characteristics(check_euclidean = FALSE)check_euclideanAlso check if the graph has Euclidean edges? This essentially means that the distance consistency check will also be perfomed. If the graph does not have Euclidean edges due to another reason rather than the distance consistency, then it will already be indicated that the graph does not have Euclidean edges.
No return value. Called for its side effects. The computed characteristics
are stored in the characteristics element of the metric_graph object.
check_euclidean()Check if the graph has Euclidean edges.
metric_graph$check_euclidean()Returns TRUE if the graph has Euclidean edges, or FALSE otherwise.
The result is stored in the characteristics element of the metric_graph object.
The result is displayed when the graph is printed.
check_distance_consistency()Checks distance consistency of the graph.
metric_graph$check_distance_consistency()No return value.
The result is stored in the characteristics element of the metric_graph object.
The result is displayed when the graph is printed.
compute_geodist()Computes shortest path distances between the vertices in the graph
metric_graph$compute_geodist(
full = FALSE,
obs = TRUE,
group = NULL,
verbose = 0
)fullShould the geodesic distances be computed for all
the available locations? If FALSE, it will be computed
separately for the locations of each group.
obsShould the geodesic distances be computed at the observation locations?
groupVector or list containing which groups to compute the distance
for. If NULL, it will be computed for all groups.
verbosePrint progress of the computation of the geodesic distances. There are 3 levels of verbose, level 0, 1 and 2. In level 0, no messages are printed. In level 1, only messages regarding important steps are printed. Finally, in level 2, messages detailing all the steps are printed. The default is 1.
No return value. Called for its side effects. The computed geodesic
distances are stored in the geo_dist element of the metric_graph object.
compute_geodist_PtE()Computes shortest path distances between the vertices in the graph.
metric_graph$compute_geodist_PtE(
PtE,
normalized = TRUE,
include_vertices = TRUE,
verbose = 0
)PtEPoints to compute the metric for.
normalizedare the locations in PtE in normalized distance?
include_verticesShould the original vertices be included in the distance matrix?
verbosePrint progress of the computation of the geodesic distances. There are 3 levels of verbose, level 0, 1 and 2. In level 0, no messages are printed. In level 1, only messages regarding important steps are printed. Finally, in level 2, messages detailing all the steps are printed. The default is 1.
A matrix containing the geodesic distances.
compute_geodist_mesh()Computes shortest path distances between the vertices in the mesh.
metric_graph$compute_geodist_mesh()No return value. Called for its side effects. The geodesic distances
on the mesh are stored in mesh$geo_dist in the metric_graph object.
compute_resdist()Computes the resistance distance between the observation locations.
metric_graph$compute_resdist(
full = FALSE,
obs = TRUE,
group = NULL,
check_euclidean = FALSE,
include_vertices = FALSE,
verbose = 0
)fullShould the resistance distances be computed for all
the available locations. If FALSE, it will be computed
separately for the locations of each group.
obsShould the resistance distances be computed at the observation locations?
groupVector or list containing which groups to compute the distance
for. If NULL, it will be computed for all groups.
check_euclideanCheck if the graph used to compute the resistance distance has Euclidean edges? The graph used to compute the resistance distance has the observation locations as vertices.
include_verticesShould the vertices of the graph be also included in the resulting matrix when using FULL=TRUE?
verbosePrint progress of the computation of the resistance distances. There are 3 levels of verbose, level 0, 1 and 2. In level 0, no messages are printed. In level 1, only messages regarding important steps are printed. Finally, in level 2, messages detailing all the steps are printed. The default is 1.
No return value. Called for its side effects. The geodesic distances
are stored in the res_dist element of the metric_graph object.
compute_resdist_PtE()Computes the resistance distance between the observation locations.
metric_graph$compute_resdist_PtE(
PtE,
normalized = TRUE,
include_vertices = FALSE,
check_euclidean = FALSE,
verbose = 0
)PtEPoints to compute the metric for.
normalizedAre the locations in PtE in normalized distance?
include_verticesShould the original vertices be included in the Laplacian matrix?
check_euclideanCheck if the graph used to compute the resistance distance has Euclidean edges? The graph used to compute the resistance distance has the observation locations as vertices.
verbosePrint progress of the computation of the resistance distances. There are 3 levels of verbose, level 0, 1 and 2. In level 0, no messages are printed. In level 1, only messages regarding important steps are printed. Finally, in level 2, messages detailing all the steps are printed. The default is 1.
A matrix containing the resistance distances.
get_degrees()Returns the degrees of the vertices in the metric graph.
metric_graph$get_degrees(which = "degree")whichIf "degree", returns the degree of the vertex. If "indegree", returns the indegree, and if "outdegree", it returns the outdegree.
A vector containing the degrees of the vertices.
compute_PtE_edges()Computes the relative positions of the coordinates of the edges and save it as an attribute to each edge. This improves the quality of plots obtained by the plot_function() method, however it might be costly to compute.
metric_graph$compute_PtE_edges(approx = TRUE, verbose = 0)approxShould the computation of the relative positions be approximate? Default is TRUE. If FALSE, the speed can be considerably slower, especially for large metric graphs.
verboseLevel of verbosity, 0, 1 or 2. The default is 0.
No return value, called for its side effects.
compute_resdist_mesh()Computes the resistance metric between the vertices in the mesh.
metric_graph$compute_resdist_mesh()No return value. Called for its side effects. The geodesic distances
on the mesh are stored in the mesh$res_dist element in the metric_graph
object.
compute_laplacian()Computes the weigthed graph Laplacian for the graph.
metric_graph$compute_laplacian(
full = FALSE,
obs = TRUE,
group = NULL,
verbose = 0
)fullShould the resistance distances be computed for all
the available locations. If FALSE, it will be computed
separately for the locations of each group.
obsShould the resistance distances be computed at the observation locations? It will only compute for locations in which there is at least one observations that is not NA.
groupVector or list containing which groups to compute the
Laplacian for. If NULL, it will be computed for all groups.
verbosePrint progress of the computation of the Laplacian. There are 3 levels of verbose, level 0, 1 and 2. In level 0, no messages are printed. In level 1, only messages regarding important steps are printed. Finally, in level 2, messages detailing all the steps are printed. The default is 1.
No reutrn value. Called for its side effects. The Laplacian is stored
in the Laplacian element in the metric_graph object.
prune_vertices()Removes vertices of degree 2 from the metric graph.
metric_graph$prune_vertices(
check_weights = TRUE,
check_circles = TRUE,
verbose = FALSE
)check_weightsIf TRUE will only prune edges with different weights.
check_circlesIf TRUE will not prune a vertex such that the resulting edge is a circle.
verbosePrint progress of pruning. There are 3 levels of verbose, level 0, 1 and 2. In level 0, no messages are printed. In level 1, only messages regarding important steps are printed. Finally, in level 2, messages detailing all the steps are printed. The default is 1.
Vertices of degree 2 are removed as long as the corresponding edges that would be merged are compatible in terms of direction.
No return value. Called for its side effects.
set_manual_edge_lengths()Gets the groups from the data.
metric_graph$set_manual_edge_lengths(edge_lengths, unit = NULL)edge_lengthsedge lengths to be set to the metric graph edges.
unitset or override the edge lengths unit.
does not return anything. Called for its side effects.
get_groups()Gets the groups from the data.
metric_graph$get_groups(get_cols = FALSE)get_colsShould the names of the columns that created the group variable be returned?
A vector containing the available groups in the internal data.
get_PtE()Gets PtE from the data.
metric_graph$get_PtE()groupFor which group, should the PtE be returned? NULL means that all PtEs available will be returned.
include_groupShould the group be included as a column? If TRUE, the PtEs for each group will be concatenated, otherwise a single matrix containing the unique PtEs will be returned.
A matrix with two columns, where the first column contains the edge number and the second column contains the distance on edge of the observation locations.
get_edge_lengths()Gets the edge lengths with the corresponding unit.
metric_graph$get_edge_lengths(unit = NULL)unitIf non-NULL, changes from length_unit from the graph construction to unit.
a vector with the length unit (if the graph was constructed with a length unit).
get_locations()Gets the spatial locations from the data.
metric_graph$get_locations()A data.frame object with observation locations. If longlat = TRUE, the column names are lon and lat, otherwise the column names are x and y.
observation_to_vertex()Adds observation locations as vertices in the graph.
metric_graph$observation_to_vertex(
mesh_warning = TRUE,
verbose = 0,
tolerance = deprecated()
)mesh_warningDisplay a warning if the graph structure change and the metric graph has a mesh object.
verbosePrint progress of the steps when adding observations. There are 3 levels of verbose, level 0, 1 and 2. In level 0, no messages are printed. In level 1, only messages regarding important steps are printed. Finally, in level 2, messages detailing all the steps are printed. The default is 1.
tolerance
share_weightsShould the same weight be shared among the split edges? If FALSE, the weights will be removed, and a common weight given by 1 will be given.
No return value. Called for its side effects.
edgeweight_to_data()Turns edge weights into data on the metric graph
metric_graph$edgeweight_to_data(
loc = NULL,
mesh = FALSE,
data_loc = FALSE,
weight_col = NULL,
add = TRUE,
data_coords = c("PtE", "spatial"),
normalized = FALSE,
tibble = FALSE,
format = c("tibble", "sf", "sp", "list"),
verbose = 1,
suppress_warnings = FALSE,
return = FALSE
)locA matrix or data.frame with two columns containing the locations to generate the data from the edge weights. If data_coords is 'spatial', the first column must be the x-coordinate of the data, and the second column must be the y-coordinate. If data_coords is 'PtE', the first column must be the edge number and the second column must be the distance on edge.
meshShould the data be generated to the mesh locations? In this case, the loc argument will be ignored. Observe that the metric graph must have a mesh built for one to use this option. CAUTION: To add edgeweight to data to both the data locations and mesh locations, please, add at the data locations first, then to mesh locations.
data_locShould the data be generated to the data locations? In this case, the loc argument will be ignored. Observe that the metric graph must have data for one to use this option. CAUTION: To add edgeweight to data to both the data locations and mesh locations, please, add at the data locations first, then to mesh locations.
weight_colWhich columns of the edge weights should be turned into data? If NULL, all columns will be turned into data.
addShould the data generated be added to the metric graph internal data?
data_coordsTo be used only if mesh is FALSE. It decides which
coordinate system to use. If PtE, the user must provide edge_number and
distance_on_edge, otherwise if spatial, the user must provide
coord_x and coord_y.
normalizedif TRUE, then the distances in distance_on_edge are
assumed to be normalized to (0,1). Default FALSE.
tibbleShould the data be returned in a tibble format?
formatIf return is TRUE, the format of the output: "tibble", "sf", or "sp". Default is "tibble".
verbosePrint progress of the steps when adding observations. There are 3 levels of verbose, level 0, 1 and 2. In level 0, no messages are printed. In level 1, only messages regarding important steps are printed. Finally, in level 2, messages detailing all the steps are printed. The default is 1.
suppress_warningsSuppress warnings related to duplicated observations?
returnShould the data be returned? If return_removed is TRUE, only the removed locations will be return (if there is any).
get_mesh_locations()Returns a list or a matrix with the mesh locations.
metric_graph$get_mesh_locations(
bru = FALSE,
loc = c(".edge_number", ".distance_on_edge"),
loc_name = NULL,
normalized = TRUE
)bruShould an 'inlabru'-friendly list be returned?
locIf bru is set to TRUE, the column names of the location variables.
The default name is c('.edge_number', '.distance_on_edge').
loc_nameThe name of the location variables. Not needed for rSPDE models.
normalizedIf TRUE, then the distances in distance_on_edge are
assumed to be normalized to (0,1). Default TRUE.
A list or a matrix containing the mesh locations.
clear_observations()Clear all observations from the metric_graph object.
metric_graph$clear_observations()No return value. Called for its side effects.
process_data()Process data to the metric graph data format.
metric_graph$process_data(
data = NULL,
edge_number = "edge_number",
distance_on_edge = "distance_on_edge",
coord_x = "coord_x",
coord_y = "coord_y",
data_coords = c("PtE", "spatial"),
group = NULL,
group_sep = ".",
normalized = FALSE,
format = c("tibble", "sf", "sp", "list"),
duplicated_strategy = "closest",
include_distance_to_graph = TRUE,
only_return_removed = FALSE,
tolerance = max(self$edge_lengths)/2,
verbose = FALSE,
suppress_warnings = FALSE,
Spoints = lifecycle::deprecated(),
tibble = lifecycle::deprecated()
)dataA data.frame or named list containing the observations. In
case of groups, the data.frames for the groups should be stacked vertically,
with a column indicating the index of the group. If data is not NULL,
it takes priority over any eventual data in Spoints.
edge_numberColumn (or entry on the list) of the data that
contains the edge numbers. If not supplied, the column with name
"edge_number" will be chosen. Will not be used if Spoints is not NULL.
distance_on_edgeColumn (or entry on the list) of the data that
contains the edge numbers. If not supplied, the column with name
"distance_on_edge" will be chosen. Will not be used if Spoints is not
NULL.
coord_xColumn (or entry on the list) of the data that contains
the x coordinate. If not supplied, the column with name "coord_x" will be
chosen. Will not be used if Spoints is not NULL or if data_coords is
PtE.
coord_yColumn (or entry on the list) of the data that contains
the y coordinate. If not supplied, the column with name "coord_x" will be
chosen. Will not be used if Spoints is not NULL or if data_coords is
PtE.
data_coordsIt decides which
coordinate system to use. If PtE, the user must provide edge_number and
distance_on_edge, otherwise if spatial, the user must provide
coord_x and coord_y. The option euclidean is . Use
spatial instead.
groupVector. If the data is grouped (for example measured at different time
points), this argument specifies the columns (or entries on the list) in
which the group variables are stored. It will be stored as a single column .group with the combined entries.
group_sepseparator character for creating the new group variable when grouping two or more variables.
normalizedif TRUE, then the distances in distance_on_edge are
assumed to be normalized to (0,1). Default FALSE.
formatWhich format should the data be returned? The options are tibble for tidyr::tibble, sf for POINT, sp for SpatialPointsDataFrame and list for the internal list format.
duplicated_strategyWhich strategy to handle observations on the same location on the metric graph (that is, if there are two or more observations projected at the same location). The options are 'closest' and 'jitter'. If 'closest', only the closest observation will be used. If 'jitter', a small perturbation will be performed on the projected observation location. The default is 'closest'.
include_distance_to_graphWhen data_coord is 'spatial', should the distance of the observations to the graph be included as a column?
only_return_removedShould the removed data (if it exists) when using 'closest' duplicated_strategy be returned instead of the processed data?
toleranceParameter to control a warning when adding observations. If the distance of some location and the closest point on the graph is greater than the tolerance, the function will display a warning. This helps detecting mistakes on the input locations when adding new data.
verboseIf TRUE, report steps and times.
suppress_warningsSuppress warnings related to duplicated observations?
Spoints
tibble
No return value. Called for its side effects. The observations are
stored in the data element of the metric_graph object.
add_observations()Add observations to the metric graph.
metric_graph$add_observations(
data = NULL,
edge_number = "edge_number",
distance_on_edge = "distance_on_edge",
coord_x = "coord_x",
coord_y = "coord_y",
data_coords = c("PtE", "spatial"),
group = NULL,
group_sep = ".",
normalized = FALSE,
clear_obs = FALSE,
tibble = FALSE,
tolerance = max(self$edge_lengths)/2,
duplicated_strategy = "closest",
include_distance_to_graph = TRUE,
return_removed = TRUE,
tolerance_merge = 0,
merge_strategy = "merge",
verbose = 1,
suppress_warnings = FALSE,
Spoints = lifecycle::deprecated()
)dataA data.frame or named list containing the observations. In
case of groups, the data.frames for the groups should be stacked vertically,
with a column indicating the index of the group. data can also be an sf object, a
SpatialPointsDataFrame
A graph object created from vertex and edge matrices, or from an
sp::SpatialLines object where each line is representing and edge. For more details,
see the vignette:
vignette("metric_graph", package = "MetricGraph")
edge1 <- rbind(c(0, 0), c(2, 0))
edge2 <- rbind(c(2, 0), c(1, 1))
edge3 <- rbind(c(1, 1), c(0, 0))
edges <- list(edge1, edge2, edge3)
graph <- metric_graph$new(edges)
graph$plot()
Run the code above in your browser using DataLab