The Geological Subsurface Toolbox (geost) package is designed to be an easy-to-use Python interface for working with subsurface point data in The Netherlands(boreholes, well logs and CPT's). It provides selection, analysis and export methods that can be applied generically to the loaded data. It is designed to connect with other Deltares developments such as iMod and DataFusionTools.
The internal BoreholeCollection, LogCollection and CptCollection classes use Pandas for storing data and header information. It utilizes a custom, lightweight validation module inspired by the Pandera API. For spatial functions Geopandas is used. The package also supports reading/writing parquet and geoparquet files through Pandas and Geopandas respectively.
GeoST was formerly known as PySST. We had to change the name to avoid a name conflict on PyPi
- From local files
- geost .parquet file (complete)
- Dino csv geological boreholes (complete)
- Dino XML geological boreholes (planned)
- BRO XML geotechnical boreholes (planned)
- BRO XML soil boreholes (planned)
- GEF boreholes (planned)
- GEF CPT's (complete)
- BRO XML CPT's (planned)
- BRO geopackage CPT's (planned)
- Well log LAS files (planned)
- Well log ASCII files (planned)
- Directly from the BRO (REST API) (all planned)
- CPT
- BHR-P
- BHR-GT
- BHR-G
After loading data from one of the supported formats it will automatically be validated. If the validation is succesful, a Collection object will be returned depending on your input data type (mixed CPT/well log/borehole collections are not allowed). A collection object consists of two main attributes: the header table and the data table. The header attribute is a table that contains one entry per object and provides some general information about the name, location, surface level, and borehole/log/cpt start and end depths. The data attribute is a table that includes the data for every described layer (boreholes) or measurement (well logs, cpt's).
The collection object comes with a comprehensive set of methods that can be applied generically:
- Selection methods (e.g., objects within bounding box, within or close to geometries, based on depth and other conditions)
- Export methods (e.g. to csv, parquet, geopackage, VTK, DataFusionTools, Kingdom* , etc)
- Datafusion methods (e.g. combining collections*, combining with data from maps, conversion of description protocols*)
- Miscellaneous methods (e.g. changing vertical/horizontal position reference system)
For a better overview of basic functionality, see the Basics Tutorial.
You can contribute by testing, raising issues and making pull requests. Some general guidelines:
- Use new branches for developing new features or bugfixes. Use prefixes such as feature/ bugfix/ experimental/ to indicate the type of branch
- Add unit tests (and test data) for new methods and functions. We use pytest.
- Add Numpy-style docstrings
- Use Black formatting with default line lenght (88 characters)
- Update requirement.txt en environment.yml files if required
MIT license (Note: may change to a copyleft license in the future, depending on Deltares management decisions)