This package implements classes and methods for large-scale georeferenced
data handled through spatial graphs.
Details
Main functionalities of geoGraph are summarized below.
=== DATA HANDLING ===
In geoGraph, data are stored as a particular
formal class named gGraph. This class contains spatial
coordinates of a set of nodes (@coords), attributes for these nodes
(@nodes.attr), meta-information about nodes attributes (@meta), and a graph
of connections between nodes of class graphNEL (@graph).
Several functions are available for handling gGraph data:
some accessors allow to access slots of an object, sometimes with additional treatment of information:
getGraph,getNodesAttr,getCoords,getNodes,getEdges,getCosts.setEdges: add/remove edges specified edges.setCosts: set costs of edges.hasCosts: tests if the graph is weighted (i.e., has non-uniform costs).isInArea: finds which nodes are in the currently plotted area.areConnected: tests if nodes are directly connected.connectivityPlot: plot connected components with different colors.dropDeadEdges: suppress edges whose weight is null.closestNode: given a longitude and a latitude, finds the closest node; specific values of node attribute can be provided, for instance, to find the closest node on land.show: printing of gGraph objects.extractFromLayer: extract information from GIS layers.findLand: checks which nodes are on land.setCosts: define edges weights accoring to rules specified in the @meta slot.geo.add.edges,geo.remove.edges: graphical functions for adding or removing edges.geo.change.attr: graphical functions for changing attributes of nodes.
=== GRAPHICS ===geoGraph aims at providing advanced graphical
facilities, such as zooming in or out particular area, moving the plotted
area, or visualizing connectivity between nodes.
plot: plot method with various options, allowing to display a shapefile (by default, the map of the world), using color according to attributes, showing connectivity between nodes, etc.points: similar to plot method, except that a new plot is not created.plotEdges: the specific function plotting edges. It detects if the object is a weighted graph, and plots edges accordingly.geo.zoomin,geo.zoomout: zoom in and out a plot.geo.back: replot the previous screens.geo.slide: slide the plotted area toward the indicated direction.geo.bookmark,geo.goto: set and goto a bookmarked area.
=== DATASETS ===
Datasets occupy a central place in geoGraph,
since they provide the spatial models used in later operations.
Two main datasets are proposed, each being a gGraph resulting
from the spliting of the earth into cells of (allmost perfectly) equal
sizes. Two different resolutions are provided:
-
worldgraph.10k: coverage using about 10,000 nodes
-
worldgraph.40k: coverage using about 40,000 nodes
Other datasets are:
- worldshape: shapefile containing
world countries.
To cite geoGraph, please use the reference given by
citation("geoGraph").
Examples
## the class gGraph
worldgraph.10k
#>
#> === gGraph object ===
#>
#> @coords: spatial coordinates of 10242 nodes
#> lon lat
#> 1 -180.0000 90.00000
#> 2 144.0000 -90.00000
#> 3 -33.7806 27.18924
#> ...
#>
#> @nodes.attr: 1 nodes attributes
#> habitat
#> 1 sea
#> 2 sea
#> 3 sea
#> ...
#>
#> @meta: list of meta information with 2 items
#> [1] "$colors" "$costs"
#>
#> @graph:
#> A graphNEL graph with undirected edges
#> Number of Nodes = 10242
#> Number of Edges = 6954
## plotting the object
plot(worldgraph.10k, reset = TRUE)
## zooming in
geo.zoomin(list(x = c(-6, 38), y = c(35, 73)))
title("Europe")
## to play interactively with graphics, use:
# geo.zoomin()
# geo.zoomout()
# geo.slide()
# geo.back()
## defining a new object restrained to visible nodes
x <- worldgraph.10k[isInArea(worldgraph.10k)]
plot(x, reset = TRUE, edges = TRUE)
title("x does just contain these visible nodes.")
## define weights for edges
x <- setCosts(x, attr.name = "habitat", method = "prod")
plot(x, edges = TRUE)
title("connectivity defined by habitat (land/land=1, other=0)")
## drop 'dead edges' (i.e. with weight 0)
x <- dropDeadEdges(x)
plot(x, edges = TRUE)
title("after droping edges with null weight")