Skip to content


Two main software products are developed in the Geomorphometry & Hydrogeomatics Research Group including the GIS Whitebox Geospatial Analysis Tools (Whitebox GAT) and the GoSpatial command-line utility program. Both of these software packages are distributed under open-source licenses.

Whitebox Geospatial Analysis Tools (visit the Whitebox GAT page)

The Whitebox GAT project began in 2009 and was conceived as a replacement for the Terrain Analysis System (TAS). Whitebox GAT was intended to have a broader focus than its predecessor, positioning it as an open-source desktop GIS and remote sensing software package for general applications of geospatial analysis and data visualization. Whitebox GAT is intended to provide a platform for advanced geospatial data analysis with applications in both environmental research and the geomatics industry more broadly. It was envisioned from the outset as providing an ideal platform for experimenting with novel geospatial analysis methods. Equally important is the project’s goal of providing a tool that can be used for geomatics-based education. For more information, please visit the Whitebox GAT website.

Whitebox GAT screenshot

Do you want to cite Whitebox GAT in your work?

Lindsay JB. 2016. Whitebox GAT: A case study in geomorphometric analysis. Computers & Geosciences, 95: 75-84. DOI: 10.1016/j.cageo.2016.07.003


WhiteboxTools (visit the WhiteboxTools GitHub page)

WhiteboxTools logo

WhiteboxTools is an advanced geospatial data analysis engine developed at the University of Guelph's Geomorphometry and Hydrogeomatics Research Group using the Rust programming language. Although WhiteboxTools is intended to serve as a source of plugin tools for the Whitebox GAT open-source GIS project, the tools contained in the command-line library are stand-alone and can run outside of the larger Whitebox GAT project. See Usage for further details. There have been a large number of requests to call Whitebox GAT tools and functionality from outside of the Whitebox user-interface, for example, from Python automation scripts. WhiteboxTools is intended to meet these usage requirements. A simple example Python script that calls various functions of the WhiteboxTools command-line program can be found here. The WhiteboxTools Runner is an example of a more elaborate Python-based user-interface for interacting with the WhiteboxTools library.

The WhiteboxTools Runner user-interface

Eventually most of the 400 tools contained within Whitebox GAT will be ported to WhiteboxTools. Currently, approximately 250 of the Whitebox GAT tools have been ported in a repository of more than 70,000 lines of Rust code. See this link for a list of tools and details on the porting progress.

In addition to separating the processing capabilities and the user-interface (and thereby reducing the reliance on Java), this migration should significantly improve processing efficiency. This is because Rust, the programming language used to develop WhiteboxTools, is generally faster than the equivalent Java code and because many of the WhiteboxTools functions are designed to process data in parallel wherever possible. In contrast, the older Java codebase included largely single-threaded applications. This migration to native-compiled Rust code should also reduce the memory requirements of the tools, which should allow for the processing of larger geospatial files.

The WhiteboxTools project has been developed using a permissive MIT license, which allows for the tools to be readily incorporated into other GIS software. It is our intent to make these high-quality geospatial tools available to other open-source GIS projects. To this end, WhiteboxTools is capable of reading and writing several common raster data formats (including GeoTiff) and reading/writing LiDAR data in LAS file format, including zip-compressed LAS. At present, WhiteboxTools does not have the ability to read/write vector data. There are plans to add support for Shapefiles and other common vector data formats in the future.

The WhiteboxTools project is related to the GoSpatial project, which has similar goals but is designed using the Go programming language instead of Rust. WhiteboxTools has superseded the GoSpatial project. All of the GoSpatial tools are currently incorporated into the WhiteboxTools project. The GoSpatial project code will be maintained for archival purposes.

Download WhiteboxTools (v. 0.2.0) binaries

Downloading or using any of the following files carries with it the implicit agreement to abide by the terms of the license.

  • MacOS 64-bit (3.0 MB zipped)
  • Windows 64-bit (2.7 MB zipped)
  • Linux 64-bit (2.7 MB zipped)

Warning, WhiteboxTools is still under active development and testing. The API may change in future versions and individual tools may contain bugs. If you encounter issues, please contact Dr. Lindsay.

For other platforms, WhiteboxTools can be compiled from the source code with the following steps:

  1. Install the Rust compiler; Rustup is recommended for this purpose. Further instruction can be found at this link.
  2. Download the Whitebox GAT source code. Note: WhiteboxTools is currently housed as a sub-repository of the main Whitebox GAT repo. To download the code, click the green Clone or download button on the GitHub repository site.
  3. Decompress the zipped download file.
  4. Open a terminal (command prompt) window and change the working directory to the whitebox_tools sub-folder, which is contained within the decompressed downloaded Whitebox GAT folder:

  5. >> cd /path/to/folder/whitebox_tools/

  6. Finally, use the rust package manager Cargo, which will be installed along with Rust, to compile the executable:

  7. >> cargo build --release

Depending on your system, the compilation may take several minutes. When completed, the compiled binary executable file will be contained within the whitebox_tools/target/release/ folder. Type ./whitebox_tools --help at the command prompt (after cd'ing to the containing folder) for information on how to run the executable from the terminal.

WhiteboxTools help screenshot

Later, you may wish to move the executable file to its own folder along with the and Python scripts, although you do not need these scripts to use WhiteboxTools. Note, running these scripts requires Python 3 to be installed.


GoSpatial (visit the GoSpatial GitHub page)

Warning: This project was developed during a period when I was experimenting with different alternatives to Java for developing Whitebox GAT. I have now settled on the Rust programming language for future development efforts. The tools that are contained within the GoSpatial codebase have since been ported to WhiteboxTools (see above). This project is being maintained for archival purposes only.

GoSpatial is a command-line interface program for analyzing and manipulating geospatial data. It has been developed using the Go programming language and is compiled to native code. The project is experimental and is intended to provide additional analytical support for the Whitebox Geospatial Analysis Tools open-source GIS software. GoSpatial can however be run completely independent of any other software and is run from a single self-contained executable file. The source code can be accessed from the GitHub repository along with help documentation. GoSpatial is distributed under an open-source MIT License.

GoSpatial screenshot

Why GoSpatial?

GoSpatial hits some niches that I cannot get to with Whitebox GAT. It's small and lightweight. It's also compiled to native code and does not rely on the previous installation of a virtual machine (VM), whereas Whitebox GAT runs on the Java VM. You can easily call GoSpatial functions from a Python or Ruby script, which is something that can be difficult with Whitebox GAT. Whitebox GAT is very much tied to its native raster data format but GoSpatial will happily ingest and write numerous common raster formats including GeoTIFF, Esri (binary and ASCII), GRASS GIS ASCII, Whitebox GAT, SAGA binary, Golden Software ASCII, and IDRISI binary raster formats. This can be a convenient way to export a Whitebox raster to a GeoTIFF. GoSpatial is written using the Go programming language (a.k.a. Golang), which is known for its excellent concurrent programming support. This means that I am more easily able to experiment with parallel versions of geospatial analysis tools than I would be able to in Whitebox GAT. Frankly, learning Go was something that I had wanted to do for a while and GoSpatial provided an excellent excuse to do so.

GoSpatial will never replace Whitebox GAT, which will continue to be the main focus of my future development efforts. I think that GoSpatial has the potential to compliment Whitebox in ways that will improve both software packages.

Download GoSpatial (v.

  • MacOS 64-bit (1.3 MB zipped)
  • Windows 64-bit (1.4 MB zipped)
  • Windows 32-bit (1.3 MB zipped)
  • Linux 64-bit (1.3 MB zipped)
  • Linux 32-bit (1.2 MB zipped)

Do you want to cite GoSpatial in your work?

The following paper uses the GoSpatial Library and describes it briefly:

Lindsay JB. 2016. Efficient hybrid breaching-filling sink removal methods for flow path enforcement in digital elevation models. Hydrological Processes, 30(6): 846–857. DOI: 10.1002/hyp.10648

Hexagonal tessellation

Contact Information

Dr. John Lindsay
Rm. 346 Hutt Building
Department Geography
University of Guelph
50 Stone Rd. East
Guelph, ON, Canada, N1G 2W1

Phone: 519-824-4120 ext. 56074

Recent News

No recent updates.