I have been working on an open-source geoprocessing library called WhiteboxTools that can be used in place of ArcPy in many applications. Currently there are nearly 300 tools available for processing raster, vector, and LiDAR (LAS) data, although the plan is to eventually port over all of the 400+ tools available in Whitebox GAT. Although the tools are developed using the Rust programming language (for efficiency), each tool is callable from Python, as in the following example:
from whitebox_tools import WhiteboxTools
wbt = WhiteboxTools()
# Set the working directory. This is the path to the folder containing the data,
# i.e. files sent to tools as input/output parameters. You don't need to set
# the working directory if you specify full path names as tool parameters.
wbt.work_dir = "/path/to/data/"
# The most convenient way to run a tool is to use its associated method, e.g.:
wbt.elev_percentile("DEM.tif", "output.tif", 15, 15)
# You may also provide an optional custom callback for processing output from the
# tool. If you don't provide a callback, and verbose is set to True, tool output
# will simply be printed to the standard output.
def my_callback(value):
if user_selected_cancel_btn: # Assumes a 'Cancel' button on a GUI
print('Cancelling operation...')
wbt.cancel_op = True
else:
print(value)
wbt.breach_depressions('DEM.flt', 'DEM_breached.flt', callback=my_callback)
# List all available tools in WhiteboxTools
print(wbt.list_tools())
# Lists tools with 'lidar' or 'LAS' in tool name or description.
print(wbt.list_tools(['lidar', 'LAS']))
# Print the help for a specific tool.
print(wbt.tool_help("ElevPercentile"))
# Want to read the source code for a tool?
# 'view_code' opens a browser and navigates to a tool's
# source code in the WhiteboxTools GitHub repository
wbt.view_code('watershed')
More detailed information can be found provided in the WhiteboxTools user manual. The library is stand-alone and does not have any other dependencies. You simply need to download the small (< 5Mb) file located here. The download file contains the WhiteboxTools exe, the whitebox_tools.py script, which provides the Python API for the library (imported on the top line of the above script), and the user manual. There is also a very basic tkinter GUI (wb_runner.py) for interfacing with the library.
The permissive MIT licence is intended to allow WhiteboxTools to be integrated as a back-end with other open-source GIS; Alexander Bruy has developed a QGIS plugin for the WhiteboxTools back-end. You may also mix and match tools from WhiteboxTools and ArcPy in a single script as needed. The library is still somewhat experimental, developed out of the University of Guelph's Geomorphometry and Hydrogeomatics Research Group, and is currently pre-1.0 release, which should be taken into account in usage.