Skip to contents

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")