functions for spherical geometry, using the s2 package based on the google s2geometry.io library

## Usage

sf_use_s2(use_s2)

st_as_s2(x, ...)

# S3 method for sf
st_as_s2(x, ...)

# S3 method for sfc
st_as_s2(x, ..., oriented = getOption("s2_oriented", FALSE), rebuild = FALSE)

## Arguments

use_s2

logical; if TRUE, use the s2 spherical geometry package for geographical coordinate operations

x

object of class sf, sfc or sfg

...

passed on

oriented

logical; if FALSE, polygons that cover more than half of the globe are inverted; if TRUE, no reversal takes place and it is assumed that the inside of the polygon is to the left of the polygon's path.

rebuild

logical; call s2_rebuild on the geometry (think of this as a st_make_valid on the sphere)

## Value

sf_use_s2 returns the value of this variable before (re)setting it, invisibly if use_s2 is not missing.

## Details

st_as_s2 converts an sf POLYGON object into a form readable by s2.

## Examples

m = rbind(c(-1,-1), c(1,-1), c(1,1), c(-1,1), c(-1,-1))
m1 = rbind(c(-1,-1), c(1,-1), c(1,1), c(-1,1), c(-1,0), c(-1,-1))
m0 = m[5:1,]
mp = st_multipolygon(list(
list(m, 0.8 * m0, 0.01 * m1 + 0.9),
list(0.7* m, 0.6*m0),
list(0.5 * m0),
list(m+2),
list(m+4,(.9*m0)+4)
))
sf = st_sfc(mp, mp, crs = 'EPSG:4326')
s2 = st_as_s2(sf)