Read geojson or other formats from a local file or a URL
Read geojson or other formats from a local file or a URL
geojson_read( x, parse =FALSE, what ="list", stringsAsFactors =FALSE, query =NULL,...)
Arguments
x: (character) Path to a local file or a URL.
parse: (logical) To parse geojson to data.frame like structures if possible. Default: FALSE
what: (character) What to return. One of "list", "sp" (for Spatial class), or "json". Default: "list". "list" "and" sp run through package sf. if "json", returns json as character class
stringsAsFactors: Convert strings to Factors? Default FALSE.
query: (character) A SQL query, see also postgis
...: Further args passed on to sf::st_read()
Returns
various, depending on what's chosen in what parameter
list: geojson as a list using jsonlite::fromJSON()
sp: geojson as an sp class object using sf::st_read()
json: geojson as character string, to parse downstream as you wish
Details
This function supports various geospatial file formats from a URL, as well as local kml, shp, and geojson file formats.
File size
We previously used file_to_geojson() in this function, leading to file size problems; this should no longer be a concern, but let us know if you run into file size problems
Examples
## Not run:# From a filefile <- system.file("examples","california.geojson", package ="geojsonio")(out <- geojson_read(file))geojson_read(file)# From a URLurl <-"https://raw.githubusercontent.com/glynnbird/usstatesgeojson/master/california.geojson"geojson_read(url)geojson_read(url, parse =TRUE)# Use as.location first if you wantgeojson_read(as.location(file))# output a SpatialClass object## read kmlfile <- system.file("examples","norway_maple.kml", package ="geojsonio")geojson_read(as.location(file), what ="sp")## read geojsonfile <- system.file("examples","california.geojson", package ="geojsonio")geojson_read(as.location(file), what ="sp")## read geojson from a urlurl <-"https://raw.githubusercontent.com/glynnbird/usstatesgeojson/master/california.geojson"geojson_read(url, what ="sp")## read from a shape filefile <- system.file("examples","bison.zip", package ="geojsonio")dir <- tempdir()unzip(file, exdir = dir)shpfile <- list.files(dir, pattern =".shp", full.names =TRUE)geojson_read(shpfile, what ="sp")x <-"https://raw.githubusercontent.com/johan/world.geo.json/master/countries.geo.json"geojson_read(x, what ="sp")geojson_read(x, what ="list")utils::download.file(x, destfile = basename(x))geojson_read(basename(x), what ="sp")# from a Postgres database - your Postgres instance must be running## MAKE SURE to run the setup in the postgis manual file first!if(requireNamespace("DBI")&& requireNamespace("RPostgres")){ library(DBI) conn <- tryCatch(dbConnect(RPostgres::Postgres(), dbname ="postgistest"), error =function(e) e
)if(inherits(conn,"PqConnection")){ state <- "SELECT row_to_json(fc) FROM (SELECT 'FeatureCollection' As type, array_to_json(array_agg(f)) As features
FROM (SELECT 'Feature' As type
, ST_AsGeoJSON(lg.geog)::json As geometry
, row_to_json((SELECT l FROM (SELECT loc_id, loc_name) As l
)) As properties
FROM locations As lg ) As f ) As fc;"
json <- geojson_read(conn, query = state, what ="json") map_leaf(json)}}## End(Not run)