suppressPackageStartupMessages({ library("jsonify", quietly = TRUE) library("geojsonsf") library("sp") library("sf", quietly = TRUE) library("jsonlite") }) withr::local_options( "rgdal_show_exportToProj4_warnings" = "none", "mapshaper.sys_quiet" = TRUE ) ## Objects for testing basic_poly <- function(attr = FALSE) { structure( paste0( '{"type":"FeatureCollection", "features":[ {"type":"Feature",', ifelse(attr, '"properties":{"a": 1, "b": 2},', '"properties":{},'), '"geometry":{"type":"Polygon","coordinates":[[ [102,2],[102,3],[103,3],[103,2],[102,2] ]]}} ,{"type":"Feature",', ifelse(attr, '"properties":{"a": 5, "b": 3},', '"properties":{},'), '"geometry":{"type":"Polygon","coordinates":[[ [100,0],[100,1],[101,1],[101,0],[100,0] ]]}}]}' ), class = c("geojson", "json") ) } basic_points <- function() { structure( '{"type":"FeatureCollection", "features":[{ "type":"Feature", "geometry":{"type":"Point","coordinates":[-78.41,-53.95]}, "properties":{"x":-78,"y":-53,"foo":0}},{ "type":"Feature", "geometry":{"type":"Point","coordinates":[-70.86,65.19]}, "properties":{"x":-71,"y":65,"foo":1}},{ "type":"Feature", "geometry":{"type":"Point","coordinates":[135.65,63.10]}, "properties":{"x":135,"y":65,"foo":2}}]}', class = c("geojson", "json") ) } basic_lines <- function() { structure( "{\"type\":\"FeatureCollection\", \"features\":[{\"type\":\"Feature\", \"properties\":{\"a\":1,\"b\":2,\"c\":3}, \"geometry\":{\"type\":\"LineString\", \"coordinates\":[[102,2],[102,4],[104,4],[104,2],[102,2]]}}]}", class = c("geojson", "json") ) } ce_poly <- structure( '{"type":"FeatureCollection","features":[{ "type": "Feature", "properties": {}, "geometry": { "type": "Polygon", "coordinates": [ [ [53, -42], [57, -42], [57, -47], [53, -47], [53, -42] ] ] }}] }', class = c("geojson", "json") ) ce_line <- structure( '{"type":"FeatureCollection","features":[ { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [60, -37], [52, -42] ] }, "properties": {} }] }', class = c("geojson", "json") ) ce_points <- structure( '{"type":"FeatureCollection","features":[{"type":"Feature","geometry":{"type":"Point","coordinates":[53,-42]},"properties":{}},{"type":"Feature","geometry":{"type":"Point","coordinates":[57,-42]},"properties":{}}]}', class = c("geojson", "json") ) ce_inner_poly <- structure( '{ "type": "Feature", "properties": {}, "geometry": { "type": "Polygon", "coordinates": [ [ [51, -40], [55, -40], [55, -45], [51, -45], [51, -40] ] ] } }', class = c("geojson", "json") ) ce_poly_spdf <- GeoJSON_to_sp(ce_poly) ce_poly_sp <- as(ce_poly_spdf, "SpatialPolygons") ce_line_spdf <- GeoJSON_to_sp(ce_line) ce_line_sp <- as(ce_line_spdf, "SpatialLines") ce_points_spdf <- GeoJSON_to_sp(ce_points) ce_points_sp <- as(ce_points_spdf, "SpatialPoints") ce_inner_poly_spdf <- GeoJSON_to_sp(ce_inner_poly) ce_poly_sf <- sf::st_as_sf(ce_poly_spdf) ce_poly_sfc <- sf::st_as_sfc(ce_poly_sp) ce_lines_sf <- sf::st_as_sf(ce_line_spdf) ce_points_sf <- sf::st_as_sf(ce_points_spdf) ce_inner_poly_sf <- sf::read_sf(unclass(ce_inner_poly)) innerlines_poly <- structure( '{"type":"FeatureCollection", "features":[ {"type":"Feature", "properties":{"foo": "a"}, "geometry":{"type":"Polygon","coordinates":[[ [102,2],[102,3],[103,3],[103,2],[102,2] ]]}} ,{"type":"Feature", "properties":{"foo": "a"}, "geometry":{"type":"Polygon","coordinates":[[ [103,3],[104,3],[104,2],[103,2],[103,3] ]]}}, {"type":"Feature", "properties":{"foo": "b"}, "geometry":{"type":"Polygon","coordinates":[[ [102,1],[102,2],[103,2],[103,1],[102,1] ]]}}, {"type":"Feature", "properties":{"foo": "b"}, "geometry":{"type":"Polygon","coordinates":[[ [103,1],[103,2],[104,2],[104,1],[103,1] ]]}}]}', class = c("geojson", "json") ) innerlines_poly_spdf <- GeoJSON_to_sp(innerlines_poly) innerlines_poly_sp <- as(innerlines_poly_spdf, "SpatialPolygons") innerlines_poly_sf <- read_sf(unclass(innerlines_poly)) innerlines_poly_sfc <- st_geometry(innerlines_poly_sf)