collapse = TRUE,
  comment = "#>",
  fig.path = "README-"

Travis-CI Build Status codecov License: GPL v3

sprawl - Spatial Processing (in) R: Amdvanced Workflow Library

Intro and rationale

Support for spatial processing tasks is provided in R by several great packages, spanning from all-purpose packages providing generalized access to the main spatial data classes and corresponding processing methods (e.g., sp and sf, raster and rgdal - providing functions for handling raster and vector spatial data -), to more "specialized" ones meant to allow conducting more specific processing tasks (e.g., geosphere, raster, landsat, MODIStsp), or to provide optimized/improved/easier solutions for methods already provided by the aforementioned general-purpose packages (e.g., velox, mapview) (Curated lists of some very good packages can be found here, here and here).

This huge variability provides advanced R programmers with great flexibility for conducting simple or complex spatial data analyses, by combining functionalities of different packages within custom scripts. At the same time, it may be confusing for less skilled programmers, who may struggle with dealing with multiple packages and don't know that a certain processing task may be more efficiently conducted by using less-known (and sometimes difficult to find) packages.

In this context, sprawl aims to simplify the execution of some "common" spatial processing tasks (e.g., reading/writing spatial datasets, extracting statistics from large datasets, etc.) by providing a single and (hopefully) simpler access point to functionalities spread in the R packages ecosystem.

Package philosophy

The aforementioned objectives are accomplished in sprawl by:

  1. Providing simple wrappers to common-use functions for reading/writing spatial data (e.g., readvec and writevec to read/write vector files from/to disk);
  2. Providing optimized functions for performing some common-use processing tasks, often exploiting functions provided by less-known packages (e.g., maskraster);
  3. Providing custom functions for performing more complex processing tasks (e.g., extract_rast) involving the use of different functions and/or packages;
  4. Optimizing code execution speed by providing under-the-hood support for multi-core processing using for example foreach looping and raster::MakeCluster functionality;
  5. Simplifying access/further analysis of results, by carefully formatting processing outputs to easy to understand and use R objects.

Given this, sprawl is expected to be a broadly-aimed (and therefore rather "amorphous") and rapidly-changing package, which functionalities are expected to 1. gradually grow to include additional functions/wrappers, and 2. be sometimes removed/changed as soon as similar or better functionalities start to be provided by different/more focused packages.

sprawl is currently developed and maintained by personnel of the Milan section of CNR-IREA (Institute on Remote Sensing of Environment - National Research Council, Italy -


If you stumble on this page, please be advised that sprawl is currently in an early stage of development. This means that things are going to change rapidly, and we do not guarantee that everything works as expected. Additionally, be warned that until a first official version is released, functions may change behaviour or even completely disappear while we test different approaches and solutions ! (besides this: we would be happy to have beta-testers !)


You can install sprawl from git-hub with:


Note that, given its rather broad scope, sprawl imports functions from several other packages. Since some of those have quite specific System Requirements, it's possible that you'll struggle a bit in installation due to unresolved dependencies. In that case, please have a look at the installation error messages to see which package has problems in installation and try to install it beforehand (consulting its specific CRAN pages or doing a stackoverflow search may help !).

Package Documentation

The main functions available in sprawl will bedocumented in sprawl website at here, along with usage examples and benchmarking results.


We are open for contributions/help in improving sprawl and extend its functionalities. If you have a suggestion for and additional functionality please report it in our issues page. If you wish to contribute to sprawl development, please see our [Contributing page] on Git Hub (COMING SOON !).


sprawl is currently developed and maintained by Lorenzo Busetto and Luigi Ranghetti of CNR-IREA (Institute on Remote Sensing of Environment - National Research Council, Italy -


To cite package sprawl in publications use:

Lorenzo Busetto and Luigi Ranghetti (2017). sprawl: Spatial Processing (in) R: Advanced Workflow Library. R package version

Please note that this project is released with a Contributor Code of Conduct. By participating in this project you agree to abide by its terms.

IREA-CNR-MI/sprawl documentation built on Aug. 6, 2017, 12:56 p.m.