Write TopoJSON from various inputs
Usage
topojson_write(
input,
lat = NULL,
lon = NULL,
geometry = "point",
group = NULL,
file = "myfile.topojson",
overwrite = TRUE,
precision = NULL,
convert_wgs84 = FALSE,
crs = NULL,
object_name = "foo",
quantization = 0,
...
)
Arguments
- input
Input list, data.frame, spatial class, or sf class. Inputs can also be dplyr
tbl_df
class since it inherits fromdata.frame
- lat
(character) Latitude name. The default is
NULL
, and we attempt to guess.- lon
(character) Longitude name. The default is
NULL
, and we attempt to guess.- geometry
(character) One of point (Default) or polygon.
- group
(character) A grouping variable to perform grouping for polygons - doesn't apply for points
- file
(character) A path and file name (e.g., myfile), with the
.geojson
file extension. Default writes to current working directory.- overwrite
(logical) Overwrite the file given in
file
withinput
. Default:TRUE
. If this param isFALSE
and the file already exists, we stop with error message.- precision
desired number of decimal places for the coordinates in the geojson file. Using fewer decimal places can decrease file sizes (at the cost of precision).
- convert_wgs84
Should the input be converted to the standard CRS for GeoJSON (https://tools.ietf.org/html/rfc7946) (geographic coordinate reference system, using the WGS84 datum, with longitude and latitude units of decimal degrees; EPSG: 4326). Default is
FALSE
though this may change in a future package version. This will only work forsf
orSpatial
objects with a CRS already defined. If one is not defined but you know what it is, you may define it in thecrs
argument below.- crs
The CRS of the input if it is not already defined. This can be an epsg code as a four or five digit integer or a valid proj4 string. This argument will be ignored if
convert_wgs84
isFALSE
or the object already has a CRS.- object_name
(character) name to give to the TopoJSON object created. Default: "foo"
- quantization
(numeric) quantization parameter, use this to quantize geometry prior to computing topology. Typical values are powers of ten (
1e4
,1e5
, ...), default is0
to not perform quantization. For more information about quantization, see this by Mike Bostock https://stackoverflow.com/questions/18900022/topojson-quantization-vs-simplification/18921214#18921214- ...
Further args passed on to internal functions. For Spatial* classes, data.frames, regular lists, and numerics, it is passed through to
sf::st_write()
. For sf classes, geo_lists and json classes, it is passed through tojsonlite::toJSON()
.
Value
A topojson_write
class, with two elements:
path: path to the file with the TopoJSON
type: type of object the TopoJSON came from, e.g., SpatialPoints
Details
Under the hood we simply wrap geojson_write()
, then
take the GeoJSON output of that operation, then convert to TopoJSON with
geo2topo()
, then write to disk.
Unfortunately, this process requires a number of round trips to disk, so speed ups will hopefully come soon.
Any intermediate geojson files are cleaned up (deleted).