PZero is a Python open-source 3D geological modelling application, leveraging various libraries, with a user-friendly graphical user interface allowing to perform most standard geomodelling data management and analysis tasks, explicit surface interpolation, and advanced implicit interpolation.
Up-to-date PZero executables can be downloaded for Windows, Mac, and Ubuntu in the Releases. Mac executables are available for both ARM and Intel processors. After downloading, unzip the archive in any location you like on your disk, then run the executable. Sometimes you might be asked to autorize it. On Windows you might need to confirm the autorization in a pop-up window. On Linux you might need to allow execution with chmod +x pzero-Linux
in the terminal. On Mac you might need to allow "Developer Mode" in Apple Menu > System Settings > Privacy & Security, and then sometimes allow execution of PZero with chmod +x pzero-macOS-<your architecture>
in the terminal.
For your first steps with PZero, a very simple and a more advanced test projects can be downloaded.
As discussed more in details in this wiki page, the architecture of PZero is based on several open-source libraries. VTK provides classes for all 3D objects, in addition to 3D visualization and basic analysis and modelling tools. The PZero graphical user interface is built with Qt. All objects in a PZero project and their metadata are collected and managed in Pandas dataframes. We use a VTK-Numpy interface that allows performing most mathematical processing with simple NumPy syntax, while 2D plotting is performed with Matplotlib. PyVista provides simplified access to VTK visualization and I/O tools. Various 2D graphical and topological editing tools in PZero are based on Shapely, while GeoPandas, Rasterio, Xarray, laspy, and EzDxf provide I/O tools for GIS, point cloud, and CAD data. LoopStructural provides three different implicit surface interpolation algorithms. mplstereonet provides stereoplots for orientation analysis.
Developers of these libraries are warmly thanked!
The PZero project started in spring 2020 thanks to a research project funded by Pro Iter Tunnelling & Geotechnical Department and lead by Andrea Bistacchi and Luca Soldo. PZero is now supported by the Geosciences IR project lead by ISPRA - Servizio Geologico d'Italia and funded by PNRR.
The PZero developers are (or have been):
- Andrea Bistacchi (since the beginning)
- Gloria Arienti (December 2021 - January 2023)
- Gabriele Benedetti (since January 2022)
- Tommaso Comelli (April 2023 - July 2023)
- Waqas Hussain (since November 2023)
- Riccardo Monti (since November 2023)
We acknowledge Geode-Solutions, Studio Vertix and Luca Penasa for their contribution regarding software engineering, testing, and a more robust software development and project management in general. Alessandro Frigeri has provided an enthusiastic support since the beginning.
PZero © 2020 by Andrea Bistacchi, released under GNU AGPLv3 license.
The name of PZero was inspired by the zeroth element in Emile Argand's 3D model of the Pennine Alps nappe stack - possibly the first quantitative 3D geological model in the history of geological sciences (Argand E., 1911. Les Nappes de recouvrement des Alpes pennines et leurs prolongements structuraux. Mat. Carte géol. Suisse, 31, 1-26), and by Python.
If you want to know more about the project or want to contribute, our Wiki can help!
PZero runs on Linux, macOS and Windows. Executable files can be downloaded from the releases section of this repository.
Alternatively, you can download the most recent source code and test it, provided that a suitable Python and required libraries are installed as discussed in the Wiki.
We have uploaded some test project on public repositories: