Skip to content

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.

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

GEF-CPT-Report FileComplete GEF cone penetration test report fileGEF-CPT-Report FileHeader BlockFile metadata and test parametersGEF-CPT-Report File/Header BlockData BlockTabular measurement data organized in scansGEF-CPT-Report File/Data BlockGEF IdentificationGEF-CPT-Report File/Header Block/GEF Identification#GEFIDGEF version and format identificationGEF-CPT-Report File/Header Block/#GEFID#REPORTCODEReport format type and versionGEF-CPT-Report File/Header Block/#REPORTCODE#DATAFORMATData format specificationGEF-CPT-Report File/Header Block/#DATAFORMATFile MetadataGEF-CPT-Report File/Header Block/File Metadata#FILEOWNERFile creator/owner nameGEF-CPT-Report File/Header Block/#FILEOWNER#FILEDATEFile creation dateGEF-CPT-Report File/Header Block/#FILEDATE#COMPANYIDExecuting company informationGEF-CPT-Report File/Header Block/#COMPANYIDProject InformationGEF-CPT-Report File/Header Block/Project Information#PROJECTIDProject identificationGEF-CPT-Report File/Header Block/#PROJECTID#TESTIDCPT test identification numberGEF-CPT-Report File/Header Block/#TESTIDCoordinate & Reference SystemsGEF-CPT-Report File/Header Block/Coordinate & Reference Systems#XYIDHorizontal coordinates and coordinate systemGEF-CPT-Report File/Header Block/#XYID#ZIDSurface elevation and height reference systemGEF-CPT-Report File/Header Block/#ZIDTest ExecutionGEF-CPT-Report File/Header Block/Test Execution#STARTDATETest execution dateGEF-CPT-Report File/Header Block/#STARTDATE#STARTTIMETest execution timeGEF-CPT-Report File/Header Block/#STARTTIMEData Structure DefinitionGEF-CPT-Report File/Header Block/Data Structure Definition#COLUMNNumber of numerical data columnsGEF-CPT-Report File/Header Block/#COLUMN#COLUMNINFOColumn definitions, units, and quantity numbersGEF-CPT-Report File/Header Block/#COLUMNINFO#LASTSCANNumber of data records (measurement scans)GEF-CPT-Report File/Header Block/#LASTSCANData FormattingGEF-CPT-Report File/Header Block/Data Formatting#COLUMNSEPARATORCharacter dividing columns in data blockGEF-CPT-Report File/Header Block/#COLUMNSEPARATOR#RECORDSEPARATORSymbol at end of each measurement scanGEF-CPT-Report File/Header Block/#RECORDSEPARATOR#COLUMNTEXTText column on/off setting per columnGEF-CPT-Report File/Header Block/#COLUMNTEXT#REPORTDATAFORMATPrint format per column (FORTRAN style)GEF-CPT-Report File/Header Block/#REPORTDATAFORMATData ValidationGEF-CPT-Report File/Header Block/Data Validation#COLUMNMINMAXMin/max values per columnGEF-CPT-Report File/Header Block/#COLUMNMINMAX#COLUMNVOIDNo-data value definition per columnGEF-CPT-Report File/Header Block/#COLUMNVOIDMeasurement ParametersGEF-CPT-Report File/Header Block/Measurement Parameters#MEASUREMENTVARNumerical measurement parameters with indexed IDsGEF-CPT-Report File/Header Block/#MEASUREMENTVAR#MEASUREMENTTEXTDescriptive text information with indexed IDsGEF-CPT-Report File/Header Block/#MEASUREMENTTEXTSpecimen DataGEF-CPT-Report File/Header Block/Specimen Data#SPECIMENVARNumerical specimen parametersGEF-CPT-Report File/Header Block/#SPECIMENVAR#EOHEnd of header marker - separates header from dataGEF-CPT-Report File/Header Block/#EOHRequired ColumnsMandatory data columns that must be presentGEF-CPT-Report File/Data Block/Required ColumnsOptional ColumnsAdditional measurement data columnsGEF-CPT-Report File/Data Block/Optional ColumnsColumn 1: Penetration Length (m)Depth of cone tip below reference levelGEF-CPT-Report File/Data Block/Required Columns/Column 1: Penetration Length (m)Column 2: Cone Resistance (MPa)Measured cone tip resistanceGEF-CPT-Report File/Data Block/Required Columns/Column 2: Cone Resistance (MPa)Friction MeasurementsSleeve friction and friction ratio dataGEF-CPT-Report File/Data Block/Optional Columns/Friction MeasurementsPore Pressure MeasurementsPore water pressure measurements (u1, u2, u3)GEF-CPT-Report File/Data Block/Optional Columns/Pore Pressure MeasurementsInclination MeasurementsCone inclination from verticalGEF-CPT-Report File/Data Block/Optional Columns/Inclination MeasurementsCalculated ValuesDerived parameters and soil propertiesGEF-CPT-Report File/Data Block/Optional Columns/Calculated ValuesAdditional MeasurementsElectric conductivity, magnetic field, etc.GEF-CPT-Report File/Data Block/Optional Columns/Additional MeasurementsText CommentsOptional last column for comments on measurement scansGEF-CPT-Report File/Data Block/Optional Columns/Text Comments

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 (#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:

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 and Y 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.

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

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 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.

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.

The GEF-CPT spec references standards superseded by modern ISO equivalents.

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”.

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.’

Geotechnisch onderzoek in steden, op velden en wegen

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!