Documentation
Definition of Bedrock
In an abstract sense, the main principles on which something is based. [1]
In the real world, the bedrock is the hard area of rock in the ground that holds up the loose soil above. [1]
In many civil engineering projects, the identification of the bedrock through digging, drilling or geophysical methods is an important task, which greatly influences (foundation) design. [2]
Sources: [1] Bedrock | Cambridge Dictionary, [2] Bedrock | Wikipedia
Bedrock is an open-source Python library that forms the foundation for for Geotechnical Engineering, subsurface modelling and Geo-BIM.
Ground Investigation (GI) data is often stored in specialized file formats that are not easily accessible for modern (geospatial) analysis and visualization workflows. Bedrock lets you transform this GI data into structured objects in Python, enabling you to analyze it, and export it to geospatial databases. This enables integration of GI data with other software and workflows used in the AEC industry.
Hierarchical Nature of GI data
Ground investigation data is information collected about the soil, rock, hydrological and environmental conditions. This information helps engineers design safe and suitable foundations while identifying potential risks and hazards. This is essential for making informed decisions and avoiding problems during construction.
GI data inherently exists in a structured hierarchy. This hierarchy follows how ground investigations are performed. A GI project, say for a new building or bridge, comprises multiple GI locations, such as a borehole. Multiple in-situ tests can be performed at one GI location and can at the same time also yield multiple samples from different depths. In turn, these samples may undergo multiple laboratory tests. These hierarchical relationships can be visualized in a tree diagram like this:
AGS4 Data
Industry GI data formats like AGS implement a hierarchical data structure in text-based files. AGS does so by organizing GI data into structured tables called “Groups”. Each group represents a specific aspect of a Ground Investigation, for example, project information (PROJ), location details (LOCA), sample information (SAMP), or an in-situ test like a Standard Penetration Test (ISPT). These groups are organized in a hierarchical manner: samples and in-situ tests belong to locations, which belong to projects, mirroring how ground investigations are conducted.
AGS4 successfully addresses many aspects of GI data organization, but its specialized nature and age creates limitations.
- Its use is limited to geotechnical engineering applications, meaning we can’t easily process or view the data using common tools. This also inhibits sharing this data with others in the civil engineering sector.
- One project’s data is spread over multiple different files.
Geospatial Databases
The hierarchical structure of GI data aligns closely with relational databases. Relational databases organize data in tables with rows and columns. Tables can be related to each other using keys. A primary key uniquely identifies each row in a table. A foreign key links the rows of one table to the primary keys of another one, allowing data from different tables to be combined and queried efficiently. Relational databases are foundational to modern data management, and probably the most common type of database.
Geospatial databases are extensions of databases with capabilities for storing, accessing, analyzing and visualizing location-based data. Geospatial relational databases have one additional column in their tables, which contains the location or geometry linked to the data in each row. Each row in a geospatial database is called a feature.
Benefits of Geospatial Databases
The purpose of Bedrock is NOT to become THE standard for GI data, because we don’t need 15 instead of 14 competing standards:

Rather, Bedrock lets you transform GI data from specialized formats like AGS 4 into geospatial databases to overcome these constraints while preserving the hierarchical relationships of the data. By assigning (3D) geospatial geometry to each of the GI locations, in-situ tests and samples the GI data becomes a geospatial database. This lets you bridge the gap between specialized GI data formats and the wider world of geospatial / GIS tools and standards.
Geospatial GI data gives you greater flexibility in utilizing your GI data. It makes the GI data accessible through portable file formats like GeoPackage, GeoJSON or GeoParquet or database systems like PostGIS. This breaks data silos and unlocks multiple workflows, from Python-based scientific computing for advanced analysis, machine learning, 3D visualization and creating dashboards, to traditional GIS software for mapping.
Lastly, geospatial databases ensure proper spatial referencing and Coordinate Reference System (CRS) transformations, allowing information to flow across project boundaries. This supports integration with the broader civil engineering ecosystem and throughout the project lifecycle. Allowing your GI data to be viewed with above-ground geospatial information like satellite imagery, Digital Elevation Models (DEM) and be connect with BIM environments through GeoBIM workflows or platforms like Speckle. This way, Bedrock lays the open-source foundation for more comprehensive project understanding and more informed engineering decisions.