GEF-CPT
The GEF-CPT format is a legacy text-based data exchange format for Cone Penetration Test (CPT) data, primarily used in the Netherlands and Belgium. It was created in 1999 to solve interoperability problems in Dutch geotechnical practice, it replaced a proliferation of proprietary formats. The format is no longer maintained and is technically outdated, but it remains in use due to extensive legacy data and support for it in engineering software.
Structure
Section titled “Structure”A GEF-CPT file consists of a Header and a Datablock.
The Header contains structured metadata using keywords that start with #
, defining properties from file format version (#GEFID
) to equipment specifications (#MEASUREMENTVAR
) and coordinate systems (#XYID
, #ZID
). The header ends with #EOH
(End of Header)
After it comes the Datablock, plain tabular data with penetration depth and cone resistance as mandatory columns 1 and 2, followed by optional measurements like friction, pore pressure, or inclination.
This text-based structure makes GEF files human-readable1 while ensuring machine parsing compatibility across different software platforms.
1. ‘Human-readable’ is rather generous. I’d call it human-openable-a-in-a-text-editor at most
Header Keywords
Section titled “Header Keywords”Required
Section titled “Required”Optional
Section titled “Optional”Measurement Variables
Section titled “Measurement Variables”Measurement Variables (#MEASUREMENTVAR
) are numerical parameters that define the physical characteristics and configuration of the CPT equipment and test setup. They use a standardized numbering system where each ID has a specific, predefined meaning.
Each measurement variable follows this format:
#MEASUREMENTVAR = [ID], [value], [unit], [description]
.
The GEF specification reserves IDs 1-128 for standardized measurement variables. Users can define custom measurement variables using IDs outside this range.
Here follow the reserved IDs:
Measurement Text Variables
Section titled “Measurement Text Variables”Measurement Text Variables (#MEASUREMENTTEXT
) store descriptive information using a standardized ID numbering system. Unlike measurement variables (which are numerical), these contain human-readable text describing the project, equipment, and procedures.
#MEASUREMENTTEXT = [ID], [text description]
The following are #MEASUREMENTTEXT
IDs are standardized:
Horizontal Reference System
Section titled “Horizontal Reference System”The #XYID
keyword defines the horizontal coordinate reference system in GEF-CPT files, specifying the positioning datum and location coordinates.
The format is #XYID = code, X, Y, deltaX, deltaY
code
identifies the coordinate system.X
andY
provide the CPT location coordinates.deltaX, deltaY
indicate positioning accuracy.
For example, #XYID = 31000, 79578.38, 424838.97, 0.02, 0.02
places the test at Dutch RD coordinates (79578.38, 424838.97) with ±2cm accuracy.
This keyword enables places the test in real-world coordinates, which enables integration with GIS systems. This in turn enables integration of geotechnical data alongside structural or building models in spatial context.
Local Coordinate Systems
Section titled “Local Coordinate Systems”Code 00000
allows a local coordinate system with its description in #MEASUREMENTTEXT = 7
:
For example:
#XYID = 00000, 125000, 450000, 0.1, 0.1#MEASUREMENTTEXT = 7, Local site grid, origin at main building corner
Vertical Reference System
Section titled “Vertical Reference System”The #ZID
keyword defines the vertical reference system and surface elevation.
It takes the format #ZID = code, elevation, accuracy
.
- The code identifies the height reference system
- Elevation gives the surface level in meters relative to that datum
- Accuracy specifies measurement precision.
For example, #ZID = 31000, +2.45, 0.02
means the CPT surface is 2.45 meters above NAP with ±2cm accuracy.
All penetration depths are measured relative to this surface level. Proper height referencing enables integration with other geotechnical data, topographic surveys, and other construction models like BIM.
Column Quantities
Section titled “Column Quantities”Column Quantities are the standardized physical measurements that can appear in GEF-CPT data columns (#COLUMNINFO
). Each has a unique ID number (1-36) that defines what the column contains.
For example #COLUMNINFO = 3, MPa, pore pressure u2, 6
tells parsers: “Column 3 contains quantity 6 (u2 pore pressure) in MPa”.
The quantity system ensures a column labeled “6” always means “u2 pore pressure”, regardless of which software created the file.
Technical Obsolescence
Section titled “Technical Obsolescence”Though GEF-CPT was an important step forward at the time of its creation, it is architecturally primitive by modern data exchange standards.
Structural limitations
- One file can only represent a single cone penetration test.
- Text-based, single-file structure with no data typing, schema validation, or extensibility.
- Fragile comma-separated value format prone to parsing errors.
Metadata and reference handling
- No timezone information for timestamps
- Coordinate systems defined via lookup tables instead of common spatial reference definitions.
- Column definitions tie metadata directly to fixed column positions in the data block, tightly coupling description with layout
Extensibility and modern use
- Cannot represent hierarchical relationships or complex data structures from modern multi-sensor CPT equipment.
- Workarounds like separate dissipation test files linked by filenames replace proper relational modeling.
Outdated Standards
Section titled “Outdated Standards”The GEF-CPT spec references standards superseded by modern ISO equivalents.
- Soil classification references NEN 5104 (1989), replaced by ISO 14688-2 (2004)
- CPT procedures reference NEN 5140 (1996), replaced by ISO 22476-1 (2012)
This creates a significant gap between current industry capabilities and the format’s design assumptions.
Regulatory Transition and Industry Reality
Section titled “Regulatory Transition and Industry Reality”The Dutch Basis Registratie Ondergrond (BRO) program mandates a transition to XML-based data formats to ensure interoperability and modern regulatory compliance:
Since 2018, data submission in IMBRO/XML format is required. By July 1, 2025, governmental data holders must convert historical GEF-CPT data to IMBRO/XML. A grace period extends until 2030 for full historical migration.
The new BRO laws make geotechnical data in GEF-CPT a “compliance liability”.
The Forces Shaping Formats
Section titled “The Forces Shaping Formats”Different institutional needs drive different format preferences. This quote summarizes the situation
The results of soundings, drillings and samples are processed the day after the investigation, after which the customer receives the report in an XML or GEF file. ‘The XML file is suitable for national databases such as BRO,’ says Van der Burg. ‘The GEF file is compatible with the calculation programmes.’
BRO requires XML because regulatory databases need structured data adhering to current standards for archival integrity and legal compliance. GEF persists because engineering calculation software, like D-Foundations, support it. As far as I know, no engineering software can read BRO’s complex XML structure. For most engineers, the priority is cone resistance data for calculation, not metadata for compliance
IMBRO/XML serves institutional governance; GEF remains established in workflows because it enjoys wider support, thus creating ‘legacy format lock-in’.
GEF 1.1.3 (Retrofit for BRO compatibility)
Section titled “GEF 1.1.3 (Retrofit for BRO compatibility)”Version 1.1.3 was developed specifically for BRO compatibility by extending version 1.1.2 with additional #MEASUREMENTTEXT
fields (101-128) to bridge legacy data formats with modern regulatory requirements. This extension was developed independently of Deltares and represents the final evolution of the GEF-CPT format before IMBRO/XML superseded it.
Information on GEF 1.1.3 is rather hard to find and I have yet to find a full ‘official’ spec for it. The best I’ve found so far is CPTdata.nl GEF1.1.3 Release notes. This official standard refers to the VOTB website for the GEF1.1.3 reference but I can’t find it there.
De Vereniging Ondernemers Technisch Bodemonderzoek (VOTB)
Vanuit de VOTB is geïnventariseerd welke extra informatie (velden) nodig zijn voor de BRO. Tevens zijn vanuit de leden van de VOTB extra velden gedefinieerd ten opzichte van GEF 1.1.2. GEF 1.1.2 is uitgebreid met deze extra velden en heeft de naam GEF 1.1.3 gekregen. De Excel-lijst met extra velden en dataformaat van deze extra velden, wordt beschikbaar via de VOTB website aan haar leden.
VOTB - GEF 1.1.3 – BRO –converter beschikbaar!
BRO Measurement Text Additions
Section titled “BRO Measurement Text Additions”BRO Measurement Variables Additions
Section titled “BRO Measurement Variables Additions”VOTB Measurement Variables Additions
Section titled “VOTB Measurement Variables Additions”Sources
Section titled “Sources”- GEF-CPT report 1.1.2
- Power of Python by Rob van Putten
- CPTData.nl GEF-CPT 1.1.3 Release Notes
- BRO - Amsterdam deelt tools om slimmer, sneller en beter te werken met grondonderzoek
- BRO - Nieuwe verplichting: leveren van archiefgegevens aan de BRO
- DINOLoket - Standardised cone penetration testing methods
- Fout in locatieaanduiding in GEF bestanden van het BRO Loket
- Ben u bekend met de BRO en de NEN-EN-ISO 14688 voor grondonderzoek?