Simplify Geometry
Function simplifies the given geometry using the Douglas-Peuker algorithm
gSimplify(spgeom, tol, topologyPreserve=FALSE)
spgeom |
sp object as defined in package sp |
tol |
Numerical tolerance value to be used by the Douglas-Peuker algorithm |
topologyPreserve |
Logical determining if the algorithm should attempt to preserve the topology of the original geometry |
When applied to lines it is possible for the resulting geometry to lose simplicity (gIsSimple
). If topologyPreserve is not specified it is also possible that the resulting geometries may no longer be valid (gIsValid
). Remember to check the resulting geometry as many other functions rely on simplicity and or validity when performing their calculations.
Returns a simplified version of the given geometry when applied to [MULTI]LINEs or [MULTI]POLYGONs.
Roger Bivand & Colin Rundel
Douglas-Peuker Algorithm: https://en.wikipedia.org/wiki/Ramer-Douglas-Peucker_algorithm
p = readWKT(paste("POLYGON((0 40,10 50,0 60,40 60,40 100,50 90,60 100,60", "60,100 60,90 50,100 40,60 40,60 0,50 10,40 0,40 40,0 40))")) l = readWKT("LINESTRING(0 7,1 6,2 1,3 4,4 1,5 7,6 6,7 4,8 6,9 4)") par(mfrow=c(2,4)) plot(p);title("Original") plot(gSimplify(p,tol=10));title("tol: 10") plot(gSimplify(p,tol=20));title("tol: 20") plot(gSimplify(p,tol=25));title("tol: 25") plot(l);title("Original") plot(gSimplify(l,tol=3));title("tol: 3") plot(gSimplify(l,tol=5));title("tol: 5") plot(gSimplify(l,tol=7));title("tol: 7") par(mfrow=c(1,1))
Please choose more modern alternatives, such as Google Chrome or Mozilla Firefox.