Learn R Programming

rmapshaper (version 0.1.0)

ms_simplify: Topologically-aware geometry simplification.

Description

Uses mapshaper to simplify polygons.

Usage

ms_simplify(input, keep = 0.05, method = NULL, keep_shapes = FALSE, no_repair = FALSE, snap = TRUE, explode = FALSE, force_FC = TRUE, drop_null_geometries = TRUE)

Arguments

input
spatial object to simplify. One of:
  • geo_json or character polygons or lines;
  • geo_list polygons or lines;
  • SpatialPolygons* or SpatialLines*
keep
proportion of points to retain (0-1; default 0.05)
method
simplification method to use: "vis" for Visvalingam algorithm, or "dp" for Douglas-Peuker algorithm. If left as NULL (default), uses Visvalingam simplification but modifies the area metric by underweighting the effective area of points at the vertex of more acute angles, resulting in a smoother appearance. See this https://github.com/mbloch/mapshaper/wiki/Simplification-Tipslink for more information.
keep_shapes
Prevent small polygon features from disappearing at high simplification (default FALSE)
no_repair
disable intersection repair after simplification (default FALSE).
snap
Snap together vertices within a small distance threshold to fix small coordinate misalignment in adjacent polygons. Default TRUE.
explode
Should multipart polygons be converted to singlepart polygons? This prevents small shapes from disappearing during simplification if keep_shapes = TRUE. Default FALSE
force_FC
should the output be forced to be a FeatureCollection even if there are no attributes? Default TRUE. FeatureCollections are more compatible with rgdal::readOGR and geojsonio::geojson_sp. If FALSE and there are no attributes associated with the geometries, a GeometryCollection will be output. Ignored for Spatial objects, as the output is always the same class as the input.
drop_null_geometries
should Features with null geometries be dropped? Ignored for Spatial* objects, as it is always TRUE.

Value

a simplified representation of the geometry in the same class as the input

Examples

Run this code
# With a simple geojson object
poly <- structure('{
  "type": "Feature",
  "properties": {},
  "geometry": {
    "type": "Polygon",
    "coordinates": [[
      [-70.603637, -33.399918],
      [-70.614624, -33.395332],
      [-70.639343, -33.392466],
      [-70.659942, -33.394759],
      [-70.683975, -33.404504],
      [-70.697021, -33.419406],
      [-70.701141, -33.434306],
      [-70.700454, -33.446339],
      [-70.694274, -33.458369],
      [-70.682601, -33.465816],
      [-70.668869, -33.472117],
      [-70.646209, -33.473835],
      [-70.624923, -33.472117],
      [-70.609817, -33.468107],
      [-70.595397, -33.458369],
      [-70.587158, -33.442901],
      [-70.587158, -33.426283],
      [-70.590591, -33.414248],
      [-70.594711, -33.406224],
      [-70.603637, -33.399918]
    ]]
  }
}', class = c("json", "geo_json"))

ms_simplify(poly, keep = 0.1)

## Not run: 
# # With a SpatialPolygonsDataFrame. You will need the rworldmap package for this example:
# library("rworldmap")
# world <- getMap()
# ms_simplify(world)
# ## End(Not run)

Run the code above in your browser using DataLab