R Under development (unstable) (2024-02-20 r85959 ucrt) -- "Unsuffered Consequences" Copyright (C) 2024 The R Foundation for Statistical Computing Platform: x86_64-w64-mingw32/x64 R is free software and comes with ABSOLUTELY NO WARRANTY. You are welcome to redistribute it under certain conditions. Type 'license()' or 'licence()' for distribution details. R is a collaborative project with many contributors. Type 'contributors()' for more information and 'citation()' on how to cite R or R packages in publications. Type 'demo()' for some demos, 'help()' for on-line help, or 'help.start()' for an HTML browser interface to help. Type 'q()' to quit R. > ### Name: lw_geodetic > ### Title: geodetic length, area, and predicates > ### Aliases: lw_geodetic st_geod_area lw_geodetic st_geod_length > ### lw_geodetic st_geod_segmentize lw_geodetic st_geod_covers > > ### ** Examples > > suppressPackageStartupMessages(library(sf)) > suppressPackageStartupMessages(library(lwgeom)) > suppressPackageStartupMessages(library(units)) > nc = st_read(system.file("gpkg/nc.gpkg", package="sf"), quiet = TRUE) > st_geod_area(nc[1:3,]) Units: [m^2] [1] 1137388604 611077263 1423489919 > # st_area(nc[1:3,]) > l = st_sfc(st_linestring(rbind(c(7,52), c(8,53))), crs = 4326) > st_geod_length(l) 130359.3 [m] > pol = st_polygon(list(rbind(c(0,0), c(0,60), c(60,60), c(0,0)))) > x = st_sfc(pol, crs = 4326) > seg = st_geod_segmentize(x[1], set_units(10, km)) > plot(seg, graticule = TRUE, axes = TRUE) > pole = st_polygon(list(rbind(c(0,80), c(120,80), c(240,80), c(0,80)))) > pt = st_point(c(0,90)) > x = st_sfc(pole, pt, crs = 4326) > st_geod_covers(x[c(1,1,1)], x[c(2,2,2,2)]) Sparse geometry binary predicate list of length 3, where the predicate was `covers' 1: 1, 2, 3, 4 2: 1, 2, 3, 4 3: 1, 2, 3, 4 > st_geod_covered_by(x[c(2,2)], x[c(1,1,1)]) Sparse geometry binary predicate list of length 2, where the predicate was `covered_by' 1: 1, 2, 3 2: 1, 2, 3 > st_geod_covers(x[c(1,1,1)], x[c(2,2,2,2)], sparse = FALSE) [,1] [,2] [,3] [,4] [1,] TRUE TRUE TRUE TRUE [2,] TRUE TRUE TRUE TRUE [3,] TRUE TRUE TRUE TRUE > st_geod_covered_by(x[c(2,2)], x[c(1,1,1)], sparse = FALSE) [,1] [,2] [,3] [1,] TRUE TRUE TRUE [2,] TRUE TRUE TRUE > > # box crossing the dateline: > #box = st_polygon(list(rbind(c(179.5,0), c(179.5,1), c(-179.5,1), c(-179.5,0), c(179.5,0)))) > box = st_polygon(list(rbind(c(179.5,0.1), c(179.5,1), c(-179.5,1), c(-179.5,0.1), c(179.5,0.1)))) > b = st_sfc(box, crs = 4326) > units::set_units(st_geod_area(b), km^2) # approx 111^2 11077.84 [km^2] > > pt = st_point(c(30, 70)) > x = st_sfc(pole, pt, pt, crs = 4326) > # st_geod_distance(x, x) > # st_geod_distance(x, x, sparse = TRUE) > st_geod_distance(x, x, tolerance = 1, sparse = TRUE) Sparse geometry binary predicate list of length 3, where the predicate was `st_is_within_distance' 1: 1 2: 2, 3 3: 2, 3 > > proc.time() user system elapsed 0.62 0.14 0.75