Announcing the WhiteboxTools library


Things have been moving forward with Whitebox GAT at a fast pace recently. I have had numerous request over the years from people who want to use Whitebox GAT tools from outside of the user interface (UI). While all of Whitebox’s tools can be called from scripts, historically, there has been no way to call a Whitebox tool from outside the UI. Quite some time ago, I committed myself to finding a solution for this problem but efforts have been delayed by a coincident urgent development need. Increasingly the decision to develop Whitebox GAT in Java has been problematic as systems provide ever more marginal support for the Java platform. The solution to these two issues (i.e. external automation of Whitebox tools and the need to decrease reliance on Java) has a convenient synergistic overlap. Today I am publicly announcing the WhiteboxTools library. WhiteboxTools is a sub-project of the Whitebox GAT open-source GIS project. A description below is taken from the WhiteboxTools website:

WhiteboxTools is an advanced geospatial data analysis engine. The library has been developed using the Rust programming language, a very performant and safe systems language often viewed as a modern replacement for C/C++. 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 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 (e.g. from Python automation scripts). WhiteboxTools is intended to meet these usage requirements. Eventually most of the approximately 400 tools contained within Whitebox GAT will be ported to WhiteboxTools. 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 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.”

At the time of writing, approximately 170 of Whitebox GAT’s plugins have been added to the WhiteboxTools library and more are added every day. WhiteboxTools is already a powerhouse of geospatial analysis in a small 5MB package! The development to date has focused on porting Whitebox’s extensive raster and LiDAR analysis toolset and vector support will eventually be added as well. Distributed under the highly permissive MIT license, WhiteboxTools can be embedded into other software projects to provide geospatial analytical capabilities. The library is currently considered experimental; as the project stabilizes, its functionality will be incorporated into the larger Whitebox GAT project itself. Feedback and contributions are always welcome.