Learn R Programming

terra (version 1.5-21)

densify: Add additional nodes to lines or polygons

Description

Add additional nodes to lines or polygons. This can be useful to do prior to using project such that the path does not change too much.

Usage

# S4 method for SpatVector
densify(x, interval, equalize=TRUE)

Arguments

x

SpatVector

interval

numeric larger than 1, specifying the desired minimum interval between nodes

equalize

logical. If TRUE, new nodes are spread at equal intervals between old nodes

Value

SpatVector

Examples

Run this code
# NOT RUN {
v <- vect(rbind(c(-120,-20), c(-80,5), c(-40,-60), c(-120,-20)), 
  type="polygons", crs="+proj=longlat")
vd <- densify(v, 200000)

p <- project(v, "+proj=robin")
pd <- project(vd, "+proj=robin")

# good 
plot(pd, col="gray", border="red", lwd=10)
points(pd, col="gray")

# bad
lines(p, col="blue", lwd=3)
points(p, col="blue", cex=2)
plot(p, col="blue", alpha=.1, add=TRUE)
legend("topright", c("good", "bad"), col=c("red", "blue"), lty=1, lwd=3)

## the other way around does not work
## unless the original data was truly planar (e.g. derived from a map)
x <- densify(p, 250000)
y <- project(x, "+proj=longlat")
# bad
plot(y)
# good
lines(vd, col="red")
# }

Run the code above in your browser using DataLab