knitr::opts_chunk$set(collapse = TRUE)

This vignette describes a number of issues that did not come up in the previous vignettes, and that may or may not be categorized as "frequently asked questions". Readers are encouraged to provide entries for this vignette (as for the others).

What is this EPSG code all about?

EPSG stands for a maintained, well-understood registry of spatial reference systems, maintained by the International Association of Oil \& Gas Producers (IOGP). EPSG stands for the authority, e.g. EPSG:4326 stands for spatial reference system with ID 4326 as it is maintained by the EPSG authority. The website for the EPSG registry is found at the epsg.org domain. Using 4326 instead of EPSG:4326 is allowed (EPSG is the default authority) but the latter form, EPSG:4326 is better (less ambiguous).

Why should we use OGC:CRS84 instead of EPSG:4326?

EPSG:4326 formally defines coordinate axes to be in the order latitude-longitude, but practically all data sources and software environments use longitude-latitude axis order. OGC:CRS84 is equivalent to EPSG:4326 except that it defines coordinate axis order longitude-latitude, removing this ambiguity so to speak. See also st_axis_order()

How does sf deal with secondary geometry columns?

sf objects can have more than one geometry list-column, but always only one geometry column is considered active, and returned by st_geometry(). When there are multiple geometry columns, the default print methods reports which one is active:

library(sf)
demo(nc, ask = FALSE, echo = FALSE)
nc$geom2 = st_centroid(st_geometry(nc))
print(nc, n = 2)

We can switch the active geometry by using st_geometry<- or st_set_geometry(), as in

plot(st_geometry(nc))
st_geometry(nc) <- "geom2"
plot(st_geometry(nc))

Does st_simplify preserve topology?

st_simplify() is a topology-preserving function, but does this on the level of individual feature geometries. That means, simply said, that after applying it, a polygon will still be a polygon. However when two features have a longer shared boundary, applying st_simplify to the object does not guarantee that in the resulting object these two polygons still have the same boundary in common, since the simplification is done independently, for each feature geometry.

Why do my dplyr verbs not work for sf objects?

They do! However, many developers like to write scripts that never load packages but address all functions by the sf:: prefix, as in

i = sf::st_intersects(sf1, sf2)

This works up to the moment that a dplyr generic like select for an sf object is needed: should one call dplyr::select (won't know it should search in package sf) or sf::select (which doesn't exist)? Neither works. One should in this case simply load sf, e.g. by

library(sf)


r-spatial/sf documentation built on April 18, 2024, 2:16 a.m.