Simple Features for R
A package that provides simple features access for R.
- represents simple features as records in a
tibblewith a geometry list-column
- represents natively in R all 17 simple feature types for all dimensions (XY, XYZ, XYM, XYZM)
- interfaces to GEOS for geometrical operations on projected coordinates, and (through R package s2) to s2geometry for geometrical operations on ellipsoidal coordinates
- interfaces to GDAL, supporting all driver options,
- interfaces to PRØJ for coordinate reference system conversion and transformation
- uses well-known-binary serialisations written in C++/Rcpp for fast I/O with GDAL and GEOS
- reads from and writes to spatial databases such as PostGIS using DBI
- is extended by
(Illustration (c) 2018 by Allison Horst)
Blogs, presentations, vignettes, sp-sf wiki
- an open access R Journal article summarizes the package
- package vignettes: first, second, third, fourth, fifth, sixth, seventh
- blog posts: first, second, third, fourth
- the original R Consortium ISC proposal, the R Consortium blog post
- presentations: rstudio::conf 2018 (video), UseR! 2016
- wiki page describing sp-sf migration
Install either from CRAN with:
This will install binary packages on Windows and MacOS, unless you configured R such that it tries to install source packages; in that case, see below.
Install development versions from GitHub with:
Installing sf from source works under Windows when Rtools is installed.
MacOS users are strongly encouraged to install the
sf binary packages from CRAN, unless they are familiar with compilers, linking, C++ source code, and homebrew.
The easiest way to install
gdal is using Homebrew. Recent versions of Homebrew include a full-featured up-to-date gdal formula, which installs
gdal at the same time:
brew install pkg-config brew install gdal
Once gdal is installed, you will be able to install
sf package from source in R. With the current version of
proj on homebrew, installation requires additional configuration:
install.packages("sf", type = "source", configure.args = "--with-proj-lib=$(brew --prefix)/lib/")
Or the development version:
library(remotes) install_github("r-spatial/sf", configure.args = "--with-proj-lib=$(brew --prefix)/lib/")
If you are using
rgdal together, it is necessary to install
rgdal from source using this configuration:
install.packages("rgdal", type = "source", configure.args = c("--with-proj-lib=$(brew --prefix)/lib/", "--with-proj-include=$(brew --prefix)/include/"))
Alternatively, these instructions explain how to install gdal using kyngchaos frameworks.
For Mac OS 11 Big Sur source install instruction, see here
For Unix-alikes, GDAL (>= 2.0.1), GEOS (>= 3.4.0) and Proj.4 (>= 4.8.0) are required.
Dependencies for recent versions of Ubuntu (18.04 and later) are available in the official repositories; you can install them with:
apt-get -y update && apt-get install -y libudunits2-dev libgdal-dev libgeos-dev libproj-dev
However, to get more up-to-date versions of dependencies such as GDAL, we recommend adding the ubuntugis-unstable PPA to the package repositories and installing them as follows:
sudo add-apt-repository ppa:ubuntugis/ubuntugis-unstable sudo apt-get update sudo apt-get install libudunits2-dev libgdal-dev libgeos-dev libproj-dev libsqlite0-dev
Adding this PPA is required for installing
sf on older versions of Ubuntu (e.g. Xenial).
Another option, for advanced users, is to install dependencies from source; see e.g. an older Travis config file for hints.
The following command installs all required dependencies:
sudo dnf install gdal-devel proj-devel geos-devel sqlite-devel udunits2-devel
Get gdal, proj and geos from the main repos, and udunits from the AUR:
pacman -S gdal proj geos arrow podofo-0.9 yay/pacaur/yaourt/whatever -S udunits
Multiple GDAL, GEOS and/or PROJ versions on your system
If you use dynamic linking (installation from source) and have multiple versions of these libraries installed (e.g. one from ubuntugis-unstable, another installed from source in
/usr/local/lib) then this will in general not work, even when setting
LD_LIBRARY_PATH manually. See here for the reason why.
- Contributions of all sorts are most welcome, issues and pull requests are the preferred ways of sharing them.
- When contributing pull requests, please adhere to the package style (in package code use
<-; don't change indentation; tab stops of 4 spaces are preferred)
- This project is released with a Contributor Code of Conduct. By participating in this project you agree to abide by its terms.
How to cite
sf can be cited as:
Edzer Pebesma, 2018. Simple Features for R: Standardized Support for Spatial Vector Data. The R Journal 10:1, 439-446.
This project gratefully acknowledges financial support from the