sp (version 1.2-2)

gridlines: Create N-S and E-W grid lines over a geographic region

Description

Create N-S and E-W grid lines over a geographic region; create and plot corresponding labels

Usage

gridlines(x, easts = pretty(bbox(x)[1,]), norths = pretty(bbox(x)[2,]),
 ndiscr = 100) 
gridat(x, easts = pretty(bbox(x)[1,]), norths = pretty(bbox(x)[2,]),
 offset = 0.5, side = "WS")
## S3 method for class 'SpatialLines':
labels(object, newCRS, side = 1:2, ...)
## S3 method for class 'SpatialPointsDataFrame':
text(x, ...)

Arguments

x
object deriving from class Spatial-class
easts
numeric; east-west values for vertical lines
norths
numeric; north-south values for horizontal lines
ndiscr
integer; number of points used to discretize the line, could be set to 2, unless the grid is (re)projected
offset
offset value to be returned, see text
object
SpatialLines-class object, as returned by gridlines
newCRS
the new (non-longlat) CRS in which the grid lines are being plotted; if missing, the CRS from gridlines are taken
side
for labels: integer, indicating side(s) at which gridlines labels will be drawn: 1=below (S), 2=left (W), 3=above (N), and 4=right (E); for gridat: default WS, if EN labels placed on the top
...
for labels: ignored; for text: arguments passed on to text, see below for example use of adj

Value

  • gridlines returns an object of class SpatialLines-class, with lines as specified; the return object inherits the projection information of x; gridat returns a SpatialPointsDataFrame with points at the west and south ends of the grid lines created by gridlines, with degree labels.

    The labels method for SpatialLines objects returns a SpatialPointsDataFrame object with the parameters needed to print labels below and left of the gridlines. This object is prepared to be plotted with text:

    The text method for SpatialPointsDataFrame puts text labels on its coordinates, and takes care of attributes pos, labels, srt and offset; see text.

See Also

spTransform; llgridlines in rgdal (recent versions) for plotting long-lat grid over projected data

Examples

Run this code
data(meuse)
coordinates(meuse) = ~x+y
plot(meuse)
plot(gridlines(meuse), add = TRUE)
title("default gridlines within Meuse bounding box")

proj4string(meuse) <- CRS("+init=epsg:28992")
meuse_ll <- spTransform(meuse, CRS("+proj=longlat +datum=WGS84"))
grd <- gridlines(meuse_ll)
grd_x <- spTransform(grd, CRS("+init=epsg:28992"))

# labels South and West:
plot(meuse)
plot(grd_x, add=TRUE, lty=2)
grdat_ll <- gridat(meuse_ll)
grdat_x <- spTransform(grdat_ll, CRS("+init=epsg:28992"))
text(grdat_x)

# labels North and East:
plot(meuse)
plot(grd_x, add=TRUE, lty=2)
grdat_ll <- gridat(meuse_ll, side="EN")
grdat_x <- spTransform(grdat_ll, CRS("+init=epsg:28992"))
text(grdat_x)

# now using labels:
plot(meuse)
plot(grd_x, add=TRUE, lty=2)
text(labels(grd, CRS("+init=epsg:28992")))

# demonstrate axis labels with angle, both sides:
sp = SpatialPoints(rbind(c(-101,9), c(-101,55), c(-19,9), c(-19,55)), CRS("+init=epsg:4326"))
laea = CRS("+proj=laea +lat_0=30 +lon_0=-40")
sp.l = spTransform(sp, laea)
plot(sp.l, expandBB = c(0, 0.05, 0, .05))
gl = gridlines(sp)
plot(spTransform(gl, laea), add = TRUE)
text(labels(gl, laea))
text(labels(gl, laea, side = 3:4), col = 'red')
title("curved text label demo")

# polar:
pts=SpatialPoints(rbind(c(-180,-70),c(0,-70),c(180,-89),c(180,-70)), CRS("+init=epsg:4326"))
gl = gridlines(pts, easts = seq(-180,180,20), ndiscr = 100)
polar = CRS("+init=epsg:3031")
plot(spTransform(pts, polar), expandBB = c(.05,0,.05,0))
lines(spTransform(gl, polar))
l = labels(gl, polar, side = 3)
l$pos = NULL # pos is too simple, use adj:
text(l, adj = c(0.5, -0.5)) 
l = labels(gl, polar, side = 4)
l$srt = 0 # otherwise they end up upside-down
text(l)
title("grid line labels on polar projection, epsg 3031")
demo(polar) # adds the map of the antarctic

Run the code above in your browser using DataLab