Software setup
Installing River Architect, what it needs, how its files are organised, and where it writes its logs. This is section 1 of the original wiki’s Installation, rewritten for the open-source release.
What changed since the ArcGIS version
River Architect no longer requires ArcGIS Pro, an Esri licence or the Spatial
Analyst extension, and it is no longer Windows-only. Everything the original did with
arcpy now runs on GDAL through rasterio, with numpy and scipy for the algebra and
geopandas for the vector side. Map production runs on QGIS print layouts instead of
ArcGIS layout templates.
The practical consequence for setup: you install a conda environment, not a GIS. The one exception is the Maps tab, which needs the QGIS Python bindings - see Maps.
The short version
git clone https://github.com/RiverArchitect/riverarchitect.git
cd riverarchitect
mamba env create -f environment.yml
mamba activate ra-env
pip install -e ".[all]"
./runRiverArchitectLinux.sh # runRiverArchitectWin.bat on Windows
The launcher opens the interface on the bundled sample data. Open Help ▸ Live Guide: Example and work through The worked example: the whole chain on the sample reach.
In this section
Requirements at a glance
Python |
3.9 or newer; 3.12 in the shipped environment |
Core |
numpy, scipy, rasterio, geopandas, shapely, pyproj, pandas, openpyxl |
Interface |
PySide6, or the PyQt5 that QGIS brings; tkinter is the fallback and is always present |
Mapping |
QGIS 3.x and its Python bindings, in the interpreter QGIS was installed with |
Optional |
pykrige (kriging), rasterstats (zonal statistics), whitebox (terrain), matplotlib |
Operating system |
Linux, macOS, Windows |
None of these needs a licence.
Where things live
A project directory is the root that everything resolves against. Set it with the
Project menu, with the RIVERARCHITECT_HOME environment variable, or as the first
argument to the launcher.
<project>/
├── 00_Flows/<condition>/ flow duration curves, daily flow records
├── 01_Conditions/<condition>/ the input rasters and input_definitions.inp
├── 02_Maps/ QGIS projects and exported PDFs
└── Output/<module>/<condition>/ every analysis result
The package is separate from your data and holds only code and lookup tables
(Fish.xlsx, morphological_units.xlsx, recruitment_parameters.xlsx, QGIS layer styles).
Nothing writes into it.
Logfiles
Every module logs through the standard library logging module, to the logger named
riverarchitect. The interface prints that stream to the console it was started from. To
capture it to a file:
import logging
logging.basicConfig(filename="riverarchitect.log", level=logging.INFO)
The original wrote fixed logfile.log files into each module’s own folder. Routing through
logging instead means the messages can go wherever a project wants them, and that a module
used as a library does not scatter files.