From 523f1ba01ed7688dbdf5a79fdb4d4fa339e7b001 Mon Sep 17 00:00:00 2001 From: Jules Blom Date: Mon, 12 May 2025 14:33:58 +0200 Subject: [PATCH 01/10] Add GEF notebook --- .gitignore | 3 + .../a2-maastricht-gef/a2_maastricht-gef.py | 309 ++++++++++++++++++ examples/a2-maastricht-gef/gefs/B61F1425.gef | 57 ++++ examples/a2-maastricht-gef/gefs/B61F1427.gef | 57 ++++ examples/a2-maastricht-gef/gefs/B61F3153.gef | 54 +++ examples/a2-maastricht-gef/gefs/B61F3155.gef | 54 +++ examples/a2-maastricht-gef/gefs/B61F3158.gef | 52 +++ examples/a2-maastricht-gef/gefs/B61F3160.gef | 52 +++ examples/a2-maastricht-gef/gefs/B61F3161.gef | 52 +++ examples/a2-maastricht-gef/gefs/B61F3164.gef | 126 +++++++ examples/a2-maastricht-gef/gefs/B61F3165.gef | 122 +++++++ examples/a2-maastricht-gef/gefs/B61F3170.gef | 143 ++++++++ examples/a2-maastricht-gef/gefs/B61F3171.gef | 138 ++++++++ examples/a2-maastricht-gef/gefs/B61F3172.gef | 140 ++++++++ examples/a2-maastricht-gef/gefs/B61F3174.gef | 125 +++++++ examples/a2-maastricht-gef/gefs/B61F3297.gef | 118 +++++++ examples/a2-maastricht-gef/gefs/B61F3298.gef | 99 ++++++ examples/a2-maastricht-gef/gefs/B61F3299.gef | 88 +++++ examples/a2-maastricht-gef/gefs/B61F3300.gef | 108 ++++++ examples/a2-maastricht-gef/gefs/B61F3303.gef | 91 ++++++ examples/a2-maastricht-gef/gefs/B61F3304.gef | 87 +++++ examples/a2-maastricht-gef/gefs/B61F3315.gef | 93 ++++++ 22 files changed, 2168 insertions(+) create mode 100644 examples/a2-maastricht-gef/a2_maastricht-gef.py create mode 100644 examples/a2-maastricht-gef/gefs/B61F1425.gef create mode 100644 examples/a2-maastricht-gef/gefs/B61F1427.gef create mode 100644 examples/a2-maastricht-gef/gefs/B61F3153.gef create mode 100644 examples/a2-maastricht-gef/gefs/B61F3155.gef create mode 100644 examples/a2-maastricht-gef/gefs/B61F3158.gef create mode 100644 examples/a2-maastricht-gef/gefs/B61F3160.gef create mode 100644 examples/a2-maastricht-gef/gefs/B61F3161.gef create mode 100644 examples/a2-maastricht-gef/gefs/B61F3164.gef create mode 100644 examples/a2-maastricht-gef/gefs/B61F3165.gef create mode 100644 examples/a2-maastricht-gef/gefs/B61F3170.gef create mode 100644 examples/a2-maastricht-gef/gefs/B61F3171.gef create mode 100644 examples/a2-maastricht-gef/gefs/B61F3172.gef create mode 100644 examples/a2-maastricht-gef/gefs/B61F3174.gef create mode 100644 examples/a2-maastricht-gef/gefs/B61F3297.gef create mode 100644 examples/a2-maastricht-gef/gefs/B61F3298.gef create mode 100644 examples/a2-maastricht-gef/gefs/B61F3299.gef create mode 100644 examples/a2-maastricht-gef/gefs/B61F3300.gef create mode 100644 examples/a2-maastricht-gef/gefs/B61F3303.gef create mode 100644 examples/a2-maastricht-gef/gefs/B61F3304.gef create mode 100644 examples/a2-maastricht-gef/gefs/B61F3315.gef diff --git a/.gitignore b/.gitignore index d1cf4bb..3456c84 100644 --- a/.gitignore +++ b/.gitignore @@ -117,3 +117,6 @@ cython_debug/ # and can be added to the global gitignore or merged into this file. For a more nuclear # option (not recommended) you can uncomment the following to ignore the entire idea folder. .idea/ + +# Mac +.DS_Store \ No newline at end of file diff --git a/examples/a2-maastricht-gef/a2_maastricht-gef.py b/examples/a2-maastricht-gef/a2_maastricht-gef.py new file mode 100644 index 0000000..9c1476d --- /dev/null +++ b/examples/a2-maastricht-gef/a2_maastricht-gef.py @@ -0,0 +1,309 @@ +# /// script +# requires-python = ">=3.12" +# dependencies = [ +# "bedrock-ge==0.2.3", +# "chardet==5.2.0", +# "folium==0.19.5", +# "geopandas==1.0.1", +# "mapclassify==2.8.1", +# "marimo", +# "matplotlib==3.10.1", +# "pandas==2.2.3", +# "pyproj==3.7.1", +# "requests==2.32.3", +# "shapely==2.1.0", +# "pygef"==0.11.1" +# ] +# /// + +import marimo + +__generated_with = "0.13.2" +app = marimo.App(width="medium") + + +@app.cell +def _(mo): + mo.md( + """ + # GEF Data for A2 Tunnel Maastricht + + This notebook demonstrates how to + + 1. Read in GEF files using [pygef](https://cemsbv.github.io/pygef/) + 1. Use `bedrock-ge` to load Ground Investigation (GI) data from these GEF files + 1. Convert that data into a standardized GI database using `bedrock-ge` + 1. Transform the GI data into 3D GIS features with proper coordinates and geometry ([OGC Simple Feature Access](https://en.wikipedia.org/wiki/Simple_Features)) + 1. Explore and analyze the GI data using: + * Interactive filtering with Pandas dataframes + * Visualization on interactive maps with GeoPandas + 1. Export the processed GI database to a GeoPackage file for use in GIS software + + ## Context + + The Koning Willem-Alexander Tunnel is a double-deck tunnel for motorized traffic in the Dutch city of Maastricht. The tunnel has a length of 2.5 kilometers (lower tunnel tubes) and 2.3 kilometers (upper tunnel tubes). + + The tunnel has moved the old A2 highway underground. It previously formed a barrier for the city and slowed traffic. + + ### Geology + + + The soil here consists of a coarse gravel layer with limestone limestone with karst phenomena underneath. There are also faults. + Zwerfkeien + + [Geotechniek-en-Risicos bij A2 Maastricht](https://www.cob.nl/magazines-brochures-en-nieuws/verdieping/verdieping-sept2012/geotechniek-en-risicos-bij-a2-maastricht/) + [Source](https://archisarchief.cultureelerfgoed.nl/Archis2/Archeorapporten/24/AR26905/RAP%202709_4130060%20Maastricht%20A2-traverse.pdf) + + ## Ground Investigation Data + + The GI data was downloaded from [Dinoloket](https://www.dinoloket.nl/ondergrondgegevens), a platform where you can view and request data and models from TNO and BRO about the subsurface of the Netherlands. + """ + ) + return + + +@app.cell +def _(Path, pygef): + folder_path = Path("./gefs") + gef_files = list(folder_path.glob("*.gef")) + boreholes = [pygef.read_bore(gef_file) for gef_file in gef_files] + return (boreholes,) + + +@app.cell(hide_code=True) +def _(mo): + mo.md("pygef uses [polars](https://pola.rs/) for DataFrames, for consistency we will convert them to [Pandas](http://pandas.pydata.org/) DataFrames in this notebook.").callout("warn") + return + + +@app.cell(hide_code=True) +def _(boreholes, mo): + options = {d.alias: i for i, d in enumerate(boreholes)} + multiselect = mo.ui.dropdown(options, label="Select borehole") + multiselect + return (multiselect,) + + +@app.cell(hide_code=True) +def _(multiselect): + index = multiselect.value or 0 + return (index,) + + +@app.cell(hide_code=True) +def _(boreholes, index): + boreholes[index].data.to_pandas().dropna(axis=1, how='all') # drop empty columns for display + return + + +@app.cell +def _(boreholes, index, pygef): + pygef.plotting.plot_bore(boreholes[index]) + return + + +@app.cell(hide_code=True) +def _(mo): + mo.md( + r""" + ## Converting multiple GEF files to a relational database + + First, let's check in which projected coordinate system the provided data was recorded + """ + ) + return + + +@app.cell +def _(boreholes): + boreholes[1].delivered_location.srs_name + return + + +@app.cell +def _(boreholes): + code = {bore.delivered_location.srs_name for bore in boreholes}.pop() + # epsg_code = code.split("EPSG::")[-1] + # crs = f"EPSG:{epsg_code}" + crs = "EPSG:7415" + return (crs,) + + +@app.cell(hide_code=True) +def _(mo): + mo.md( + r""" + EPSG:28992 is [Rijksdriehoekscoördinaten](https://nl.wikipedia.org/wiki/Rijksdriehoeksco%C3%B6rdinaten), also called Amersfoort / RD New. + + EPSG:7415 is with Amersfoort / RD New + NAP height. ie with elevation which we need for 3D geometry + """ + ) + return + + +@app.cell +def _(): + wgs = "EPSG:4326" + return + + +@app.cell +def _(): + project_uid = "Maastricht A2" + return (project_uid,) + + +@app.cell +def _(CRS, crs, pd, project_uid): + project = pd.DataFrame({ + "project_uid": [project_uid], # primary key + "crs_wkt": CRS(crs).to_wkt() + }) + return (project,) + + +@app.cell +def _(insitu_geo, locations, project): + brgi_db = {"Project": project, "Location": locations.drop(columns=["data"]), "InSitu_GEOL": insitu_geo } + return (brgi_db,) + + +@app.function +def process_data(bore): + df = bore.data.to_pandas().dropna(axis=1, how='all').rename(columns= + { + 'upperBoundary': 'depth_to_top', + 'lowerBoundary': 'depth_to_base', + 'upperBoundaryOffset': 'elevation_at_top', + 'lowerBoundaryOffset': 'elevation_at_base' + }) + + return df + + +@app.cell +def _(boreholes, pd, project_uid): + locations_df = pd.DataFrame([ + { + "location_uid": f"{borehole.alias} {project_uid}", # primary key + "project_uid": project_uid, # foreign key + "data": process_data(borehole), + "location_source_id": borehole.alias, + "date": borehole.research_report_date, + "location_type": "Hole", + "easting": borehole.delivered_location.x, + "northing": borehole.delivered_location.y, + "depth_to_base": min(borehole.data["lowerBoundaryOffset"]), + "ground_level_elevation": borehole.delivered_vertical_position_offset, + "elevation_at_base": borehole.delivered_vertical_position_offset - min(borehole.data["lowerBoundaryOffset"]), + } + for borehole in boreholes + ]) + return (locations_df,) + + +@app.cell +def _(calculate_location_gis_geometry, crs, locations_df): + locations = calculate_location_gis_geometry(locations_df, crs=crs) + return (locations,) + + +@app.cell +def _(create_lon_lat_height_table, crs, locations): + create_lon_lat_height_table(locations, crs).explore() + return + + +@app.cell +def _(locations, pd): + insitu = pd.DataFrame([ + { + **layer, + "location_uid": location["location_uid"], # foreignkey + "project_uid": location["project_uid"], # foreignkey + } + # Outer loop: iterate through each location + for location in locations.to_dict('records') + # Inner loop: iterate through each layer in the location's data dataframe + for layer in location["data"].to_dict('records') + ]) + return (insitu,) + + +@app.cell +def _(insitu): + insitu + return + + +@app.cell +def _(calculate_in_situ_gis_geometry, crs, insitu, locations): + insitu_geo = calculate_in_situ_gis_geometry(insitu, locations, crs) + return (insitu_geo,) + + +@app.cell +def _(insitu_geo): + insitu_geo + return + + +@app.cell(hide_code=True) +def _(mo): + mo.md( + r""" + ## Saving the GI geospatial database as a GeoPackage (.gpkg) + + Finally, lets write it to an actual geospatial database file, so we can share our GI data with others. For example, to reuse it in other notebooks, create dashboards, access the GI data in QGIS or ArcGIS, and more... + + A GeoPackage is an OGC-standardized extension of SQLite (a relational database in a single file, .sqlite or .db) that allows you to store any type of GIS data (both raster as well as vector data) in a single file that has the .gpkg extension. Therefore, many (open-source) GIS software packages support GeoPackage! + """ + ) + return + + +@app.cell +def _(brgi_db, check_brgi_database): + check_brgi_database(brgi_db) + return + + +@app.cell +def _(brgi_db, write_gi_db_to_gpkg): + write_gi_db_to_gpkg(brgi_db, gpkg_path="./output/A2_Maastricht.gpkg") + return + + +@app.cell +def _(): + import marimo as mo + import pygef + import os + from pathlib import Path + import pandas as pd + import geopandas as gpd + import matplotlib + import pyarrow + import folium + import mapclassify + from shapely.geometry import Point, LineString + from bedrock_ge.gi.gis_geometry import calculate_wgs84_coordinates, calculate_in_situ_gis_geometry, calculate_gis_geometry, calculate_location_gis_geometry, create_lon_lat_height_table + from bedrock_ge.gi.write import write_gi_db_to_gpkg + from bedrock_ge.gi.validate import check_brgi_database + from pyproj import CRS + return ( + CRS, + Path, + calculate_in_situ_gis_geometry, + calculate_location_gis_geometry, + check_brgi_database, + create_lon_lat_height_table, + mo, + pd, + pygef, + write_gi_db_to_gpkg, + ) + + +if __name__ == "__main__": + app.run() diff --git a/examples/a2-maastricht-gef/gefs/B61F1425.gef b/examples/a2-maastricht-gef/gefs/B61F1425.gef new file mode 100644 index 0000000..fdd9735 --- /dev/null +++ b/examples/a2-maastricht-gef/gefs/B61F1425.gef @@ -0,0 +1,57 @@ +#GEFID = 1,1,0 +#COLUMNTEXT = 1, aan +#COLUMNSEPARATOR = ; +#RECORDSEPARATOR = ! +#FILEOWNER = DINO +#COMPANYID = Projectbureau A2 +#FILEDATE = 2025,4,30 +#PROJECTID = DINO-BOR +#COLUMN = 9 +#COLUMNINFO = 1, m, Diepte bovenkant laag, 1 +#COLUMNINFO = 2, m, Diepte onderkant laag, 2 +#COLUMNINFO = 3, mm, Zandmediaan, 8 +#COLUMNINFO = 4, mm, Grindmediaan, 9 +#COLUMNINFO = 5, %, Lutum percentage, 3 +#COLUMNINFO = 6, %, Silt percentage, 4 +#COLUMNINFO = 7, %, Zand percentage, 5 +#COLUMNINFO = 8, %, Grind percentage, 6 +#COLUMNINFO = 9, %, Organische stof percentage, 7 +#COLUMNVOID = 1, -9999.99 +#COLUMNVOID = 2, -9999.99 +#COLUMNVOID = 3, -9999.99 +#COLUMNVOID = 4, -9999.99 +#COLUMNVOID = 5, -9999.99 +#COLUMNVOID = 6, -9999.99 +#COLUMNVOID = 7, -9999.99 +#COLUMNVOID = 8, -9999.99 +#COLUMNVOID = 9, -9999.99 +#LASTSCAN = 6 +#REPORTCODE = GEF-BORE-Report,1,0,0 +#MEASUREMENTCODE = Onbekend,-,-,- +#TESTID = B61F1425 +#XYID = 31000,178151,317326 +#ZID = 31000,48.43 +#MEASUREMENTTEXT = 3, Maastricht, plaatsnaam +#MEASUREMENTTEXT = 6, -, beschrijver lagen +#MEASUREMENTTEXT = 13, Sonic Drilling Horst BV, boorbedrijf +#MEASUREMENTTEXT = 16, 2005-05-15, datum boring +#MEASUREMENTTEXT = 31, Trilboring, boormethode +#MEASUREMENTTEXT = 11, MMET, maaiveldhoogtebepaling +#MEASUREMENTTEXT = 12, LMET, plaatsbepalingmethode +#MEASUREMENTTEXT = 7, Rijksdriehoeksmeting, locaal coördinatensysteem +#MEASUREMENTTEXT = 8, Normaal Amsterdams Peil, locaal referentiesysteem +#MEASUREMENTVAR = 16, 30.00, m, einddiepte +#MEASUREMENTTEXT = 23, -, naam boormeester +#MEASUREMENTTEXT = 14, Nee, openbaar +#MEASUREMENTVAR = 13, 4.00, m, voorgegraven diepte +#MEASUREMENTTEXT = 2, Verkenning tunneltrac A2, doel onderzoek +#MEASUREMENTTEXT = 17, Onbekend, vochtigheidstoestand grond +#MEASUREMENTTEXT = 18, Nee, peilbuis afwezig +#MEASUREMENTVAR = 18, 4.00, m, grondwaterstand direct na boring +#EOH = +4.00;5.70;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'Kh1';'GR';! +5.70;11.50;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'Gz1';'GR';'ZGC';'GZG';! +11.50;12.50;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GE';'KAS';'fijnkorrelig';! +12.50;15.00;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'LI GR';'KAS';'fijnkorrelig';! +15.00;28.50;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'LI GR';'KAS';'grijze vuursteen fijnkorrelig';! +28.50;30.00;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'WI';'KAS';'zwarte vuursteen fijnkorrelig';! diff --git a/examples/a2-maastricht-gef/gefs/B61F1427.gef b/examples/a2-maastricht-gef/gefs/B61F1427.gef new file mode 100644 index 0000000..552ed13 --- /dev/null +++ b/examples/a2-maastricht-gef/gefs/B61F1427.gef @@ -0,0 +1,57 @@ +#GEFID = 1,1,0 +#COLUMNTEXT = 1, aan +#COLUMNSEPARATOR = ; +#RECORDSEPARATOR = ! +#FILEOWNER = DINO +#COMPANYID = Projectbureau A2 +#FILEDATE = 2025,4,30 +#PROJECTID = DINO-BOR +#COLUMN = 9 +#COLUMNINFO = 1, m, Diepte bovenkant laag, 1 +#COLUMNINFO = 2, m, Diepte onderkant laag, 2 +#COLUMNINFO = 3, mm, Zandmediaan, 8 +#COLUMNINFO = 4, mm, Grindmediaan, 9 +#COLUMNINFO = 5, %, Lutum percentage, 3 +#COLUMNINFO = 6, %, Silt percentage, 4 +#COLUMNINFO = 7, %, Zand percentage, 5 +#COLUMNINFO = 8, %, Grind percentage, 6 +#COLUMNINFO = 9, %, Organische stof percentage, 7 +#COLUMNVOID = 1, -9999.99 +#COLUMNVOID = 2, -9999.99 +#COLUMNVOID = 3, -9999.99 +#COLUMNVOID = 4, -9999.99 +#COLUMNVOID = 5, -9999.99 +#COLUMNVOID = 6, -9999.99 +#COLUMNVOID = 7, -9999.99 +#COLUMNVOID = 8, -9999.99 +#COLUMNVOID = 9, -9999.99 +#LASTSCAN = 7 +#REPORTCODE = GEF-BORE-Report,1,0,0 +#MEASUREMENTCODE = Onbekend,-,-,- +#TESTID = B61F1427 +#XYID = 31000,177857,318620 +#ZID = 31000,47.3 +#MEASUREMENTTEXT = 3, Maastricht, plaatsnaam +#MEASUREMENTTEXT = 6, -, beschrijver lagen +#MEASUREMENTTEXT = 13, Sonic Drilling Horst BV, boorbedrijf +#MEASUREMENTTEXT = 16, 2005-05-23, datum boring +#MEASUREMENTTEXT = 31, Trilboring, boormethode +#MEASUREMENTTEXT = 11, MMET, maaiveldhoogtebepaling +#MEASUREMENTTEXT = 12, LMET, plaatsbepalingmethode +#MEASUREMENTTEXT = 7, Rijksdriehoeksmeting, locaal coördinatensysteem +#MEASUREMENTTEXT = 8, Normaal Amsterdams Peil, locaal referentiesysteem +#MEASUREMENTVAR = 16, 30.00, m, einddiepte +#MEASUREMENTTEXT = 23, -, naam boormeester +#MEASUREMENTTEXT = 14, Nee, openbaar +#MEASUREMENTVAR = 13, 3.00, m, voorgegraven diepte +#MEASUREMENTTEXT = 2, Verkenning tunneltrac A2, doel onderzoek +#MEASUREMENTTEXT = 17, Onbekend, vochtigheidstoestand grond +#MEASUREMENTTEXT = 18, Nee, peilbuis afwezig +#EOH = +3.00;3.50;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'L';'plaatselijk met baksteen';! +3.50;4.90;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'K';'GR';! +4.90;6.00;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'Kh3';'DO TGR ZW';! +6.00;10.00;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'Gz';'GR';'ZGC';'GZG';! +10.00;15.00;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GE';'KAS';'plaatselijk met fossielgruis matig grof';! +15.00;16.00;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GE';'KAS';'plaatselijk met fossielgruis matig grof';! +16.00;30.00;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GE';'KAS';'matig grof plaatselijk met fossielgruis';! diff --git a/examples/a2-maastricht-gef/gefs/B61F3153.gef b/examples/a2-maastricht-gef/gefs/B61F3153.gef new file mode 100644 index 0000000..6e698b4 --- /dev/null +++ b/examples/a2-maastricht-gef/gefs/B61F3153.gef @@ -0,0 +1,54 @@ +#GEFID = 1,1,0 +#COLUMNTEXT = 1, aan +#COLUMNSEPARATOR = ; +#RECORDSEPARATOR = ! +#FILEOWNER = DINO +#COMPANYID = Onbekend +#FILEDATE = 2025,4,30 +#PROJECTID = DINO-BOR +#COLUMN = 9 +#COLUMNINFO = 1, m, Diepte bovenkant laag, 1 +#COLUMNINFO = 2, m, Diepte onderkant laag, 2 +#COLUMNINFO = 3, mm, Zandmediaan, 8 +#COLUMNINFO = 4, mm, Grindmediaan, 9 +#COLUMNINFO = 5, %, Lutum percentage, 3 +#COLUMNINFO = 6, %, Silt percentage, 4 +#COLUMNINFO = 7, %, Zand percentage, 5 +#COLUMNINFO = 8, %, Grind percentage, 6 +#COLUMNINFO = 9, %, Organische stof percentage, 7 +#COLUMNVOID = 1, -9999.99 +#COLUMNVOID = 2, -9999.99 +#COLUMNVOID = 3, -9999.99 +#COLUMNVOID = 4, -9999.99 +#COLUMNVOID = 5, -9999.99 +#COLUMNVOID = 6, -9999.99 +#COLUMNVOID = 7, -9999.99 +#COLUMNVOID = 8, -9999.99 +#COLUMNVOID = 9, -9999.99 +#LASTSCAN = 5 +#REPORTCODE = GEF-BORE-Report,1,0,0 +#MEASUREMENTCODE = Onbekend,-,-,- +#TESTID = B61F3153 +#XYID = 31000,177921,317494 +#ZID = 31000,48.4 +#MEASUREMENTTEXT = 5, 2013-07-22, datum boorbeschrijving +#MEASUREMENTTEXT = 6, -, beschrijver lagen +#MEASUREMENTTEXT = 13, Avenue2, boorbedrijf +#MEASUREMENTTEXT = 16, 2013-07-22, datum boring +#MEASUREMENTVAR = 31, 22.00, m, diepte onderkant boortraject +#MEASUREMENTTEXT = 31, Graven, boormethode +#MEASUREMENTTEXT = 7, Rijksdriehoeksmeting, locaal coördinatensysteem +#MEASUREMENTTEXT = 8, Normaal Amsterdams Peil, locaal referentiesysteem +#MEASUREMENTVAR = 16, 22.00, m, einddiepte +#MEASUREMENTTEXT = 23, -, naam boormeester +#MEASUREMENTTEXT = 1, Projectburo A2, opdrachtgever +#MEASUREMENTTEXT = 14, Nee, openbaar +#MEASUREMENTTEXT = 2, inspectie, doel onderzoek +#MEASUREMENTTEXT = 17, Nat en droog sediment, vochtigheidstoestand grond +#MEASUREMENTTEXT = 18, Nee, peilbuis afwezig +#EOH = +0.00;1.00;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'PU';! +1.00;2.90;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'Kg';'BR';! +2.90;12.00;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'G';'grijze klei';! +12.00;14.00;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GR';'VGMH';'KAS';! +14.00;22.00;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'KAS';'lagen blauwzwart vuursteen op 1450 en 1650 cm diepte';! diff --git a/examples/a2-maastricht-gef/gefs/B61F3155.gef b/examples/a2-maastricht-gef/gefs/B61F3155.gef new file mode 100644 index 0000000..5b94254 --- /dev/null +++ b/examples/a2-maastricht-gef/gefs/B61F3155.gef @@ -0,0 +1,54 @@ +#GEFID = 1,1,0 +#COLUMNTEXT = 1, aan +#COLUMNSEPARATOR = ; +#RECORDSEPARATOR = ! +#FILEOWNER = DINO +#COMPANYID = Onbekend +#FILEDATE = 2025,4,30 +#PROJECTID = DINO-BOR +#COLUMN = 9 +#COLUMNINFO = 1, m, Diepte bovenkant laag, 1 +#COLUMNINFO = 2, m, Diepte onderkant laag, 2 +#COLUMNINFO = 3, mm, Zandmediaan, 8 +#COLUMNINFO = 4, mm, Grindmediaan, 9 +#COLUMNINFO = 5, %, Lutum percentage, 3 +#COLUMNINFO = 6, %, Silt percentage, 4 +#COLUMNINFO = 7, %, Zand percentage, 5 +#COLUMNINFO = 8, %, Grind percentage, 6 +#COLUMNINFO = 9, %, Organische stof percentage, 7 +#COLUMNVOID = 1, -9999.99 +#COLUMNVOID = 2, -9999.99 +#COLUMNVOID = 3, -9999.99 +#COLUMNVOID = 4, -9999.99 +#COLUMNVOID = 5, -9999.99 +#COLUMNVOID = 6, -9999.99 +#COLUMNVOID = 7, -9999.99 +#COLUMNVOID = 8, -9999.99 +#COLUMNVOID = 9, -9999.99 +#LASTSCAN = 5 +#REPORTCODE = GEF-BORE-Report,1,0,0 +#MEASUREMENTCODE = Onbekend,-,-,- +#TESTID = B61F3155 +#XYID = 31000,177907,317516 +#ZID = 31000,48.4 +#MEASUREMENTTEXT = 5, 2013-07-22, datum boorbeschrijving +#MEASUREMENTTEXT = 6, -, beschrijver lagen +#MEASUREMENTTEXT = 13, Avenue2, boorbedrijf +#MEASUREMENTTEXT = 16, 2013-07-22, datum boring +#MEASUREMENTVAR = 31, 22.00, m, diepte onderkant boortraject +#MEASUREMENTTEXT = 31, Graven, boormethode +#MEASUREMENTTEXT = 7, Rijksdriehoeksmeting, locaal coördinatensysteem +#MEASUREMENTTEXT = 8, Normaal Amsterdams Peil, locaal referentiesysteem +#MEASUREMENTVAR = 16, 22.00, m, einddiepte +#MEASUREMENTTEXT = 23, -, naam boormeester +#MEASUREMENTTEXT = 1, Projectburo A2, opdrachtgever +#MEASUREMENTTEXT = 14, Nee, openbaar +#MEASUREMENTTEXT = 2, Inspectie, doel onderzoek +#MEASUREMENTTEXT = 17, Nat en droog sediment, vochtigheidstoestand grond +#MEASUREMENTTEXT = 18, Nee, peilbuis afwezig +#EOH = +0.00;1.00;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'PU';! +1.00;2.50;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'Kg';'BR';! +2.50;12.00;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'G';'grijze klei';! +12.00;13.50;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GR';'VGMH';'KAS';! +13.50;22.00;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'KAS';'lagen blauzwarte vuursteen op 1400 en 1600 cm diepte';! diff --git a/examples/a2-maastricht-gef/gefs/B61F3158.gef b/examples/a2-maastricht-gef/gefs/B61F3158.gef new file mode 100644 index 0000000..eb2b75c --- /dev/null +++ b/examples/a2-maastricht-gef/gefs/B61F3158.gef @@ -0,0 +1,52 @@ +#GEFID = 1,1,0 +#COLUMNTEXT = 1, aan +#COLUMNSEPARATOR = ; +#RECORDSEPARATOR = ! +#FILEOWNER = DINO +#COMPANYID = Onbekend +#FILEDATE = 2025,4,30 +#PROJECTID = DINO-BOR +#COLUMN = 9 +#COLUMNINFO = 1, m, Diepte bovenkant laag, 1 +#COLUMNINFO = 2, m, Diepte onderkant laag, 2 +#COLUMNINFO = 3, mm, Zandmediaan, 8 +#COLUMNINFO = 4, mm, Grindmediaan, 9 +#COLUMNINFO = 5, %, Lutum percentage, 3 +#COLUMNINFO = 6, %, Silt percentage, 4 +#COLUMNINFO = 7, %, Zand percentage, 5 +#COLUMNINFO = 8, %, Grind percentage, 6 +#COLUMNINFO = 9, %, Organische stof percentage, 7 +#COLUMNVOID = 1, -9999.99 +#COLUMNVOID = 2, -9999.99 +#COLUMNVOID = 3, -9999.99 +#COLUMNVOID = 4, -9999.99 +#COLUMNVOID = 5, -9999.99 +#COLUMNVOID = 6, -9999.99 +#COLUMNVOID = 7, -9999.99 +#COLUMNVOID = 8, -9999.99 +#COLUMNVOID = 9, -9999.99 +#LASTSCAN = 4 +#REPORTCODE = GEF-BORE-Report,1,0,0 +#MEASUREMENTCODE = Onbekend,-,-,- +#TESTID = B61F3158 +#XYID = 31000,177822,317683 +#ZID = 31000,48.1 +#MEASUREMENTTEXT = 5, 2013-08-20, datum boorbeschrijving +#MEASUREMENTTEXT = 6, -, beschrijver lagen +#MEASUREMENTTEXT = 13, Avenue2, boorbedrijf +#MEASUREMENTTEXT = 16, 2013-08-20, datum boring +#MEASUREMENTVAR = 31, 16.00, m, diepte onderkant boortraject +#MEASUREMENTTEXT = 31, Graven, boormethode +#MEASUREMENTTEXT = 7, Rijksdriehoeksmeting, locaal coördinatensysteem +#MEASUREMENTTEXT = 8, Normaal Amsterdams Peil, locaal referentiesysteem +#MEASUREMENTVAR = 16, 16.00, m, einddiepte +#MEASUREMENTTEXT = 23, -, naam boormeester +#MEASUREMENTTEXT = 1, Projectburo A2, opdrachtgever +#MEASUREMENTTEXT = 14, Nee, openbaar +#MEASUREMENTTEXT = 17, Nat en droog sediment, vochtigheidstoestand grond +#MEASUREMENTTEXT = 18, Nee, peilbuis afwezig +#EOH = +0.00;3.50;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'PU';! +3.50;12.00;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'G';'grijze klei';! +12.00;15.50;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GR';'KAS';! +15.50;16.00;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'LI GR';'VGMH';'KAS';'laagje blauwzwarte vuursteen';! diff --git a/examples/a2-maastricht-gef/gefs/B61F3160.gef b/examples/a2-maastricht-gef/gefs/B61F3160.gef new file mode 100644 index 0000000..7f9a2b2 --- /dev/null +++ b/examples/a2-maastricht-gef/gefs/B61F3160.gef @@ -0,0 +1,52 @@ +#GEFID = 1,1,0 +#COLUMNTEXT = 1, aan +#COLUMNSEPARATOR = ; +#RECORDSEPARATOR = ! +#FILEOWNER = DINO +#COMPANYID = Onbekend +#FILEDATE = 2025,4,30 +#PROJECTID = DINO-BOR +#COLUMN = 9 +#COLUMNINFO = 1, m, Diepte bovenkant laag, 1 +#COLUMNINFO = 2, m, Diepte onderkant laag, 2 +#COLUMNINFO = 3, mm, Zandmediaan, 8 +#COLUMNINFO = 4, mm, Grindmediaan, 9 +#COLUMNINFO = 5, %, Lutum percentage, 3 +#COLUMNINFO = 6, %, Silt percentage, 4 +#COLUMNINFO = 7, %, Zand percentage, 5 +#COLUMNINFO = 8, %, Grind percentage, 6 +#COLUMNINFO = 9, %, Organische stof percentage, 7 +#COLUMNVOID = 1, -9999.99 +#COLUMNVOID = 2, -9999.99 +#COLUMNVOID = 3, -9999.99 +#COLUMNVOID = 4, -9999.99 +#COLUMNVOID = 5, -9999.99 +#COLUMNVOID = 6, -9999.99 +#COLUMNVOID = 7, -9999.99 +#COLUMNVOID = 8, -9999.99 +#COLUMNVOID = 9, -9999.99 +#LASTSCAN = 4 +#REPORTCODE = GEF-BORE-Report,1,0,0 +#MEASUREMENTCODE = Onbekend,-,-,- +#TESTID = B61F3160 +#XYID = 31000,177800,317887 +#ZID = 31000,47.9 +#MEASUREMENTTEXT = 5, 2014-01-20, datum boorbeschrijving +#MEASUREMENTTEXT = 6, -, beschrijver lagen +#MEASUREMENTTEXT = 13, Avenue2, boorbedrijf +#MEASUREMENTTEXT = 16, 2014-01-20, datum boring +#MEASUREMENTVAR = 31, 16.00, m, diepte onderkant boortraject +#MEASUREMENTTEXT = 31, Graven, boormethode +#MEASUREMENTTEXT = 7, Rijksdriehoeksmeting, locaal coördinatensysteem +#MEASUREMENTTEXT = 8, Normaal Amsterdams Peil, locaal referentiesysteem +#MEASUREMENTVAR = 16, 16.00, m, einddiepte +#MEASUREMENTTEXT = 23, -, naam boormeester +#MEASUREMENTTEXT = 1, Projectburo A2, opdrachtgever +#MEASUREMENTTEXT = 14, Nee, openbaar +#MEASUREMENTTEXT = 17, Nat en droog sediment, vochtigheidstoestand grond +#MEASUREMENTTEXT = 18, Nee, peilbuis afwezig +#EOH = +0.00;2.50;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'PU';! +2.50;12.20;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'G';'grijze klei';! +12.20;13.00;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'TGR GE';'VGMH';'KAS';! +13.00;16.00;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'KAS';'laag vuursteen 40 cm dik';! diff --git a/examples/a2-maastricht-gef/gefs/B61F3161.gef b/examples/a2-maastricht-gef/gefs/B61F3161.gef new file mode 100644 index 0000000..f7b8997 --- /dev/null +++ b/examples/a2-maastricht-gef/gefs/B61F3161.gef @@ -0,0 +1,52 @@ +#GEFID = 1,1,0 +#COLUMNTEXT = 1, aan +#COLUMNSEPARATOR = ; +#RECORDSEPARATOR = ! +#FILEOWNER = DINO +#COMPANYID = Onbekend +#FILEDATE = 2025,4,30 +#PROJECTID = DINO-BOR +#COLUMN = 9 +#COLUMNINFO = 1, m, Diepte bovenkant laag, 1 +#COLUMNINFO = 2, m, Diepte onderkant laag, 2 +#COLUMNINFO = 3, mm, Zandmediaan, 8 +#COLUMNINFO = 4, mm, Grindmediaan, 9 +#COLUMNINFO = 5, %, Lutum percentage, 3 +#COLUMNINFO = 6, %, Silt percentage, 4 +#COLUMNINFO = 7, %, Zand percentage, 5 +#COLUMNINFO = 8, %, Grind percentage, 6 +#COLUMNINFO = 9, %, Organische stof percentage, 7 +#COLUMNVOID = 1, -9999.99 +#COLUMNVOID = 2, -9999.99 +#COLUMNVOID = 3, -9999.99 +#COLUMNVOID = 4, -9999.99 +#COLUMNVOID = 5, -9999.99 +#COLUMNVOID = 6, -9999.99 +#COLUMNVOID = 7, -9999.99 +#COLUMNVOID = 8, -9999.99 +#COLUMNVOID = 9, -9999.99 +#LASTSCAN = 3 +#REPORTCODE = GEF-BORE-Report,1,0,0 +#MEASUREMENTCODE = Onbekend,-,-,- +#TESTID = B61F3161 +#XYID = 31000,177786,318042 +#ZID = 31000,47.9 +#MEASUREMENTTEXT = 5, 2014-03-11, datum boorbeschrijving +#MEASUREMENTTEXT = 6, -, beschrijver lagen +#MEASUREMENTTEXT = 13, Avenue2, boorbedrijf +#MEASUREMENTTEXT = 16, 2014-03-11, datum boring +#MEASUREMENTVAR = 31, 16.00, m, diepte onderkant boortraject +#MEASUREMENTTEXT = 31, Graven, boormethode +#MEASUREMENTTEXT = 7, Rijksdriehoeksmeting, locaal coördinatensysteem +#MEASUREMENTTEXT = 8, Normaal Amsterdams Peil, locaal referentiesysteem +#MEASUREMENTVAR = 16, 16.00, m, einddiepte +#MEASUREMENTTEXT = 23, -, naam boormeester +#MEASUREMENTTEXT = 1, Projectburo A2, opdrachtgever +#MEASUREMENTTEXT = 14, Nee, openbaar +#MEASUREMENTTEXT = 2, Breukzone_Faille_Bordiere, doel onderzoek +#MEASUREMENTTEXT = 17, Nat en droog sediment, vochtigheidstoestand grond +#MEASUREMENTTEXT = 18, Nee, peilbuis afwezig +#EOH = +0.00;1.50;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'PU';! +1.50;11.50;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'G';'grijze klei';! +11.50;16.00;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'TGR GE';'VGMH';'KAS';! diff --git a/examples/a2-maastricht-gef/gefs/B61F3164.gef b/examples/a2-maastricht-gef/gefs/B61F3164.gef new file mode 100644 index 0000000..425570c --- /dev/null +++ b/examples/a2-maastricht-gef/gefs/B61F3164.gef @@ -0,0 +1,126 @@ +#GEFID = 1,1,0 +#COLUMNTEXT = 1, aan +#COLUMNSEPARATOR = ; +#RECORDSEPARATOR = ! +#FILEOWNER = DINO +#COMPANYID = Onbekend +#FILEDATE = 2025,4,30 +#PROJECTID = DINO-BOR +#COLUMN = 9 +#COLUMNINFO = 1, m, Diepte bovenkant laag, 1 +#COLUMNINFO = 2, m, Diepte onderkant laag, 2 +#COLUMNINFO = 3, mm, Zandmediaan, 8 +#COLUMNINFO = 4, mm, Grindmediaan, 9 +#COLUMNINFO = 5, %, Lutum percentage, 3 +#COLUMNINFO = 6, %, Silt percentage, 4 +#COLUMNINFO = 7, %, Zand percentage, 5 +#COLUMNINFO = 8, %, Grind percentage, 6 +#COLUMNINFO = 9, %, Organische stof percentage, 7 +#COLUMNVOID = 1, -9999.99 +#COLUMNVOID = 2, -9999.99 +#COLUMNVOID = 3, -9999.99 +#COLUMNVOID = 4, -9999.99 +#COLUMNVOID = 5, -9999.99 +#COLUMNVOID = 6, -9999.99 +#COLUMNVOID = 7, -9999.99 +#COLUMNVOID = 8, -9999.99 +#COLUMNVOID = 9, -9999.99 +#LASTSCAN = 75 +#REPORTCODE = GEF-BORE-Report,1,0,0 +#MEASUREMENTCODE = Onbekend,-,-,- +#TESTID = B61F3164 +#XYID = 31000,178160,317097 +#ZID = 31000,47.96 +#MEASUREMENTTEXT = 5, 2010-06-01, datum boorbeschrijving +#MEASUREMENTTEXT = 6, -, beschrijver lagen +#MEASUREMENTTEXT = 13, Stölben GmbH Zell/Mosel, boorbedrijf +#MEASUREMENTTEXT = 16, 2010-05-01, datum boring +#MEASUREMENTVAR = 31, 30.00, m, diepte onderkant boortraject +#MEASUREMENTVAR = 32, 100, mm, boorbuisdiameter +#MEASUREMENTTEXT = 31, Kernboring, boormethode +#MEASUREMENTTEXT = 7, Rijksdriehoeksmeting, locaal coördinatensysteem +#MEASUREMENTTEXT = 8, Normaal Amsterdams Peil, locaal referentiesysteem +#MEASUREMENTVAR = 16, 30.00, m, einddiepte +#MEASUREMENTTEXT = 23, -, naam boormeester +#MEASUREMENTTEXT = 1, Avenue2 projectbureau, opdrachtgever +#MEASUREMENTTEXT = 14, Nee, openbaar +#MEASUREMENTTEXT = 2, Tunnelbouw, doel onderzoek +#MEASUREMENTTEXT = 17, Nat en droog sediment, vochtigheidstoestand grond +#MEASUREMENTTEXT = 18, Nee, peilbuis afwezig +#MEASUREMENTVAR = 18, 5.00, m, grondwaterstand direct na boring +#EOH = +0.00;14.00;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'NBE';! +14.00;14.40;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GM';! +14.40;14.64;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'TGE GR';'VGMH';'KAS';! +14.64;14.82;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'TBL GR';'VUS';! +14.82;15.00;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'TGE GR';'VGMH';'KAS';! +15.00;15.32;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GM';! +15.32;15.51;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'TGE GR';'VGMH';'KAS';! +15.51;15.77;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GR';'VGMH';'KAS';! +15.77;16.00;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GR';'VGMH';'KAS';! +16.00;17.51;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GR';'VGMH';'KAS';! +17.51;17.58;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'VUS';! +17.58;18.00;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GR';'VGMH';'KAS';! +18.00;19.00;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GR';'VGMH';'KAS';'glauconiet in graafgangen';! +19.00;19.30;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GM';! +19.30;19.40;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GR';'VGMH';'KAS';'glauconiet in graafgangen';! +19.40;19.46;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GR';'VGMH';'KAS';'glauconiet in graafgangen';! +19.46;19.57;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GR';'VGMH';'KAS';'glauconiet in graafgangen';! +19.57;19.63;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GR';'VGMH';'KAS';'glauconiet in graafgangen';! +19.63;19.83;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GR';'VGMH';'KAS';'glauconiet in graafgangen';! +19.83;19.92;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GR';'VGMH';'KAS';'glauconiet in graafgangen';! +19.92;20.00;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GR';'VGMH';'KAS';'glauconiet in graafgangen';! +20.00;20.06;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GR';'VGMH';'KAS';'glauconiet in graafgangen';! +20.06;20.24;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GR';'VGMH';'KAS';'glauconiet in graafgangen';! +20.24;20.38;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GR';'VGMH';'KAS';'glauconiet in graafgangen';! +20.38;20.46;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GR';'VGMH';'KAS';'glauconiet in graafgangen';! +20.46;20.51;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GR';'VGMH';'KAS';'glauconiet in graafgangen';! +20.51;20.77;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GR';'VGMH';'KAS';'glauconiet in graafgangen';! +20.77;20.90;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GR';'VGMH';'KAS';'glauconiet in graafgangen';! +20.90;21.00;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GR';'VGMH';'KAS';'glauconiet in graafgangen';! +21.00;22.00;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'VUS';! +22.00;22.51;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GR';'VGMH';'KAS';'glauconiet in graafgangen';! +22.51;22.76;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GR';'VGMH';'KAS';'glauconiet in graafgangen';! +22.76;22.86;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GR';'VGMH';'KAS';'Crinoidea Foraminifera glauconiet in graafgangen';! +22.86;22.93;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GR';'VGMH';'KAS';'glauconiet in graafgangen';! +22.93;23.17;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GR';'VGMH';'KAS';'glauconiet in graafgangen';! +23.17;23.22;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GR';'VGMH';'KAS';'glauconiet in graafgangen';! +23.22;23.59;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GR';'VGMH';'KAS';'glauconiet in graafgangen';! +23.59;23.62;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GR';'VGMH';'KAS';'glauconiet in graafgangen';! +23.62;23.80;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GR';'VGMH';'KAS';'glauconiet in graafgangen';! +23.80;24.00;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GM';! +24.00;24.39;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GR';'VGMH';'KAS';'zee-egel glauconiet in graafgangen';! +24.39;24.41;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GR';'VGMH';'KAS';'glauconiet in graafgangen';! +24.41;25.00;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GR';'VGMH';'KAS';'ammoniet glauconiet in graafgangen';! +25.00;25.18;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GR';'VGZA';'KAS';! +25.18;25.22;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GR';'VGZA';'KAS';! +25.22;25.69;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GR';'VGZA';'KAS';! +25.69;25.78;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GR';'VGZA';'KAS';! +25.78;26.45;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GR';'VGZA';'KAS';'crinoide';! +26.45;26.48;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GR';'VGZA';'KAS';! +26.48;26.59;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GR';'VGZA';'KAS';! +26.59;26.69;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GR';'VGZA';'KAS';! +26.69;26.82;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GR';'VGZA';'KAS';! +26.82;27.00;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GM';! +27.00;27.27;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GR';'VGZA';'KAS';! +27.27;27.29;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'VUS';! +27.29;27.47;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GR';'VGZA';'KAS';! +27.47;27.49;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'VUS';! +27.49;27.62;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GR';'VGZA';'KAS';! +27.62;27.68;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'VUS';! +27.68;28.00;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GR';'VGZA';'KAS';'Serpula';! +28.00;28.17;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GR';'VGZA';'KAS';! +28.17;28.23;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'VUS';! +28.23;28.29;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GR';'VGZA';'KAS';! +28.29;28.31;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'VUS';! +28.31;28.37;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GR';'VGZA';'KAS';'Crustacea';! +28.37;28.61;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GR';'VGZA';'KAS';'Crinoidea glauconiet in graafgangen';! +28.61;28.77;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GR';'VGZA';'KAS';! +28.77;28.82;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'VUS';! +28.82;28.96;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GR';'VGZA';'KAS';! +28.96;29.00;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'VUS';! +29.00;29.05;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GR';'VGZA';'KAS';! +29.05;29.18;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GR';'VGZA';'KAS';! +29.18;29.20;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GR';'VGZA';'KAS';! +29.20;29.70;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GR';'VGZA';'SCH1';'GC2';'KAS';'Entolium sp. rolsteentjes';! +29.70;30.00;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GM';! diff --git a/examples/a2-maastricht-gef/gefs/B61F3165.gef b/examples/a2-maastricht-gef/gefs/B61F3165.gef new file mode 100644 index 0000000..c75e634 --- /dev/null +++ b/examples/a2-maastricht-gef/gefs/B61F3165.gef @@ -0,0 +1,122 @@ +#GEFID = 1,1,0 +#COLUMNTEXT = 1, aan +#COLUMNSEPARATOR = ; +#RECORDSEPARATOR = ! +#FILEOWNER = DINO +#COMPANYID = Onbekend +#FILEDATE = 2025,4,30 +#PROJECTID = DINO-BOR +#COLUMN = 9 +#COLUMNINFO = 1, m, Diepte bovenkant laag, 1 +#COLUMNINFO = 2, m, Diepte onderkant laag, 2 +#COLUMNINFO = 3, mm, Zandmediaan, 8 +#COLUMNINFO = 4, mm, Grindmediaan, 9 +#COLUMNINFO = 5, %, Lutum percentage, 3 +#COLUMNINFO = 6, %, Silt percentage, 4 +#COLUMNINFO = 7, %, Zand percentage, 5 +#COLUMNINFO = 8, %, Grind percentage, 6 +#COLUMNINFO = 9, %, Organische stof percentage, 7 +#COLUMNVOID = 1, -9999.99 +#COLUMNVOID = 2, -9999.99 +#COLUMNVOID = 3, -9999.99 +#COLUMNVOID = 4, -9999.99 +#COLUMNVOID = 5, -9999.99 +#COLUMNVOID = 6, -9999.99 +#COLUMNVOID = 7, -9999.99 +#COLUMNVOID = 8, -9999.99 +#COLUMNVOID = 9, -9999.99 +#LASTSCAN = 71 +#REPORTCODE = GEF-BORE-Report,1,0,0 +#MEASUREMENTCODE = Onbekend,-,-,- +#TESTID = B61F3165 +#XYID = 31000,178075,317384 +#ZID = 31000,48.47 +#MEASUREMENTTEXT = 5, 2010-06-22, datum boorbeschrijving +#MEASUREMENTTEXT = 6, -, beschrijver lagen +#MEASUREMENTTEXT = 13, Stölben GmbH Zell/Mosel, boorbedrijf +#MEASUREMENTTEXT = 16, 2010-05-01, datum boring +#MEASUREMENTVAR = 31, 30.00, m, diepte onderkant boortraject +#MEASUREMENTVAR = 32, 100, mm, boorbuisdiameter +#MEASUREMENTTEXT = 31, Kernboring, boormethode +#MEASUREMENTTEXT = 7, Rijksdriehoeksmeting, locaal coördinatensysteem +#MEASUREMENTTEXT = 8, Normaal Amsterdams Peil, locaal referentiesysteem +#MEASUREMENTVAR = 16, 30.00, m, einddiepte +#MEASUREMENTTEXT = 23, -, naam boormeester +#MEASUREMENTTEXT = 1, Avenue2 projectbureau, opdrachtgever +#MEASUREMENTTEXT = 14, Nee, openbaar +#MEASUREMENTTEXT = 2, tunnelbouw, doel onderzoek +#MEASUREMENTTEXT = 17, Nat en droog sediment, vochtigheidstoestand grond +#MEASUREMENTTEXT = 18, Nee, peilbuis afwezig +#MEASUREMENTVAR = 18, 5.00, m, grondwaterstand direct na boring +#EOH = +0.00;14.00;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'NBE';! +14.00;14.27;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'G';'ZGRX';! +14.27;14.59;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'TGE GR';'VGMH';'KAS';! +14.59;14.61;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'VUS';! +14.61;14.72;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'TGE GR';'VGMH';'KAS';! +14.72;14.85;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'TGE GR';'VGMH';'KAS';! +14.85;15.00;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'TGE GR';'VGMH';'KAS';! +15.00;15.14;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'LI GR';'VGMH';'KAS';! +15.14;15.21;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'LI GR';'VGMH';'KAS';! +15.21;15.31;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'LI GR';'VGMH';'KAS';! +15.31;15.45;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'LI GR';'VGMH';'KAS';! +15.45;15.64;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'LI GR';'VGMH';'KAS';! +15.64;15.66;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'VUS';! +15.66;15.77;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'LI GR';'VGMH';'KAS';! +15.77;15.80;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'VUS';! +15.80;16.00;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'LI GR';'VGMH';'KAS';! +16.00;16.31;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'LI GR';'VGMH';'KAS';! +16.31;16.45;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'LI GR';'VGMH';'KAS';! +16.45;16.71;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'LI GR';'VGMH';'KAS';! +16.71;17.00;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GM';! +17.00;17.78;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'LI GR';'VGMZ';'SCH1';'KAS';! +17.78;17.87;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'LI GR';'VGMZ';'KAS';! +17.87;18.00;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'LI GR';'VGMZ';'KAS';! +18.00;18.09;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'LI GR';'VGMH';'KAS';! +18.09;18.35;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'LI GR';'VGMH';'KAS';! +18.35;18.41;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'LI GR';'VGMH';'KAS';! +18.41;18.49;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'LI GR';'VGMH';'KAS';! +18.49;18.57;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'LI GR';'VGMH';'KAS';! +18.57;18.69;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'LI GR';'VGMH';'KAS';! +18.69;19.00;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GM';! +19.00;19.13;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'LI GR';'VGMH';'KAS';! +19.13;19.16;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'VUS';! +19.16;19.29;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'LI GR';'VGMH';'KAS';! +19.29;19.33;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'VUS';! +19.33;19.88;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'LI GR';'VGMH';'SCH1';'KAS';! +19.88;19.90;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'LI GR';'VGMH';'KAS';! +19.90;20.00;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'LI GR';'VGMH';'KAS';! +20.00;20.35;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'DO GR';'VGMH';'KAS';! +20.35;20.40;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'VUS';! +20.40;20.79;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'DO GR';'VGMH';'KAS';! +20.79;20.94;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'VUS';! +20.94;21.00;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'DO GR';'VGMH';'KAS';! +21.00;22.00;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'LI GR';'VGMH';'KAS';! +22.00;22.23;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GR';'VGMH';'KAS';! +22.23;22.26;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'VUS';! +22.26;22.48;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GR';'VGMH';'KAS';! +22.48;22.51;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GM';! +22.51;22.57;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GR';'VGMH';'KAS';! +22.57;23.05;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GM';! +23.05;23.67;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GR';'VGMH';'KAS';! +23.67;23.70;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'VUS';! +23.70;24.01;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GR';'VGMH';'KAS';! +24.01;24.04;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'VUS';! +24.04;24.37;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GR';'VGMH';'SCH1';'KAS';'Crinoidea';! +24.37;24.39;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GR';'VGMH';'KAS';! +24.39;24.41;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GR';'VGMH';'KAS';! +24.41;24.89;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GM';! +24.89;25.00;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GR';'VGMH';'KAS';! +25.00;26.00;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GR';'VGMH';'KAS';! +26.00;26.55;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GR';'VGMH';'KAS';'Crinoidea Echinoidea';! +26.55;26.64;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GR';'VGMH';'KAS';! +26.64;26.71;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GR';'VGMH';'KAS';! +26.71;27.00;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GM';! +27.00;28.00;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GR';'VGMH';'KAS';'Crinoidea';! +28.00;28.43;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GM';! +28.43;28.53;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GR';'VGMH';'SCH2';'KAS';'Crinoidea';! +28.53;29.17;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GR';'VGMH';'KAS';! +29.17;29.31;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GR';'VGMH';'KAS';! +29.31;29.68;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GR';'VGMH';'KAS';! +29.68;29.75;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GR';'VGMH';'KAS';! +29.75;30.00;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GR';'VGMH';'KAS';! diff --git a/examples/a2-maastricht-gef/gefs/B61F3170.gef b/examples/a2-maastricht-gef/gefs/B61F3170.gef new file mode 100644 index 0000000..0432133 --- /dev/null +++ b/examples/a2-maastricht-gef/gefs/B61F3170.gef @@ -0,0 +1,143 @@ +#GEFID = 1,1,0 +#COLUMNTEXT = 1, aan +#COLUMNSEPARATOR = ; +#RECORDSEPARATOR = ! +#FILEOWNER = DINO +#COMPANYID = Onbekend +#FILEDATE = 2025,4,30 +#PROJECTID = DINO-BOR +#COLUMN = 9 +#COLUMNINFO = 1, m, Diepte bovenkant laag, 1 +#COLUMNINFO = 2, m, Diepte onderkant laag, 2 +#COLUMNINFO = 3, mm, Zandmediaan, 8 +#COLUMNINFO = 4, mm, Grindmediaan, 9 +#COLUMNINFO = 5, %, Lutum percentage, 3 +#COLUMNINFO = 6, %, Silt percentage, 4 +#COLUMNINFO = 7, %, Zand percentage, 5 +#COLUMNINFO = 8, %, Grind percentage, 6 +#COLUMNINFO = 9, %, Organische stof percentage, 7 +#COLUMNVOID = 1, -9999.99 +#COLUMNVOID = 2, -9999.99 +#COLUMNVOID = 3, -9999.99 +#COLUMNVOID = 4, -9999.99 +#COLUMNVOID = 5, -9999.99 +#COLUMNVOID = 6, -9999.99 +#COLUMNVOID = 7, -9999.99 +#COLUMNVOID = 8, -9999.99 +#COLUMNVOID = 9, -9999.99 +#LASTSCAN = 94 +#REPORTCODE = GEF-BORE-Report,1,0,0 +#MEASUREMENTCODE = Onbekend,-,-,- +#TESTID = B61F3170 +#XYID = 31000,177753,318127 +#ZID = 31000,48.19 +#MEASUREMENTTEXT = 5, 2010-06-01, datum boorbeschrijving +#MEASUREMENTTEXT = 6, -, beschrijver lagen +#MEASUREMENTTEXT = 13, Stölben GmbH Zell/Mosel, boorbedrijf +#MEASUREMENTTEXT = 16, 2010-06-01, datum boring +#MEASUREMENTVAR = 31, 35.00, m, diepte onderkant boortraject +#MEASUREMENTTEXT = 31, Kernboring, boormethode +#MEASUREMENTTEXT = 7, Rijksdriehoeksmeting, locaal coördinatensysteem +#MEASUREMENTTEXT = 8, Normaal Amsterdams Peil, locaal referentiesysteem +#MEASUREMENTVAR = 16, 35.00, m, einddiepte +#MEASUREMENTTEXT = 23, -, naam boormeester +#MEASUREMENTTEXT = 1, Avenue2 projectbureau, opdrachtgever +#MEASUREMENTTEXT = 14, Nee, openbaar +#MEASUREMENTTEXT = 2, Tunnelbouw, doel onderzoek +#MEASUREMENTTEXT = 17, Droog sediment, vochtigheidstoestand grond +#MEASUREMENTTEXT = 18, Nee, peilbuis afwezig +#EOH = +0.00;12.95;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'L';'LSS';! +12.95;13.00;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'TGE OR';'VGZA';'KAS';! +13.00;13.49;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'TGE OR';'VGZA';'KAS';! +13.49;13.70;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'TGE OR';'VGZA';'KAS';'Hemipneustes';! +13.70;13.75;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'TGE OR';'VGZA';'KAS';! +13.75;14.30;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GM';! +14.30;14.75;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'TGR GE';'VGZA';'KAS';'Hemipneustes';! +14.75;15.00;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GM';! +15.00;15.75;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'TGR GE';'VGZA';'KAS';'Hemipneustes';! +15.75;16.00;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GM';! +16.00;16.75;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'TGR GE';'VGZA';'KAS';'Hemipneustes';! +16.75;17.00;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GM';! +17.00;17.26;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'TGR GE';'VGZA';'KAS';! +17.26;17.35;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'TGR GE';'VGZA';'KAS';'harde kalksteenbrokjes';! +17.35;18.00;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'TGR GE';'VGZA';'KAS';! +18.00;18.27;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GM';! +18.27;18.85;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'TGR GE';'VGZA';'KAS';! +18.85;18.94;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'VGHA';'KAS';! +18.94;19.28;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'TGR GE';'VGZA';'KAS';! +19.28;19.37;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'TGR GE';'VGZA';'KAS';'fossielengruis';! +19.37;19.40;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'TGR GE';'VGZA';'KAS';! +19.40;19.42;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'TGR GE';'VGZA';'KAS';! +19.42;19.58;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'TGR GE';'VGZA';'KAS';! +19.58;19.61;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'K';! +19.61;20.00;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'TGR GE';'VGZA';'KAS';! +20.00;20.27;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GM';! +20.27;20.59;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'TGR GE';'VGZA';'KAS';! +20.59;20.65;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'TGR GE';'VGZA';'KAS';'met harde brokjes';! +20.65;21.00;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'TGR GE';'VGZA';'KAS';! +21.00;21.15;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'TGR GE';'VGZA';'KAS';'met hardere brokjes';! +21.15;21.21;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'WI';'VGZA';'KAS';'met hardere brokjes';! +21.21;21.34;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'TGR GE';'VGZA';'KAS';'met hardere brokjes';! +21.34;21.40;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'WI';'VGZA';'KAS';'met hardere brokjes';! +21.40;21.79;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'TGR GE';'VGZA';'KAS';'met hardere brokjes';! +21.79;21.82;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'WI';'VGZA';'KAS';'met hardere brokjes';! +21.82;22.00;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'TGR GE';'VGZA';'KAS';'met hardere brokjes';! +22.00;22.65;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'TGE RZ';'VGMH';'SCH1';'KAS';! +22.65;22.85;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GM';! +22.85;23.00;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'TGE RZ';'VGMH';'KAS';! +23.00;23.82;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'TGE GR';'VGMH';'KAS';! +23.82;23.92;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'TGE GR';'VGMH';'KAS';! +23.92;24.00;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'TGE GR';'VGMH';'KAS';! +24.00;24.03;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GM';! +24.03;24.17;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'TGR GE';'VGMH';'KAS';! +24.17;24.55;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GM';! +24.55;24.90;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'TGE GR';'VGMH';'KAS';! +24.90;25.00;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'TGE GR';'VGMH';'KAS';'krabbenschaar';! +25.00;25.41;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GM';! +25.41;25.51;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'TGE GR';'VGMH';'KAS';! +25.51;25.58;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'TGE GR';'VGMH';'KAS';! +25.58;26.00;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'TGE GR';'VGMH';'SCH1';'KAS';! +26.00;26.18;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'TGR ZW';'VUS';! +26.18;26.58;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'TGE GR';'VGMH';'SCH1';'KAS';! +26.58;26.84;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GM';! +26.84;27.00;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'TGE GR';'VGMH';'KAS';! +27.00;27.30;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'TGE GR';'VGMH';'KAS';! +27.30;27.40;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'TGE GR';'VGMH';'KAS';'met fossiele resten';! +27.40;28.00;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'TGE GR';'VGMH';'KAS';! +28.00;28.09;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GM';! +28.09;28.44;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'TGE GR';'VGMH';'KAS';! +28.44;28.67;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GM';! +28.67;29.00;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'TGE GR';'VGMH';'KAS';! +29.00;29.37;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'ZW';'VUS';! +29.37;30.00;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'TGE GR';'VGMH';'KAS';! +30.00;30.10;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'TGE GR';'VGMH';'KAS';! +30.10;30.21;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'TGE GR';'VGMH';'KAS';! +30.21;30.30;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'TGE GR';'VGMH';'KAS';! +30.30;30.56;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GM';! +30.56;30.72;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'TGE GR';'VGMH';'KAS';! +30.72;31.00;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'TGE GR';'VGMH';'KAS';! +31.00;31.18;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'LI GR';'VGMH';'KAS';! +31.18;31.37;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'LI GR';'VGMH';'KAS';! +31.37;31.50;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'LI GR';'VGMH';'KAS';! +31.50;31.54;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'LI GR';'VGMH';'KAS';! +31.54;31.62;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'LI GR';'VGMH';'KAS';! +31.62;32.00;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'LI GR';'VGMH';'KAS';! +32.00;32.18;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'LI GR';'VGMH';'KAS';! +32.18;32.35;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'LI GR';'VGMH';'KAS';! +32.35;32.52;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GM';! +32.52;32.63;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'LI GR';'VGMH';'KAS';! +32.63;32.67;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'LI GR';'VGMH';'KAS';! +32.67;33.00;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'LI GR';'VGMH';'KAS';! +33.00;33.11;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'TGE GR';'VGMH';'KAS';! +33.11;33.26;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GR';'VGMH';'KAS';! +33.26;34.00;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GR';'VGMH';'KAS';! +34.00;34.10;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GM';! +34.10;34.14;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GR';'VGMH';'KAS';! +34.14;34.21;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'TGE GR';'VGMH';'KAS';! +34.21;34.27;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'TGE GR';'VGMH';'KAS';! +34.27;34.35;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'TGE GR';'VGMH';'KAS';! +34.35;34.52;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GR';'VGMH';'KAS';! +34.52;34.60;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GR';'VGMH';'KAS';! +34.60;34.87;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GR';'VGMH';'KAS';! +34.87;35.00;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GR';'VGMH';'KAS';! diff --git a/examples/a2-maastricht-gef/gefs/B61F3171.gef b/examples/a2-maastricht-gef/gefs/B61F3171.gef new file mode 100644 index 0000000..16e5f2d --- /dev/null +++ b/examples/a2-maastricht-gef/gefs/B61F3171.gef @@ -0,0 +1,138 @@ +#GEFID = 1,1,0 +#COLUMNTEXT = 1, aan +#COLUMNSEPARATOR = ; +#RECORDSEPARATOR = ! +#FILEOWNER = DINO +#COMPANYID = Onbekend +#FILEDATE = 2025,4,30 +#PROJECTID = DINO-BOR +#COLUMN = 9 +#COLUMNINFO = 1, m, Diepte bovenkant laag, 1 +#COLUMNINFO = 2, m, Diepte onderkant laag, 2 +#COLUMNINFO = 3, mm, Zandmediaan, 8 +#COLUMNINFO = 4, mm, Grindmediaan, 9 +#COLUMNINFO = 5, %, Lutum percentage, 3 +#COLUMNINFO = 6, %, Silt percentage, 4 +#COLUMNINFO = 7, %, Zand percentage, 5 +#COLUMNINFO = 8, %, Grind percentage, 6 +#COLUMNINFO = 9, %, Organische stof percentage, 7 +#COLUMNVOID = 1, -9999.99 +#COLUMNVOID = 2, -9999.99 +#COLUMNVOID = 3, -9999.99 +#COLUMNVOID = 4, -9999.99 +#COLUMNVOID = 5, -9999.99 +#COLUMNVOID = 6, -9999.99 +#COLUMNVOID = 7, -9999.99 +#COLUMNVOID = 8, -9999.99 +#COLUMNVOID = 9, -9999.99 +#LASTSCAN = 87 +#REPORTCODE = GEF-BORE-Report,1,0,0 +#MEASUREMENTCODE = Onbekend,-,-,- +#TESTID = B61F3171 +#XYID = 31000,177760,318194 +#ZID = 31000,47.99 +#MEASUREMENTTEXT = 5, 2010-06-01, datum boorbeschrijving +#MEASUREMENTTEXT = 6, -, beschrijver lagen +#MEASUREMENTTEXT = 13, Stölben GmbH Zell/Mosel, boorbedrijf +#MEASUREMENTTEXT = 16, 2010-05-01, datum boring +#MEASUREMENTVAR = 31, 35.00, m, diepte onderkant boortraject +#MEASUREMENTVAR = 32, 100, mm, boorbuisdiameter +#MEASUREMENTTEXT = 31, Kernboring, boormethode +#MEASUREMENTTEXT = 7, Rijksdriehoeksmeting, locaal coördinatensysteem +#MEASUREMENTTEXT = 8, Normaal Amsterdams Peil, locaal referentiesysteem +#MEASUREMENTVAR = 16, 35.00, m, einddiepte +#MEASUREMENTTEXT = 23, -, naam boormeester +#MEASUREMENTTEXT = 1, Avenue2 projectbureau, opdrachtgever +#MEASUREMENTTEXT = 14, Nee, openbaar +#MEASUREMENTVAR = 13, 13.00, m, voorgegraven diepte +#MEASUREMENTTEXT = 2, Tunnelconstructie, doel onderzoek +#MEASUREMENTTEXT = 17, Droog sediment, vochtigheidstoestand grond +#MEASUREMENTTEXT = 18, Nee, peilbuis afwezig +#EOH = +13.00;13.75;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'G';! +13.75;14.00;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'TGE GR';'KAS';! +14.00;14.30;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'NBE';! +14.30;15.00;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GM';! +15.00;15.20;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'TGE WI';'VGZA';'KAS';! +15.20;15.38;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GM';! +15.38;15.74;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'TGE WI';'VGZA';'SCH1';'KAS';'oester Hemipneustes';! +15.74;16.00;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'TWI GE';'VGZA';'KAS';! +16.00;16.44;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'TWI GE';'VGMH';'SCH1';'KAS';! +16.44;16.80;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GM';! +16.80;17.00;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'TWI GE';'VGMH';'KAS';! +17.00;17.39;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'TGE WI';'VGMH';'SCH1';'KAS';! +17.39;17.56;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GM';! +17.56;18.00;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'TGE WI';'VGMH';'KAS';! +18.00;18.10;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'TGE WI';'VGZA';'SCH1';'KAS';! +18.10;18.74;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'TGE WI';'VGMH';'KAS';! +18.74;19.00;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GM';! +19.00;19.10;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'TGE WI';'VGMH';'KAS';! +19.10;19.34;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GM';! +19.34;19.84;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'TGE WI';'VGMH';'KAS';! +19.84;19.89;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'TGE WI';'VGMH';'SCH2';'KAS';'pectiniden oestersserpuliden Hemipneustes';! +19.89;20.00;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'TGE WI';'VGMH';'KAS';! +20.00;20.57;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'TGE WI';'KAS';! +20.57;20.83;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GM';! +20.83;21.00;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'TRZ GE';'KAS';! +21.00;21.60;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'TGE WI';'VGMH';'SCH1';'KAS';! +21.60;21.93;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GM';! +21.93;22.00;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'TGE WI';'VGMH';'KAS';! +22.00;22.14;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GM';! +22.14;22.42;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'TGE GR';'VGZA';'KAS';'met veel fossielgruis';! +22.42;22.57;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'TGE GR';'VGZA';'KAS';'met veel fossielgruis';! +22.57;23.00;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'TGE GR';'VGZA';'KAS';'met veel fossielgruis';! +23.00;23.35;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'TGE WI';'VGMH';'SCH2';'KAS';! +23.35;23.68;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GM';! +23.68;24.00;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'TGE WI';'VGMH';'KAS';! +24.00;24.35;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'TGE WI';'VGMH';'KAS';! +24.35;24.52;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'TGE WI';'VGMH';'KAS';! +24.52;24.69;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'TGE WI';'VGMH';'KAS';! +24.69;24.87;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'TGE WI';'VGMH';'KAS';! +24.87;25.00;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'TGE WI';'VGMH';'KAS';! +25.00;25.04;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'TGE WI';'KAS';! +25.04;25.12;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'TGE WI';'KAS';! +25.12;25.14;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'TGE WI';'KAS';! +25.14;25.30;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'TGE WI';'KAS';! +25.30;25.49;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'TGE WI';'KAS';! +25.49;25.54;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'TGE WI';'KAS';! +25.54;25.80;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'TGE WI';'KAS';! +25.80;26.00;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GM';! +26.00;26.06;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'TBR GR';'VGMH';'SCH1';'KAS';! +26.06;26.27;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'TBR GR';'VGMH';'KAS';! +26.27;26.30;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'TBR GR';'VGMH';'KAS';! +26.30;26.38;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'TBR GR';'VGMH';'KAS';! +26.38;26.93;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'TBR GR';'VGMH';'KAS';! +26.93;26.96;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'TBR GR';'VGMH';'KAS';! +26.96;27.00;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'TBR GR';'VGMH';'KAS';! +27.00;27.26;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'TRZ GE';'VGMH';'KAS';! +27.26;27.54;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GM';! +27.54;27.63;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GE';'VGMH';'KAS';! +27.63;28.00;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'TRZ GE';'VGMH';'KAS';'fragmenten kreeften';! +28.00;28.32;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GM';! +28.32;28.38;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'TBR GR';'VGMH';'KAS';'serpuliden';! +28.38;29.00;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'TBR GR';'VGMH';'KAS';! +29.00;29.33;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GM';! +29.33;29.51;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'TBR GR';'VGMH';'SCH1';'KAS';! +29.51;30.00;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'LI GR';'VGMH';'KAS';'resten slangsterren';! +30.00;30.20;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GR';'VGMH';'KAS';! +30.20;30.30;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GR';'VGMH';'KAS';! +30.30;31.00;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GR';'VGMH';'KAS';! +31.00;31.05;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GR';'VGMH';'KAS';! +31.05;31.26;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GM';! +31.26;31.35;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GR';'VGMH';'KAS';! +31.35;31.42;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GR';'VGMH';'KAS';! +31.42;31.71;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GR';'VGMH';'KAS';! +31.71;31.77;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GR';'VGMH';'KAS';! +31.77;32.00;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GR';'VGMH';'KAS';! +32.00;32.20;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GM';! +32.20;32.65;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GR';'KAS';! +32.65;32.75;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GR';'KAS';! +32.75;33.00;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GR';'KAS';! +33.00;33.53;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GR';'VGMH';'KAS';! +33.53;33.87;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GR';'VGMH';'KAS';! +33.87;34.00;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GR';'VGMH';'KAS';! +34.00;34.15;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GR';'VGMH';'KAS';! +34.15;34.34;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GM';! +34.34;34.55;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GR';'VGMH';'KAS';! +34.55;34.67;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GR';'VGMH';'KAS';! +34.67;35.00;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GR';'VGMH';'KAS';! diff --git a/examples/a2-maastricht-gef/gefs/B61F3172.gef b/examples/a2-maastricht-gef/gefs/B61F3172.gef new file mode 100644 index 0000000..190f76f --- /dev/null +++ b/examples/a2-maastricht-gef/gefs/B61F3172.gef @@ -0,0 +1,140 @@ +#GEFID = 1,1,0 +#COLUMNTEXT = 1, aan +#COLUMNSEPARATOR = ; +#RECORDSEPARATOR = ! +#FILEOWNER = DINO +#COMPANYID = Onbekend +#FILEDATE = 2025,4,30 +#PROJECTID = DINO-BOR +#COLUMN = 9 +#COLUMNINFO = 1, m, Diepte bovenkant laag, 1 +#COLUMNINFO = 2, m, Diepte onderkant laag, 2 +#COLUMNINFO = 3, mm, Zandmediaan, 8 +#COLUMNINFO = 4, mm, Grindmediaan, 9 +#COLUMNINFO = 5, %, Lutum percentage, 3 +#COLUMNINFO = 6, %, Silt percentage, 4 +#COLUMNINFO = 7, %, Zand percentage, 5 +#COLUMNINFO = 8, %, Grind percentage, 6 +#COLUMNINFO = 9, %, Organische stof percentage, 7 +#COLUMNVOID = 1, -9999.99 +#COLUMNVOID = 2, -9999.99 +#COLUMNVOID = 3, -9999.99 +#COLUMNVOID = 4, -9999.99 +#COLUMNVOID = 5, -9999.99 +#COLUMNVOID = 6, -9999.99 +#COLUMNVOID = 7, -9999.99 +#COLUMNVOID = 8, -9999.99 +#COLUMNVOID = 9, -9999.99 +#LASTSCAN = 90 +#REPORTCODE = GEF-BORE-Report,1,0,0 +#MEASUREMENTCODE = Onbekend,-,-,- +#TESTID = B61F3172 +#XYID = 31000,177761,318400 +#ZID = 31000,47.91 +#MEASUREMENTTEXT = 5, 2010-06-01, datum boorbeschrijving +#MEASUREMENTTEXT = 6, -, beschrijver lagen +#MEASUREMENTTEXT = 13, Stölben GmbH Zell/Mosel, boorbedrijf +#MEASUREMENTTEXT = 16, 2010-05-01, datum boring +#MEASUREMENTVAR = 31, 35.00, m, diepte onderkant boortraject +#MEASUREMENTVAR = 32, 100, mm, boorbuisdiameter +#MEASUREMENTTEXT = 31, Kernboring, boormethode +#MEASUREMENTTEXT = 7, Rijksdriehoeksmeting, locaal coördinatensysteem +#MEASUREMENTTEXT = 8, Normaal Amsterdams Peil, locaal referentiesysteem +#MEASUREMENTVAR = 16, 35.00, m, einddiepte +#MEASUREMENTTEXT = 23, -, naam boormeester +#MEASUREMENTTEXT = 1, Avenue2 projectbureau, opdrachtgever +#MEASUREMENTTEXT = 14, Nee, openbaar +#MEASUREMENTVAR = 13, 11.00, m, voorgegraven diepte +#MEASUREMENTTEXT = 17, Droog sediment, vochtigheidstoestand grond +#MEASUREMENTTEXT = 18, Nee, peilbuis afwezig +#EOH = +11.00;12.00;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'G';'ZGRX';! +12.00;12.27;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'NBE';! +12.27;13.00;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'TGE WI';'VGZA';'SCH2';'KAS';'Hemipneustes';! +13.00;13.35;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GM';! +13.35;13.47;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'TGE WI';'VGZA';'KAS';! +13.47;13.65;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GM';! +13.65;13.82;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'TGE WI';'VGZA';'KAS';! +13.82;14.00;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'TGE WI';'VGZA';'KAS';! +14.00;14.42;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'TGE BR';'VGZA';'SCH2';'KAS';! +14.42;14.60;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GM';! +14.60;15.00;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'TGE BR';'VGZA';'SCH1';'KAS';'Hemipneustes';! +15.00;15.74;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'TGE WI';'VGMH';'SCH2';'KAS';'Hemipneustes oesters';! +15.74;16.00;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GM';! +16.00;16.42;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'TGE WI';'VGZA';'SCH2';'KAS';! +16.42;16.47;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GM';! +16.47;16.55;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'TGE WI';'VGZA';'SCH1';'KAS';! +16.55;16.61;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GM';! +16.61;16.93;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'TGE WI';'VGZA';'KAS';! +16.93;17.00;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GM';! +17.00;17.24;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'TGR WI';'VGMH';'KAS';! +17.24;17.42;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GM';! +17.42;18.00;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'TGR WI';'KAS';! +18.00;18.10;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GM';! +18.10;18.18;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'TGR WI';'VGZA';'KAS';! +18.18;18.45;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GM';! +18.45;19.00;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'TGR WI';'VGZA';'KAS';! +19.00;20.00;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'TGR WI';'VGMH';'KAS';! +20.00;20.30;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GM';! +20.30;20.95;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'TGE GR';'VGMH';'SCH1';'KAS';! +20.95;21.00;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GM';! +21.00;22.00;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'TGR WI';'VGZA';'KAS';'enkele serpuliden';! +22.00;22.06;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'TGR WI';'VGMH';'KAS';! +22.06;22.34;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GM';! +22.34;22.82;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'TGR WI';'VGMH';'KAS';! +22.82;23.00;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'TGE GR';'VGMZ';'KAS';! +23.00;23.12;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GM';! +23.12;24.00;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'TGR WI';'VGMH';'SCH2';'KAS';! +24.00;24.31;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GM';! +24.31;24.56;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'TGR WI';'VGMH';'KAS';! +24.56;24.83;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'TGR WI';'VGMH';'KAS';! +24.83;25.00;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GM';! +25.00;25.73;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'TGE WI';'SCH1';'KAS';! +25.73;25.90;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'TGE WI';'SCH1';'KAS';'met fossielen';! +25.90;26.00;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'TGE WI';'KAS';! +26.00;26.40;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GM';! +26.40;27.00;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'TGR WI';'VGMH';'KAS';'fragment krab';! +27.00;27.27;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'TGN GR';'VGMH';'KAS';! +27.27;27.84;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'TGR WI';'VGMH';'KAS';! +27.84;27.89;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'TGR WI';'VGMH';'KAS';! +27.89;28.00;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'TGR WI';'VGMH';'KAS';! +28.00;29.00;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'TGR WI';'VGMH';'KAS';! +29.00;29.10;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'TGE GR';'VGMH';'KAS';! +29.10;29.51;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'LI GR';'VGMH';'KAS';! +29.51;29.80;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GM';! +29.80;29.97;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'LI GR';'VGMH';'KAS';! +29.97;30.24;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GM';! +30.24;30.36;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'LI GR';'VGMH';'KAS';! +30.36;30.42;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'LI GR';'VGMH';'KAS';! +30.42;30.45;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'LI GR';'VGMH';'KAS';! +30.45;30.67;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'LI GR';'VGMH';'KAS';! +30.67;31.00;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'LI GR';'VGMH';'SCH1';'KAS';! +31.00;31.33;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GM';! +31.33;31.78;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'LI GR';'VGMH';'KAS';! +31.78;31.83;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'LI GR';'VGMH';'KAS';! +31.83;31.88;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'LI GR';'VGMH';'KAS';! +31.88;31.91;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'LI GR';'VGMH';'KAS';! +31.91;32.00;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'LI GR';'VGMH';'KAS';! +32.00;32.12;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'LI GR';'VGMH';'KAS';! +32.12;32.18;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'LI GR';'VGMH';'KAS';! +32.18;32.23;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'LI GR';'VGMH';'KAS';! +32.23;32.29;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'LI GR';'VGMH';'KAS';! +32.29;32.41;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'LI GR';'VGMH';'KAS';! +32.41;32.48;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'LI TGE GR';'VGMH';'KAS';! +32.48;32.52;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'LI TGE GR';'VGMH';'KAS';! +32.52;32.55;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'LI TGE GR';'VGMH';'KAS';! +32.55;32.78;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'LI GR';'VGMH';'KAS';! +32.78;32.83;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'LI GR';'VGMH';'KAS';! +32.83;33.00;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'LI GR';'VGMH';'KAS';! +33.00;33.09;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'LI GR';'VGMH';'KAS';! +33.09;33.29;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GM';! +33.29;33.56;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'LI GR';'VGMH';'KAS';! +33.56;33.59;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'LI GR';'VGMH';'KAS';! +33.59;33.80;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'LI GR';'VGMH';'KAS';! +33.80;33.88;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'LI GR';'VGMH';'KAS';! +33.88;34.00;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'LI GR';'VGMH';'KAS';! +34.00;34.42;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'LI GR';'VGMH';'KAS';'serpulide';! +34.42;34.44;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'LI GR';'VGMH';'KAS';! +34.44;34.47;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'LI GR';'VGMH';'KAS';! +34.47;34.54;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'LI GR';'VGMH';'KAS';! +34.54;35.00;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'LI GR';'VGMH';'KAS';! diff --git a/examples/a2-maastricht-gef/gefs/B61F3174.gef b/examples/a2-maastricht-gef/gefs/B61F3174.gef new file mode 100644 index 0000000..f9ede17 --- /dev/null +++ b/examples/a2-maastricht-gef/gefs/B61F3174.gef @@ -0,0 +1,125 @@ +#GEFID = 1,1,0 +#COLUMNTEXT = 1, aan +#COLUMNSEPARATOR = ; +#RECORDSEPARATOR = ! +#FILEOWNER = DINO +#COMPANYID = Onbekend +#FILEDATE = 2025,4,30 +#PROJECTID = DINO-BOR +#COLUMN = 9 +#COLUMNINFO = 1, m, Diepte bovenkant laag, 1 +#COLUMNINFO = 2, m, Diepte onderkant laag, 2 +#COLUMNINFO = 3, mm, Zandmediaan, 8 +#COLUMNINFO = 4, mm, Grindmediaan, 9 +#COLUMNINFO = 5, %, Lutum percentage, 3 +#COLUMNINFO = 6, %, Silt percentage, 4 +#COLUMNINFO = 7, %, Zand percentage, 5 +#COLUMNINFO = 8, %, Grind percentage, 6 +#COLUMNINFO = 9, %, Organische stof percentage, 7 +#COLUMNVOID = 1, -9999.99 +#COLUMNVOID = 2, -9999.99 +#COLUMNVOID = 3, -9999.99 +#COLUMNVOID = 4, -9999.99 +#COLUMNVOID = 5, -9999.99 +#COLUMNVOID = 6, -9999.99 +#COLUMNVOID = 7, -9999.99 +#COLUMNVOID = 8, -9999.99 +#COLUMNVOID = 9, -9999.99 +#LASTSCAN = 71 +#REPORTCODE = GEF-BORE-Report,1,0,0 +#MEASUREMENTCODE = Onbekend,-,-,- +#TESTID = B61F3174 +#XYID = 31000,177862,318717 +#ZID = 31000,48.51 +#MEASUREMENTTEXT = 5, 2010-04-26, datum boorbeschrijving +#MEASUREMENTTEXT = 6, -, beschrijver lagen +#MEASUREMENTTEXT = 13, Stölben GmbH Zell/Mosel, boorbedrijf +#MEASUREMENTTEXT = 16, 2010-01-01, datum boring +#MEASUREMENTVAR = 31, 14.00, m, diepte onderkant boortraject +#MEASUREMENTVAR = 32, 350, mm, boorbuisdiameter +#MEASUREMENTTEXT = 31, Pulsboring, boormethode +#MEASUREMENTVAR = 33, 35.00, m, diepte onderkant boortraject +#MEASUREMENTVAR = 34, 100, mm, boorbuisdiameter +#MEASUREMENTTEXT = 32, Kernboring, boormethode +#MEASUREMENTTEXT = 7, Rijksdriehoeksmeting, locaal coördinatensysteem +#MEASUREMENTTEXT = 8, Normaal Amsterdams Peil, locaal referentiesysteem +#MEASUREMENTVAR = 16, 35.00, m, einddiepte +#MEASUREMENTTEXT = 23, -, naam boormeester +#MEASUREMENTTEXT = 1, Avenue2 projectbureau, opdrachtgever +#MEASUREMENTTEXT = 14, Nee, openbaar +#MEASUREMENTTEXT = 2, Tunnelbouw, doel onderzoek +#MEASUREMENTTEXT = 17, Droog sediment, vochtigheidstoestand grond +#MEASUREMENTTEXT = 18, Nee, peilbuis afwezig +#MEASUREMENTVAR = 18, 5.00, m, grondwaterstand direct na boring +#EOH = +0.00;14.21;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'NBE';! +14.21;14.40;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'TWI GE';'VGZA';'KAS';! +14.40;14.50;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'TWI GE';'VGZA';'KAS';! +14.50;15.00;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'TWI GE';'VGZA';'KAS';! +15.00;15.26;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'TGR GE';'VGMZ';'KAS';! +15.26;15.62;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GM';! +15.62;16.00;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'TGR GE';'VGMZ';'KAS';! +16.00;16.34;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GM';! +16.34;16.47;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'TGE WI';'VGZA';'KAS';! +16.47;16.88;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'TGE WI';'VGZA';'KAS';! +16.88;17.00;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'TGE WI';'VGZA';'KAS';! +17.00;19.00;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GM';! +19.00;19.15;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'TBR GR';'VUS';! +19.15;20.00;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GM';! +20.00;20.07;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'TWI GE';'VGZA';'SCH1';'KAS';! +20.07;20.34;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GM';! +20.34;21.00;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'TWI GE';'VGZA';'SCH1';'KAS';'Hemipneustes fossielgruis';! +21.00;21.11;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'TGE WI';'VGMH';'KAS';! +21.11;21.43;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GM';! +21.43;21.67;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'TGE WI';'VGMH';'KAS';! +21.67;21.69;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'SCH2';'KAS';'fossielgruis Hemipneusetes';! +21.69;22.00;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'TGE WI';'VGMH';'KAS';! +22.00;22.28;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GM';! +22.28;22.54;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'TGE GR';'VGZA';'SCH2';'KAS';'Hemipneustes oesters pectinide';! +22.54;23.00;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'TGE GR';'VGMH';'KAS';'met laagje fossielgruis';! +23.00;23.29;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'TRZ GR';'VGZA';'KAS';! +23.29;23.51;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GM';! +23.51;24.08;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'TGE GR';'VGMH';'KAS';! +24.08;24.12;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GM';! +24.12;24.54;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'TGE GR';'VGMH';'KAS';! +24.54;24.64;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'TGE GR';'VGHA';'KAS';! +24.64;24.93;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'TGE GR';'VGMH';'KAS';! +24.93;25.38;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GM';! +25.38;25.43;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'LI TGR WI';'VGMH';'KAS';! +25.43;25.70;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'TGR WI';'VGZA';'KAS';! +25.70;25.80;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'TGR WI';'VGZA';'KAS';! +25.80;26.00;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GM';! +26.00;26.14;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'TWI GE';'VGMH';'KAS';! +26.14;26.42;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'LI TRZ GE';'VGMH';'KAS';! +26.42;27.00;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'TWI GE';'VGMH';'KAS';! +27.00;27.48;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'TGR WI';'VGZA';'KAS';! +27.48;28.60;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GM';! +28.60;28.70;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'TWI GR';'VGMH';'KAS';! +28.70;29.00;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'TWI GR';'VGMH';'KAS';! +29.00;29.12;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'TGR WI';'VGMH';'KAS';! +29.12;29.17;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GM';! +29.17;29.22;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'TWI GR';'VGMH';'KAS';! +29.22;29.25;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'TWI GR';'VGMH';'KAS';! +29.25;29.51;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'TWI GR';'VGMH';'KAS';! +29.51;29.57;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'TWI GR';'VGMH';'KAS';! +29.57;29.73;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'TWI GR';'VGMH';'KAS';! +29.73;29.92;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GM';! +29.92;30.00;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'TWI GR';'VGMH';'KAS';! +30.00;30.10;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'VUS';! +30.10;30.67;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'TGE GR';'VGZA';'KAS';! +30.67;31.29;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GM';! +31.29;31.41;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GR';'VGMH';'SCH2';'KAS';! +31.41;31.77;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GM';! +31.77;31.90;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GR';'VGMH';'KAS';! +31.90;32.00;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GM';! +32.00;33.00;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GR';'VGMH';'SCH2';'KAS';'serpulide oester';! +33.00;33.03;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GM';! +33.03;33.10;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GR';'VGMH';'KAS';! +33.10;33.42;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GM';! +33.42;33.44;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GR';'VGMH';'KAS';! +33.44;33.54;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GR';'VGMH';'KAS';! +33.54;34.32;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GR';'VGMH';'KAS';! +34.32;34.39;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GR';'VGMH';'KAS';! +34.39;34.52;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GR';'VGMH';'KAS';! +34.52;34.64;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GR';'VGMH';'KAS';! +34.64;35.00;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GR';'VGMH';'KAS';! diff --git a/examples/a2-maastricht-gef/gefs/B61F3297.gef b/examples/a2-maastricht-gef/gefs/B61F3297.gef new file mode 100644 index 0000000..02ea326 --- /dev/null +++ b/examples/a2-maastricht-gef/gefs/B61F3297.gef @@ -0,0 +1,118 @@ +#GEFID = 1,1,0 +#COLUMNTEXT = 1, aan +#COLUMNSEPARATOR = ; +#RECORDSEPARATOR = ! +#FILEOWNER = DINO +#COMPANYID = Onbekend +#FILEDATE = 2025,4,30 +#PROJECTID = DINO-BOR +#COLUMN = 9 +#COLUMNINFO = 1, m, Diepte bovenkant laag, 1 +#COLUMNINFO = 2, m, Diepte onderkant laag, 2 +#COLUMNINFO = 3, mm, Zandmediaan, 8 +#COLUMNINFO = 4, mm, Grindmediaan, 9 +#COLUMNINFO = 5, %, Lutum percentage, 3 +#COLUMNINFO = 6, %, Silt percentage, 4 +#COLUMNINFO = 7, %, Zand percentage, 5 +#COLUMNINFO = 8, %, Grind percentage, 6 +#COLUMNINFO = 9, %, Organische stof percentage, 7 +#COLUMNVOID = 1, -9999.99 +#COLUMNVOID = 2, -9999.99 +#COLUMNVOID = 3, -9999.99 +#COLUMNVOID = 4, -9999.99 +#COLUMNVOID = 5, -9999.99 +#COLUMNVOID = 6, -9999.99 +#COLUMNVOID = 7, -9999.99 +#COLUMNVOID = 8, -9999.99 +#COLUMNVOID = 9, -9999.99 +#LASTSCAN = 71 +#REPORTCODE = GEF-BORE-Report,1,0,0 +#MEASUREMENTCODE = Onbekend,-,-,- +#TESTID = B61F3297 +#XYID = 31000,178214,316997 +#ZID = 31000,54.29 +#MEASUREMENTTEXT = 6, -, beschrijver lagen +#MEASUREMENTTEXT = 13, St?lben GmbH Zell/Mosel, boorbedrijf +#MEASUREMENTTEXT = 16, 2010-01-01, datum boring +#MEASUREMENTVAR = 31, 39.00, m, diepte onderkant boortraject +#MEASUREMENTTEXT = 31, Kernboring, boormethode +#MEASUREMENTTEXT = 7, Rijksdriehoeksmeting, locaal coördinatensysteem +#MEASUREMENTTEXT = 8, Normaal Amsterdams Peil, locaal referentiesysteem +#MEASUREMENTVAR = 16, 39.00, m, einddiepte +#MEASUREMENTTEXT = 23, -, naam boormeester +#MEASUREMENTTEXT = 1, Avenue2 projectbureau, opdrachtgever +#MEASUREMENTTEXT = 14, Nee, openbaar +#MEASUREMENTTEXT = 18, Nee, peilbuis afwezig +#MEASUREMENTVAR = 18, 7.00, m, grondwaterstand direct na boring +#EOH = +0.00;0.10;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'NBE';'Graszode';! +0.10;0.30;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'Lz2h1';! +0.30;0.80;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'NBE';! +0.80;1.65;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'Lz2h2';! +1.65;2.45;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'Gz3s2';! +2.45;2.70;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'Lz3g1';! +2.70;3.20;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'Lz3g3';! +3.20;7.75;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'Lz3';'plaatselijk grind';! +7.75;8.10;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'Gz3s3';! +8.10;8.30;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'Gz2s1';! +8.30;8.45;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'Lz2h3';'As plaatselijke keramiekreten';! +8.45;8.75;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'Lkz2';'As';! +8.75;10.00;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'Lz2';'As';! +10.00;10.55;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'Lz2g1';'TGR BR';'LMST';! +10.55;10.65;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'Lz3g3';! +10.65;11.00;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'Gz2s1';'Gedeeltelijk stenen';! +11.00;11.20;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'G';! +11.20;11.60;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'Gz2s1';! +11.60;12.35;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'Gz2s1';'CA2';'Leemlagen op 1195';! +12.35;12.55;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'Zs1';'ZMG';'CA2';! +12.55;12.60;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'Lz2';'TGR BR';'LMST';'CA2';! +12.60;15.00;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'Gz2s1';'CA2';'Gedeeltelijk zwak zandig plaatselijke leemlagen';! +15.00;15.30;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'G';! +15.30;16.00;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'Gz2s1';'CA2';'Gedeeltelijk stenen Plaatselijke leemlagen';! +16.00;17.10;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'Gz1s1';'CA2';! +17.10;18.00;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'Gz2s1';'CA2';! +18.00;18.20;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'CA2';'STN';! +18.20;19.00;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'LI TGR BR';'KAS';'sterk gespleten';! +19.00;19.60;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'LI TGR BR';'KAS';'Verweerd sterk gespleten';! +19.60;19.70;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'LI TGR BR';'KAS';'Verweerd sterk gespleten lagen van grijze vuursteen';! +19.70;20.75;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'LI TGR BR';'KAS';'Verweerd sterk gespleten';! +20.75;20.95;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'LI TGR BR';'KAS';'Verweerd sterk gespleten lagen van grijze vuursteen';! +20.95;21.25;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'LI TGR BR';'KAS';'Verweerd sterk gespleten';! +21.25;21.30;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'LI TGR BR';'KAS';'Verweerd sterk gespleten lagen van grijze vuursteen';! +21.30;21.65;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'LI TGR BR';'KAS';'Verweerd sterk gespleten';! +21.65;21.75;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'LI TGR BR';'KAS';'Verweerd sterk gespleten lagen van grijze vuursteen';! +21.75;21.80;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'LI TGR BR';'KAS';'Verweerd sterk gespleten';! +21.80;22.30;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'LI GR';'KAS';'Verweerd sterk gespleten met harde zones';! +22.30;22.35;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'LI GR';'KAS';'Verweerd sterk gespleten met harde zones lagen van grijze vuursteen';! +22.35;23.35;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'LI GR';'KAS';'Verweerd sterk gespleten met harde zones lagen van grijze vuursteen op 2250m';! +23.35;23.40;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'LI GR';'KAS';'Verweerd sterk gespleten met harde zones lagen van grijze vuursteen';! +23.40;24.65;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'LI GR';'KAS';'Verweerd sterk gespleten met harde zones lagen van grijze vuursteen op 2420m';! +24.65;24.80;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'LI GR';'KAS';'Verweerd sterk gespleten met harde zones lagen van grijze vuursteen';! +24.80;25.55;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'LI GR';'KAS';'Verweerd sterk gespleten met harde zones';! +25.55;25.60;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'LI GR';'KAS';'Verweerd sterk gespleten met harde zones lagen van grijze vuursteen';! +25.60;25.85;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'LI GR';'KAS';'Verweerd sterk gespleten met harde zones lagen van grijze vuursteen op 2575';! +25.85;25.90;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'LI GR';'KAS';'Verweerd sterk gespleten met harde zones lagen van grijze vuursteen';! +25.90;26.30;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'LI GR';'KAS';'Verweerd sterk gespleten met harde zones';! +26.30;26.35;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'LI GR';'KAS';'Verweerd sterk gespleten met harde zones lagen van grijze vuursteen';! +26.35;26.85;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'LI GR';'KAS';'Verweerd sterk gespleten met harde zones';! +26.85;26.90;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'LI GR';'KAS';'Verweerd sterk gespleten met harde zones lagen van grijze vuursteen';! +26.90;27.00;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'LI GR';'KAS';'Verweerd sterk gespleten met harde zones';! +27.00;30.60;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GR';'KAS';'sterk gespleten met plaatselijk lagen van vuursteen gedeeltelijk grijsbruin';! +30.60;30.70;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GR';'KAS';'sterk gespleten gedeeltelijk met groene lagen gedeeltelijk grijsbruin lagen van grijze vuursteen';! +30.70;31.70;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GR';'KAS';'sterk gespleten gedeeltelijk met groene lagen gedeeltelijk grijsbruin';! +31.70;31.95;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GR';'KAS';'sterk gespleten gedeeltelijk met groene lagen gedeeltelijk grijsbruin lagen van grijze vuursteen';! +31.95;32.20;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GR';'KAS';'sterk gespleten gedeeltelijk met groene lagen gedeeltelijk grijsbruin';! +32.20;32.25;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GR';'KAS';'sterk gespleten gedeeltelijk met groene lagen gedeeltelijk grijsbruin lagen van grijze vuursteen';! +32.25;34.55;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GR';'KAS';'sterk gespleten gedeeltelijk met groene lagen gedeeltelijk grijsbruin';! +34.55;35.30;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'LI GR';'KAS';'sterk gespleten';! +35.30;35.35;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'LI GR';'KAS';'sterk gespleten lagen van zwarte vuursteen';! +35.35;35.60;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'LI GR';'KAS';'sterk gespleten';! +35.60;35.75;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'LI GR';'KAS';'sterk gespleten lagen van zwarte vuursteen';! +35.75;35.90;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'LI GR';'KAS';'sterk gespleten';! +35.90;35.95;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'LI GR';'KAS';'sterk gespleten lagen van zwarte vuursteen';! +35.95;36.75;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'LI GR';'KAS';'sterk gespleten';! +36.75;37.00;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'LI GR';'KAS';'sterk gespleten lagen van zwarte vuursteen';! +37.00;38.00;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'LI GR';'KAS';'sterk gespleten lagen van zwarte vuursteen op 3775';! +38.00;38.50;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'LI GR';'KAS';'sterk gespleten lagen van zwarte vuursteen';! +38.50;38.75;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'LI GR';'KAS';'sterk gespleten';! +38.75;39.00;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'LI GR';'KAS';'sterk gespleten lagen van zwarte vuursteen';! diff --git a/examples/a2-maastricht-gef/gefs/B61F3298.gef b/examples/a2-maastricht-gef/gefs/B61F3298.gef new file mode 100644 index 0000000..82ee3de --- /dev/null +++ b/examples/a2-maastricht-gef/gefs/B61F3298.gef @@ -0,0 +1,99 @@ +#GEFID = 1,1,0 +#COLUMNTEXT = 1, aan +#COLUMNSEPARATOR = ; +#RECORDSEPARATOR = ! +#FILEOWNER = DINO +#COMPANYID = Onbekend +#FILEDATE = 2025,4,30 +#PROJECTID = DINO-BOR +#COLUMN = 9 +#COLUMNINFO = 1, m, Diepte bovenkant laag, 1 +#COLUMNINFO = 2, m, Diepte onderkant laag, 2 +#COLUMNINFO = 3, mm, Zandmediaan, 8 +#COLUMNINFO = 4, mm, Grindmediaan, 9 +#COLUMNINFO = 5, %, Lutum percentage, 3 +#COLUMNINFO = 6, %, Silt percentage, 4 +#COLUMNINFO = 7, %, Zand percentage, 5 +#COLUMNINFO = 8, %, Grind percentage, 6 +#COLUMNINFO = 9, %, Organische stof percentage, 7 +#COLUMNVOID = 1, -9999.99 +#COLUMNVOID = 2, -9999.99 +#COLUMNVOID = 3, -9999.99 +#COLUMNVOID = 4, -9999.99 +#COLUMNVOID = 5, -9999.99 +#COLUMNVOID = 6, -9999.99 +#COLUMNVOID = 7, -9999.99 +#COLUMNVOID = 8, -9999.99 +#COLUMNVOID = 9, -9999.99 +#LASTSCAN = 52 +#REPORTCODE = GEF-BORE-Report,1,0,0 +#MEASUREMENTCODE = Onbekend,-,-,- +#TESTID = B61F3298 +#XYID = 31000,178162,317175 +#ZID = 31000,48.24 +#MEASUREMENTTEXT = 6, -, beschrijver lagen +#MEASUREMENTTEXT = 13, St?lben GmbH Zell/Mosel, boorbedrijf +#MEASUREMENTTEXT = 16, 2010-01-01, datum boring +#MEASUREMENTVAR = 31, 30.00, m, diepte onderkant boortraject +#MEASUREMENTTEXT = 31, Kernboring, boormethode +#MEASUREMENTTEXT = 7, Rijksdriehoeksmeting, locaal coördinatensysteem +#MEASUREMENTTEXT = 8, Normaal Amsterdams Peil, locaal referentiesysteem +#MEASUREMENTVAR = 16, 30.00, m, einddiepte +#MEASUREMENTTEXT = 23, -, naam boormeester +#MEASUREMENTTEXT = 1, Avenue2 projectbureau, opdrachtgever +#MEASUREMENTTEXT = 14, Nee, openbaar +#MEASUREMENTTEXT = 18, Nee, peilbuis afwezig +#MEASUREMENTVAR = 18, 5.00, m, grondwaterstand direct na boring +#EOH = +0.00;0.40;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'G';! +0.40;1.00;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'Zs2g3';'CA2';! +1.00;1.40;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'BST';! +1.40;1.90;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'Lz2';'Plaatselijk grind baksteenresten';! +1.90;3.50;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'Lz2';'Gedeeltelijk zwak organisch verkleurd plaatselijk baksteenresten en as';! +3.50;4.00;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'Lz2';'TGR BR';'LSTV';! +4.00;4.80;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'Lz2';'TGR BR';'LMSL';! +4.80;5.60;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'Kz2s2h2';'DO TGR BR';'KSLA';! +5.60;5.90;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'Kh2';'DO BR';'Sterk gebrokkeld plaatselijk kiezelzandlagen';! +5.90;7.00;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'Gz2s1';'Gedeeltelijk stenen gedeeltelijk zwak organisch verkleurd';! +7.00;9.00;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'Gz3s1';'Gedeeltelijk sterk zandig gedeeltelijk stenen';! +9.00;9.75;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'Gz3s1';'CA2';'Gedeeltelijk sterk zandig gedeeltelijk stenen';! +9.75;10.00;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'Gz1s1';'CA2';! +10.00;11.70;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'Gz2s1';'CA2';! +11.70;12.00;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'KAS';'sterk gespleten lagen van grijze vuursteen';! +12.00;12.10;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'KAS';'sterk gespleten';! +12.10;12.70;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'BR';'KAS';'Sterk verweerd sterk gespleten gedeeltelijk lichtbruin';! +12.70;13.20;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'LI BR';'KAS';'Sterk verweerd sterk gespleten gedeeltelijk lichtgrijs';! +13.20;13.25;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'Lz2';'DO BR';'ZFC';! +13.25;13.40;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'LI BR';'KAS';'Sterk verweerd sterk gespleten gedeeltelijk lichtgrijs';! +13.40;14.30;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'LI BR';'KAS';'Sterk verweerd sterk gespleten lagen van grijze vuursteen op 1385m';! +14.30;14.45;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'LI BR';'KAS';'Sterk verweerd sterk gespleten lagen van grijze vuursteen';! +14.45;14.65;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'LI BR';'KAS';'Sterk verweerd sterk gespleten';! +14.65;15.15;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'LI BR';'KAS';'Sterk verweerd sterk gespleten lagen van grijze vuursteen';! +15.15;15.45;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'LI BR';'KAS';'Sterk verweerd sterk gespleten';! +15.45;15.50;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GR';'KAS';'sterk gespleten plaatselijk verweerde zones lagen van grijze vuursteen';! +15.50;16.45;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GR';'KAS';'sterk gespleten plaatselijk verweerde zones lagen van grijze vuursteen op 1580m';! +16.45;16.50;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GR';'KAS';'sterk gespleten plaatselijk verweerde zones lagen van grijze vuursteen';! +16.50;17.45;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GR';'KAS';'sterk gespleten plaatselijk verweerde zones';! +17.45;17.55;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GR';'KAS';'sterk gespleten plaatselijk verweerde zones lagen van grijze vuursteen';! +17.55;17.90;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GR';'KAS';'sterk gespleten plaatselijk verweerde zones lagen van grijze vuursteen op 1765m';! +17.90;17.95;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GR';'KAS';'sterk gespleten plaatselijk verweerde zones lagen van grijze vuursteen';! +17.95;18.40;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GR';'KAS';'sterk gespleten plaatselijk verweerde zones lagen van grijze vuursteen op 1825m';! +18.40;18.45;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GR';'KAS';'sterk gespleten plaatselijk verweerde zones lagen van grijze vuursteen';! +18.45;18.50;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GR';'KAS';'sterk gespleten plaatselijk verweerde zones';! +18.50;18.60;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GR';'KAS';'sterk gespleten plaatselijk verweerde zones lagen van grijze vuursteen';! +18.60;19.55;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GR';'KAS';'sterk gespleten plaatselijk verweerde zones lagen van grijze vuursteen op 1945m';! +19.55;19.60;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GR';'KAS';'sterk gespleten plaatselijk verweerde zones lagen van grijze vuursteen';! +19.60;19.90;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GR';'KAS';'sterk gespleten plaatselijk verweerde zones';! +19.90;20.00;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GR';'KAS';'sterk gespleten plaatselijk verweerde zones lagen van grijze vuursteen';! +20.00;24.55;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GR';'KAS';'sterk gespleten lagen van grijze vuursteen op 2015m 2050m 2395m en 2420m met groene lagen';! +24.55;24.60;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GR';'KAS';'sterk gespleten lagen van grijze vuursteen met groene lagen';! +24.60;25.60;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GR';'KAS';'sterk gespleten lagen van grijze vuursteen op 2470m met groene lagen';! +25.60;25.70;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GR';'KAS';'sterk gespleten lagen van grijze vuursteen met groene lagen';! +25.70;27.80;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GR';'KAS';'sterk gespleten lagen van grijze vuursteen op 2665m en 2720m met groene lagen';! +27.80;28.50;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GR';'KAS';'sterk gespleten lagen van grijze vuursteen met groene lagen';! +28.50;28.55;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'LI GR';'KAS';'sterk gespleten';! +28.55;28.85;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'LI GR';'KAS';'sterk gespleten lagen van grijze vuursteen';! +28.85;29.00;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'LI GR';'KAS';'sterk gespleten';! +29.00;29.20;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'LI GR';'KAS';'sterk gespleten lagen van grijze vuursteen';! +29.20;29.50;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'LI GR';'KAS';'sterk gespleten lagen van grijze vuursteen op 2925';! +29.50;30.00;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'KAS';'Resten van vuur- en kalksteen';! diff --git a/examples/a2-maastricht-gef/gefs/B61F3299.gef b/examples/a2-maastricht-gef/gefs/B61F3299.gef new file mode 100644 index 0000000..7ae3259 --- /dev/null +++ b/examples/a2-maastricht-gef/gefs/B61F3299.gef @@ -0,0 +1,88 @@ +#GEFID = 1,1,0 +#COLUMNTEXT = 1, aan +#COLUMNSEPARATOR = ; +#RECORDSEPARATOR = ! +#FILEOWNER = DINO +#COMPANYID = Onbekend +#FILEDATE = 2025,4,30 +#PROJECTID = DINO-BOR +#COLUMN = 9 +#COLUMNINFO = 1, m, Diepte bovenkant laag, 1 +#COLUMNINFO = 2, m, Diepte onderkant laag, 2 +#COLUMNINFO = 3, mm, Zandmediaan, 8 +#COLUMNINFO = 4, mm, Grindmediaan, 9 +#COLUMNINFO = 5, %, Lutum percentage, 3 +#COLUMNINFO = 6, %, Silt percentage, 4 +#COLUMNINFO = 7, %, Zand percentage, 5 +#COLUMNINFO = 8, %, Grind percentage, 6 +#COLUMNINFO = 9, %, Organische stof percentage, 7 +#COLUMNVOID = 1, -9999.99 +#COLUMNVOID = 2, -9999.99 +#COLUMNVOID = 3, -9999.99 +#COLUMNVOID = 4, -9999.99 +#COLUMNVOID = 5, -9999.99 +#COLUMNVOID = 6, -9999.99 +#COLUMNVOID = 7, -9999.99 +#COLUMNVOID = 8, -9999.99 +#COLUMNVOID = 9, -9999.99 +#LASTSCAN = 41 +#REPORTCODE = GEF-BORE-Report,1,0,0 +#MEASUREMENTCODE = Onbekend,-,-,- +#TESTID = B61F3299 +#XYID = 31000,177969,317412 +#ZID = 31000,48.49 +#MEASUREMENTTEXT = 6, -, beschrijver lagen +#MEASUREMENTTEXT = 13, Stlben GmbH Zell/Mosel, boorbedrijf +#MEASUREMENTTEXT = 16, 2010-01-01, datum boring +#MEASUREMENTVAR = 31, 28.40, m, diepte onderkant boortraject +#MEASUREMENTTEXT = 31, Kernboring, boormethode +#MEASUREMENTTEXT = 7, Rijksdriehoeksmeting, locaal coördinatensysteem +#MEASUREMENTTEXT = 8, Normaal Amsterdams Peil, locaal referentiesysteem +#MEASUREMENTVAR = 16, 28.40, m, einddiepte +#MEASUREMENTTEXT = 23, -, naam boormeester +#MEASUREMENTTEXT = 1, Avenue2 projectbureau, opdrachtgever +#MEASUREMENTTEXT = 14, Nee, openbaar +#MEASUREMENTTEXT = 18, Nee, peilbuis afwezig +#MEASUREMENTVAR = 18, 4.00, m, grondwaterstand direct na boring +#EOH = +0.00;0.50;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'Lz2h2';! +0.50;1.90;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'Lz2';'Plaatselijk wortelresten';! +1.90;2.20;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'Lz2h2';'As- en baksteenresten';! +2.20;3.00;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'Lz2';'TGR BR';'LMST';! +3.00;3.50;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'Lz3';'TGR BR';'LMST';! +3.50;3.60;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'Lz2';'TGR BR';! +3.60;3.85;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'Lz3';'TGR BR';! +3.85;4.00;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'Gz3s1';! +4.00;5.50;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'Gz2s1';! +5.50;8.00;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'Gz2s1';'CA2';'Gedeeltelijk sterk zandig';! +8.00;12.20;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'Gz2s1';'CA2';'Gedeeltelijk stenen';! +12.20;13.00;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'LI TGR BR';'KAS';'Sterk gespleten plaatselijk lagen van vuursteen';! +13.00;13.45;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'LI TGR BR';'KAS';'Verweerd sterk gespleten lagen van vuursteen op 1320m';! +13.45;15.85;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'LI GR';'KAS';'Sterk gespleten plaatselijk verweerde zones lagen van grijze vuursteen op 1415m 1440m en 1555m';! +15.85;16.20;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'LI GR';'KAS';'Sterk gespleten plaatselijk verweerde zones lagen van grijze vuursteen';! +16.20;17.70;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'LI GR';'KAS';'Sterk gespleten plaatselijk verweerde zones lagen van grijze vuursteen op 1645m en 1670m';! +17.70;17.75;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'LI GR';'KAS';'Sterk gespleten plaatselijk verweerde zones lagen van grijze vuursteen';! +17.75;18.80;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'LI GR';'KAS';'Sterk gespleten plaatselijk verweerde zones lagen van grijze vuursteen op 1820m';! +18.80;18.85;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'LI GR';'KAS';'Sterk gespleten plaatselijk verweerde zones lagen van grijze vuursteen';! +18.85;19.25;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'LI GR';'KAS';'Sterk gespleten plaatselijk verweerde zones';! +19.25;19.30;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'LI GR';'KAS';'Sterk gespleten plaatselijk verweerde zones lagen van grijze vuursteen';! +19.30;19.45;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'LI GR';'KAS';'Sterk gespleten plaatselijk verweerde zones';! +19.45;19.50;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'LI GR';'KAS';'Sterk gespleten plaatselijk verweerde zones lagen van grijze vuursteen';! +19.50;19.75;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'LI GR';'KAS';'Sterk gespleten plaatselijk verweerde zones';! +19.75;19.95;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'LI GR';'KAS';'Sterk gespleten plaatselijk verweerde zones lagen van grijze vuursteen';! +19.95;20.00;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'LI GR';'KAS';'Sterk gespleten plaatselijk verweerde zones';! +20.00;20.45;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GR';'KAS';'Sterk gespleten plaatselijk verweerde zones lagen van grijze vuursteen op 2030m';! +20.45;20.50;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GR';'KAS';'Sterk gespleten plaatselijk verweerde zones lagen van grijze vuursteen';! +20.50;22.20;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GR';'KAS';'Sterk gespleten plaatselijk verweerde zones lagen van grijze vuursteen op 2135m en 2160m';! +22.20;22.25;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GR';'KAS';'Sterk gespleten plaatselijk verweerde zones lagen van grijze vuursteen';! +22.25;23.50;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GR';'KAS';'Sterk gespleten plaatselijk verweerde zones lagen van grijze vuursteen op 2255m en 2270m';! +23.50;23.70;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GR';'KAS';'Sterk gespleten plaatselijk verweerde zones lagen van grijze vuursteen';! +23.70;24.10;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GR';'KAS';'Sterk gespleten plaatselijk verweerde zones';! +24.10;24.20;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GR';'KAS';'Sterk gespleten plaatselijk verweerde zones lagen van grijze vuursteen';! +24.20;24.65;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GR';'KAS';'Sterk gespleten plaatselijk verweerde zones';! +24.65;24.80;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GR';'KAS';'Sterk gespleten plaatselijk verweerde zones lagen van grijze vuursteen';! +24.80;26.15;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GR';'KAS';'Sterk gespleten plaatselijk verweerde zones lagen van grijze vuursteen op 2575m';! +26.15;26.30;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GR';'KAS';'Sterk gespleten plaatselijk verweerde zones lagen van grijze vuursteen';! +26.30;27.50;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GR';'KAS';'Sterk gespleten plaatselijk verweerde zones lagen van grijze vuursteen op 2665m';! +27.50;28.00;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GR';'KAS';'Sterk gespleten plaatselijk verweerde zones lagen van grijze vuursteen groene laag';! +28.00;28.40;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'LI GR';'KAS';'sterk gespleten';! diff --git a/examples/a2-maastricht-gef/gefs/B61F3300.gef b/examples/a2-maastricht-gef/gefs/B61F3300.gef new file mode 100644 index 0000000..d285eb3 --- /dev/null +++ b/examples/a2-maastricht-gef/gefs/B61F3300.gef @@ -0,0 +1,108 @@ +#GEFID = 1,1,0 +#COLUMNTEXT = 1, aan +#COLUMNSEPARATOR = ; +#RECORDSEPARATOR = ! +#FILEOWNER = DINO +#COMPANYID = Onbekend +#FILEDATE = 2025,4,30 +#PROJECTID = DINO-BOR +#COLUMN = 9 +#COLUMNINFO = 1, m, Diepte bovenkant laag, 1 +#COLUMNINFO = 2, m, Diepte onderkant laag, 2 +#COLUMNINFO = 3, mm, Zandmediaan, 8 +#COLUMNINFO = 4, mm, Grindmediaan, 9 +#COLUMNINFO = 5, %, Lutum percentage, 3 +#COLUMNINFO = 6, %, Silt percentage, 4 +#COLUMNINFO = 7, %, Zand percentage, 5 +#COLUMNINFO = 8, %, Grind percentage, 6 +#COLUMNINFO = 9, %, Organische stof percentage, 7 +#COLUMNVOID = 1, -9999.99 +#COLUMNVOID = 2, -9999.99 +#COLUMNVOID = 3, -9999.99 +#COLUMNVOID = 4, -9999.99 +#COLUMNVOID = 5, -9999.99 +#COLUMNVOID = 6, -9999.99 +#COLUMNVOID = 7, -9999.99 +#COLUMNVOID = 8, -9999.99 +#COLUMNVOID = 9, -9999.99 +#LASTSCAN = 62 +#REPORTCODE = GEF-BORE-Report,1,0,0 +#MEASUREMENTCODE = Onbekend,-,-,- +#TESTID = B61F3300 +#XYID = 31000,177904,317545 +#ZID = 31000,48.08 +#MEASUREMENTTEXT = 6, -, beschrijver lagen +#MEASUREMENTTEXT = 13, Stlben GmbH Zell/Mosel, boorbedrijf +#MEASUREMENTTEXT = 16, 2010-01-01, datum boring +#MEASUREMENTVAR = 31, 30.00, m, diepte onderkant boortraject +#MEASUREMENTTEXT = 31, Kernboring, boormethode +#MEASUREMENTTEXT = 7, Rijksdriehoeksmeting, locaal coördinatensysteem +#MEASUREMENTTEXT = 8, Normaal Amsterdams Peil, locaal referentiesysteem +#MEASUREMENTVAR = 16, 30.00, m, einddiepte +#MEASUREMENTTEXT = 23, -, naam boormeester +#MEASUREMENTTEXT = 1, Avenue2 projectbureau, opdrachtgever +#MEASUREMENTTEXT = 14, Nee, openbaar +#MEASUREMENTTEXT = 18, Nee, peilbuis afwezig +#EOH = +0.00;0.10;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'NBE';'Graszode';! +0.10;0.50;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'Lz2g2h2';'Baksteenresten';! +0.50;1.00;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'Lz2g2';'Plaatselijk grind';! +1.00;1.90;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'Lz2';'ZFC';'Plaatselijk wortelresten';! +1.90;2.80;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'Lz2';'As plaatselijk baksteenresten';! +2.80;3.00;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'Lz3';'TGR BR';'LMSL';! +3.00;3.30;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'Lz3';'TGR BR';'LMSL';! +3.30;3.80;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'Zs3g2';'ZMF';'Plaatselijk grind';! +3.80;4.00;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'Gz2s1';! +4.00;4.20;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'Gz4s2';! +4.20;4.80;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'Gz2s1';! +4.80;5.00;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'G';! +5.00;5.50;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'Gz2s1';! +5.50;5.55;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'Zs3';'ZMF';'CA2';! +5.55;5.90;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'Zs1g1';'ZMG';'CA2';! +5.90;6.00;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'Gz3s1';'CA2';! +6.00;6.40;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'Zs1g1';'ZMG';'CA2';! +6.40;6.75;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'Gz3s1';'CA2';'Gedeeltelijk stenen';! +6.75;8.20;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'Gz2s1';'CA2';'Gedeeltelijk stenen';! +8.20;9.00;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'Gz2s1';'CA2';! +9.00;9.10;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'Zs1g1';'ZMG';'CA2';! +9.10;10.00;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'Gz2s1';'CA2';! +10.00;10.15;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'Zs1g2';'CA2';'Plaatselijk grind';! +10.15;10.50;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'Gz2s1';'CA2';! +10.50;10.70;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'Gz2s1';'CA2';! +10.70;10.80;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'BR';'KAS';'sterk gespleten bruin verkleurd';! +10.80;10.90;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'LI TGR BR';'KAS';'sterk gespleten lagen van grijze vuursteen';! +10.90;11.30;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'LI TGR BR';'KAS';'sterk gespleten lagen van grijze vuursteen op 1110m';! +11.30;11.35;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'LI TGR BR';'KAS';'sterk gespleten lagen van grijze vuursteen';! +11.35;12.00;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'LI TGR BR';'KAS';'sterk gespleten';! +12.00;12.20;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'KAS';! +12.20;12.50;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'LI TGR BR';'KAS';'Verweerd sterk gespleten lagen van grijze vuursteen op 1220m';! +12.50;12.60;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'LI TGR BR';'KAS';'Verweerd sterk gespleten lagen van grijze vuursteen';! +12.60;12.80;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'LI GR';'KAS';'Verweerd sterk gespleten';! +12.80;12.90;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'LI GR';'KAS';'Verweerd sterk gespleten lagen van grijze vuursteen';! +12.90;13.50;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'LI GR';'KAS';'Verweerd sterk gespleten lagen van grijze vuursteen op 1330m';! +13.50;13.60;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'LI GR';'KAS';'Verweerd sterk gespleten lagen van grijze vuursteen';! +13.60;14.00;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'LI GR';'KAS';'Verweerd sterk gespleten';! +14.00;14.20;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'LI GR';'KAS';'Verweerd sterk gespleten lagen van grijze vuursteen';! +14.20;15.15;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'LI GR';'KAS';'Verweerd sterk gespleten lagen van grijze vuursteen op 1440m en 1470m';! +15.15;15.20;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'LI GR';'KAS';'Verweerd sterk gespleten lagen van grijze vuursteen';! +15.20;16.20;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'LI GR';'KAS';'Verweerd sterk gespleten lagen van grijze vuursteen op 1530m en 1595 m';! +16.20;17.10;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'KAS';'Plaatselijk verweerde zones sterk gespleten';! +17.10;17.15;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'KAS';'Plaatselijk verweerde zones sterk gespleten lagen van grijze vuursteen';! +17.15;17.60;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'KAS';'Plaatselijk verweerde zones sterk gespleten lagen van grijze vuursteen op 1735m';! +17.60;17.70;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'KAS';'Plaatselijk verweerde zones sterk gespleten lagen van grijze vuursteen';! +17.70;18.75;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'KAS';'Plaatselijk verweerde zones sterk gespleten lagen van grijze vuursteen op 1820m en 1845m';! +18.75;18.90;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'KAS';'Plaatselijk verweerde zones sterk gespleten lagen van grijze vuursteen';! +18.90;19.85;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'KAS';'Plaatselijk verweerde zones sterk gespleten';! +19.85;19.90;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'KAS';'Plaatselijk verweerde zones sterk gespleten lagen van grijze vuursteen';! +19.90;20.00;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'KAS';'Plaatselijk verweerde zones sterk gespleten';! +20.00;26.35;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GR';'KAS';'Sterk gespleten plaatselijk lagen van grijze vuursteen op 2090m 2225m en 2430m';! +26.35;26.40;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GR';'KAS';'Sterk gespleten plaatselijk lagen van grijze vuursteen';! +26.40;27.50;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GR';'KAS';'Sterk gespleten plaatselijk lagen van grijze vuursteen op 2665m';! +27.50;28.00;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GR';'KAS';'Sterk gespleten groene lagen';! +28.00;28.50;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'LI GR';'KAS';'sterk gespleten plaatselijk lagen van grijze vuursteen';! +28.50;29.00;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'KAS';! +29.00;29.35;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'KAS';'sterk gespleten';! +29.35;29.70;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'KAS';'sterk gespleten lagen van grijze vuursteen';! +29.70;29.85;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'KAS';'sterk gespleten';! +29.85;29.95;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'KAS';'sterk gespleten lagen van grijze vuursteen';! +29.95;30.00;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'KAS';'sterk gespleten';! diff --git a/examples/a2-maastricht-gef/gefs/B61F3303.gef b/examples/a2-maastricht-gef/gefs/B61F3303.gef new file mode 100644 index 0000000..5140557 --- /dev/null +++ b/examples/a2-maastricht-gef/gefs/B61F3303.gef @@ -0,0 +1,91 @@ +#GEFID = 1,1,0 +#COLUMNTEXT = 1, aan +#COLUMNSEPARATOR = ; +#RECORDSEPARATOR = ! +#FILEOWNER = DINO +#COMPANYID = Onbekend +#FILEDATE = 2025,4,30 +#PROJECTID = DINO-BOR +#COLUMN = 9 +#COLUMNINFO = 1, m, Diepte bovenkant laag, 1 +#COLUMNINFO = 2, m, Diepte onderkant laag, 2 +#COLUMNINFO = 3, mm, Zandmediaan, 8 +#COLUMNINFO = 4, mm, Grindmediaan, 9 +#COLUMNINFO = 5, %, Lutum percentage, 3 +#COLUMNINFO = 6, %, Silt percentage, 4 +#COLUMNINFO = 7, %, Zand percentage, 5 +#COLUMNINFO = 8, %, Grind percentage, 6 +#COLUMNINFO = 9, %, Organische stof percentage, 7 +#COLUMNVOID = 1, -9999.99 +#COLUMNVOID = 2, -9999.99 +#COLUMNVOID = 3, -9999.99 +#COLUMNVOID = 4, -9999.99 +#COLUMNVOID = 5, -9999.99 +#COLUMNVOID = 6, -9999.99 +#COLUMNVOID = 7, -9999.99 +#COLUMNVOID = 8, -9999.99 +#COLUMNVOID = 9, -9999.99 +#LASTSCAN = 44 +#REPORTCODE = GEF-BORE-Report,1,0,0 +#MEASUREMENTCODE = Onbekend,-,-,- +#TESTID = B61F3303 +#XYID = 31000,177795,318303 +#ZID = 31000,47.29 +#MEASUREMENTTEXT = 6, -, beschrijver lagen +#MEASUREMENTTEXT = 13, Stlben GmbH Zell/Mosel, boorbedrijf +#MEASUREMENTTEXT = 16, 2010-01-01, datum boring +#MEASUREMENTVAR = 31, 35.50, m, diepte onderkant boortraject +#MEASUREMENTTEXT = 31, Kernboring, boormethode +#MEASUREMENTTEXT = 7, Rijksdriehoeksmeting, locaal coördinatensysteem +#MEASUREMENTTEXT = 8, Normaal Amsterdams Peil, locaal referentiesysteem +#MEASUREMENTVAR = 16, 35.50, m, einddiepte +#MEASUREMENTTEXT = 23, -, naam boormeester +#MEASUREMENTTEXT = 1, Avenue2 projectbureau, opdrachtgever +#MEASUREMENTTEXT = 14, Nee, openbaar +#MEASUREMENTTEXT = 18, Nee, peilbuis afwezig +#MEASUREMENTVAR = 18, 4.00, m, grondwaterstand direct na boring +#EOH = +0.00;0.30;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'Zs1g2';'ZMG';'ZSTV';'Plaatselijk wortelresten gedeeltelijk steviger';! +0.30;2.30;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'Lz2g2';'Plaatselijk grind plaatselijk baksteen- en asresten';! +2.30;2.75;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'Lz2';'TGR BR';'LSTV';! +2.75;3.40;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'Lz2';'TGR BR';'LMSL';! +3.40;3.80;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'Lz2';'GR';'LMSL';! +3.80;4.10;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'Lz2g1h3';'DO GR';'LSLA';'CA2';! +4.10;4.80;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'Gz2s1';'SCH2';'Zwak organisch verkleurd';! +4.80;5.60;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'Gz2s1';'CA2';! +5.60;6.65;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'Gz1s1';'CA2';'Gedeeltelijk stenen';! +6.65;6.90;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'Gz2s1';'CA2';! +6.90;8.00;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'Gz2s1';'CA2';'Gedeeltelijkzwak zandig gedeeltelijk stenen';! +8.00;8.60;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'Gz2s1';'CA2';! +8.60;9.65;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'Gz1s1';'CA2';! +9.65;10.00;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'Gz2s1';'CA2';! +10.00;10.40;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'Gz1s1';'CA2';! +10.40;11.00;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'Gz2s1';'CA2';'Gedeeltelijk stenen';! +11.00;11.30;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'Gz2s1';'CA2';'Gedeeltelijk stenen';! +11.30;11.65;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'Gz1s1';'CA2';! +11.65;14.40;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'LI BR';'KAS';'Volledig verweerd sterk gespleten met grindzones met plaatselijk harde zones';! +14.40;19.65;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'LI BR';'KAS';'Verweerd sterk gespleten';! +19.65;20.55;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'LI BR';'KAS';'Matig verweerd sterk gespleten lagen van grijze vuursteen';! +20.55;21.85;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'LI BR';'KAS';'Verweerd sterk gespleten lagen van grijze vuursteen op 2075m en 2125m';! +21.85;21.90;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'LI BR';'KAS';'Verweerd sterk gespleten lagen van grijze vuursteen';! +21.90;23.00;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'LI BR';'KAS';'Verweerd sterk gespleten';! +23.00;23.40;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'LI BR';'KAS';'sterk gespleten lagen van grijze vuursteen';! +23.40;24.00;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'KAS';! +24.00;24.30;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GR';'VUS';! +24.30;25.00;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'KAS';! +25.00;25.35;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'LI BR';'KAS';'Verweerd sterk gespleten';! +25.35;25.40;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'LI BR';'KAS';'Verweerd sterk gespleten lagen van grijze vuursteen';! +25.40;27.00;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'LI BR';'KAS';'Verweerd sterk gespleten';! +27.00;27.55;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'LI BR';'KAS';'Verweerd sterk gespleten lagen van grijze vuursteen op 2710m';! +27.55;27.70;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'LI BR';'KAS';'Verweerd sterk gespleten lagen van grijze vuursteen';! +27.70;28.70;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'LI BR';'KAS';'Verweerd sterk gespleten';! +28.70;28.80;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'LI BR';'KAS';'Verweerd sterk gespleten lagen van grijze vuursteen';! +28.80;29.20;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'LI BR';'KAS';'Verweerd sterk gespleten';! +29.20;29.30;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'LI BR';'KAS';'Verweerd sterk gespleten lagen van grijze vuursteen';! +29.30;29.60;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'LI BR';'KAS';'Verweerd sterk gespleten';! +29.60;29.70;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'LI BR';'KAS';'Verweerd sterk gespleten lagen van grijze vuursteen';! +29.70;30.40;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'LI BR';'KAS';'Verweerd sterk gespleten';! +30.40;30.50;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'LI BR';'KAS';'Verweerd sterk gespleten lagen van grijze vuursteen';! +30.50;30.80;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'LI BR';'KAS';'Verweerd sterk gespleten';! +30.80;30.90;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'LI BR';'KAS';'Verweerd sterk gespleten lagen van grijze vuursteen';! +30.90;35.50;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GR';'KAS';'sterk gespleten';! diff --git a/examples/a2-maastricht-gef/gefs/B61F3304.gef b/examples/a2-maastricht-gef/gefs/B61F3304.gef new file mode 100644 index 0000000..b71ee5f --- /dev/null +++ b/examples/a2-maastricht-gef/gefs/B61F3304.gef @@ -0,0 +1,87 @@ +#GEFID = 1,1,0 +#COLUMNTEXT = 1, aan +#COLUMNSEPARATOR = ; +#RECORDSEPARATOR = ! +#FILEOWNER = DINO +#COMPANYID = Onbekend +#FILEDATE = 2025,4,30 +#PROJECTID = DINO-BOR +#COLUMN = 9 +#COLUMNINFO = 1, m, Diepte bovenkant laag, 1 +#COLUMNINFO = 2, m, Diepte onderkant laag, 2 +#COLUMNINFO = 3, mm, Zandmediaan, 8 +#COLUMNINFO = 4, mm, Grindmediaan, 9 +#COLUMNINFO = 5, %, Lutum percentage, 3 +#COLUMNINFO = 6, %, Silt percentage, 4 +#COLUMNINFO = 7, %, Zand percentage, 5 +#COLUMNINFO = 8, %, Grind percentage, 6 +#COLUMNINFO = 9, %, Organische stof percentage, 7 +#COLUMNVOID = 1, -9999.99 +#COLUMNVOID = 2, -9999.99 +#COLUMNVOID = 3, -9999.99 +#COLUMNVOID = 4, -9999.99 +#COLUMNVOID = 5, -9999.99 +#COLUMNVOID = 6, -9999.99 +#COLUMNVOID = 7, -9999.99 +#COLUMNVOID = 8, -9999.99 +#COLUMNVOID = 9, -9999.99 +#LASTSCAN = 41 +#REPORTCODE = GEF-BORE-Report,1,0,0 +#MEASUREMENTCODE = Onbekend,-,-,- +#TESTID = B61F3304 +#XYID = 31000,177762,318516 +#ZID = 31000,47.93 +#MEASUREMENTTEXT = 6, -, beschrijver lagen +#MEASUREMENTTEXT = 13, Stlben GmbH Zell/Mosel, boorbedrijf +#MEASUREMENTTEXT = 16, 2010-01-01, datum boring +#MEASUREMENTVAR = 31, 35.00, m, diepte onderkant boortraject +#MEASUREMENTTEXT = 31, Kernboring, boormethode +#MEASUREMENTTEXT = 7, Rijksdriehoeksmeting, locaal coördinatensysteem +#MEASUREMENTTEXT = 8, Normaal Amsterdams Peil, locaal referentiesysteem +#MEASUREMENTVAR = 16, 35.00, m, einddiepte +#MEASUREMENTTEXT = 23, -, naam boormeester +#MEASUREMENTTEXT = 1, Avenue2 projectbureau, opdrachtgever +#MEASUREMENTTEXT = 14, Nee, openbaar +#MEASUREMENTTEXT = 18, Nee, peilbuis afwezig +#EOH = +0.00;0.05;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'NBE';'Straatstenen';! +0.05;0.40;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'Zs1g2';! +0.40;1.50;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'Gz3s1';! +1.50;3.10;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'Lz2g2';'Plaatselijk grind baksteen- en asresten';! +3.10;4.10;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'Lz2';'TGR BR';'LSTV';! +4.10;4.75;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'Lz3';'GR';'LSLA';! +4.75;5.20;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'Zs1g2';'ZMC';'Met grindzones';! +5.20;5.70;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'Gz2s1';'Gedeeltelijk zwak organisch verkleurd';! +5.70;8.00;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'Gz2s1';'CA2';'Gedeeltelijk zwak organisch verkleurd';! +8.00;10.00;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'Gz2s1';'CA2';'Gedeeltelijk stenen';! +10.00;12.45;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'Gz2s1';'CA2';'Gedeeltelijk stenen';! +12.45;13.00;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'Gz2s1';'CA2';! +13.00;13.40;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'Gz3s2';'CA2';'Volledig verweerd sterk gespleten';! +13.40;14.00;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'LI BR';'KAS';'Volledig verweerd sterk gespleten lagen van grijze vuursteen';! +14.00;15.00;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'LI BR';'KAS';'Volledig verweerd sterk gespleten met vaste zones';! +15.00;19.80;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'LI BR';'KAS';'Verweerd sterk gespleten met zandzones lagen van grijze vuursteen op 1960m';! +19.80;20.40;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'KAS';! +20.40;22.60;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'LI BR';'KAS';'Verweerd sterk gespleten';! +22.60;22.70;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'LI BR';'KAS';'Verweerd sterk gespleten lagen van grijze vuursteen';! +22.70;24.70;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'LI BR';'KAS';'Verweerd sterk gespleten lagen van grijze vuursteen op 2380m';! +24.70;24.75;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'LI BR';'KAS';'Verweerd sterk gespleten lagen van grijze vuursteen';! +24.75;25.15;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'LI BR';'KAS';'Verweerd sterk gespleten lagen van grijze vuursteen op 2490m';! +25.15;25.25;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'LI BR';'KAS';'Verweerd sterk gespleten lagen van grijze vuursteen';! +25.25;26.00;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'LI BR';'KAS';'Verweerd sterk gespleten';! +26.00;26.10;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'LI BR';'KAS';'Verweerd sterk gespleten lagen van grijze vuursteen';! +26.10;26.65;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'LI BR';'KAS';'Verweerd sterk gespleten lagen van grijze vuursteen op 2620';! +26.65;26.70;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'LI BR';'KAS';'Verweerd sterk gespleten lagen van grijze vuursteen';! +26.70;28.00;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'LI BR';'KAS';'Verweerd sterk gespleten';! +28.00;30.00;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GR';'KAS';'Verweerd sterk gespleten lagen van grijze vuursteen op 2915m en 2970m';! +30.00;30.50;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GR';'KAS';'Plaatselijk verweerde zones sterk gespleten lagen van grijze vuursteen op 3015m';! +30.50;30.55;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GR';'KAS';'Plaatselijk verweerde zones sterk gespleten lagen van grijze vuursteen';! +30.55;30.75;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GR';'KAS';'Plaatselijk verweerde zones sterk gespleten';! +30.75;31.55;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GR';'KAS';'Plaatselijk verweerde zones sterk gespleten lagen van grijze vuursteen op 3110m';! +31.55;31.65;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GR';'KAS';'Plaatselijk verweerde zones sterk gespleten lagen van grijze vuursteen';! +31.65;32.30;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GR';'KAS';'Plaatselijk verweerde zones sterk gespleten';! +32.30;32.45;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GR';'KAS';'Plaatselijk verweerde zones sterk gespleten lagen van grijze vuursteen';! +32.45;32.85;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GR';'KAS';'Plaatselijk verweerde zones sterk gespleten';! +32.85;33.10;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GR';'KAS';'Plaatselijk verweerde zones sterk gespleten lagen van grijze vuursteen';! +33.10;34.40;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GR';'KAS';'Plaatselijk verweerde zones sterk gespleten lagen van grijze vuursteen';! +34.40;34.85;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GR';'KAS';'Plaatselijk verweerde zones sterk gespleten';! +34.85;35.00;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GR';'KAS';'Plaatselijk verweerde zones sterk gespleten lagen van grijze vuursteen op 3480m';! diff --git a/examples/a2-maastricht-gef/gefs/B61F3315.gef b/examples/a2-maastricht-gef/gefs/B61F3315.gef new file mode 100644 index 0000000..deef849 --- /dev/null +++ b/examples/a2-maastricht-gef/gefs/B61F3315.gef @@ -0,0 +1,93 @@ +#GEFID = 1,1,0 +#COLUMNTEXT = 1, aan +#COLUMNSEPARATOR = ; +#RECORDSEPARATOR = ! +#FILEOWNER = DINO +#COMPANYID = Onbekend +#FILEDATE = 2025,4,30 +#PROJECTID = DINO-BOR +#COLUMN = 9 +#COLUMNINFO = 1, m, Diepte bovenkant laag, 1 +#COLUMNINFO = 2, m, Diepte onderkant laag, 2 +#COLUMNINFO = 3, mm, Zandmediaan, 8 +#COLUMNINFO = 4, mm, Grindmediaan, 9 +#COLUMNINFO = 5, %, Lutum percentage, 3 +#COLUMNINFO = 6, %, Silt percentage, 4 +#COLUMNINFO = 7, %, Zand percentage, 5 +#COLUMNINFO = 8, %, Grind percentage, 6 +#COLUMNINFO = 9, %, Organische stof percentage, 7 +#COLUMNVOID = 1, -9999.99 +#COLUMNVOID = 2, -9999.99 +#COLUMNVOID = 3, -9999.99 +#COLUMNVOID = 4, -9999.99 +#COLUMNVOID = 5, -9999.99 +#COLUMNVOID = 6, -9999.99 +#COLUMNVOID = 7, -9999.99 +#COLUMNVOID = 8, -9999.99 +#COLUMNVOID = 9, -9999.99 +#LASTSCAN = 45 +#REPORTCODE = GEF-BORE-Report,1,0,0 +#MEASUREMENTCODE = Onbekend,-,-,- +#TESTID = B61F3315 +#XYID = 31000,178223,316933 +#ZID = 31000,52.81 +#MEASUREMENTTEXT = 6, -, beschrijver lagen +#MEASUREMENTTEXT = 13, Stölben GmbH Zell/Mosel", boorbedrijf +#MEASUREMENTTEXT = 16, 2010-04-16, datum boring +#MEASUREMENTVAR = 31, 37.20, m, diepte onderkant boortraject +#MEASUREMENTVAR = 32, 100, mm, boorbuisdiameter +#MEASUREMENTTEXT = 31, Kernboring, boormethode +#MEASUREMENTTEXT = 7, Rijksdriehoeksmeting, locaal coördinatensysteem +#MEASUREMENTTEXT = 8, Normaal Amsterdams Peil, locaal referentiesysteem +#MEASUREMENTVAR = 16, 37.20, m, einddiepte +#MEASUREMENTTEXT = 23, -, naam boormeester +#MEASUREMENTTEXT = 1, Avenue2 projectbureau, opdrachtgever +#MEASUREMENTTEXT = 14, Nee, openbaar +#MEASUREMENTTEXT = 18, Nee, peilbuis afwezig +#MEASUREMENTVAR = 18, 8.00, m, grondwaterstand direct na boring +#EOH = +0.00;0.05;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'NBE';'Graszode';! +0.05;0.25;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'Lzg1';'plaatselijk grind';! +0.25;0.50;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'Lzg1';'Plaatselijk grind';! +0.50;3.20;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'Lzg1';'Plaatselijk grind';! +3.20;6.50;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'Lz3g1';'plaatselijk grind';! +6.50;6.60;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'Gz2s';! +6.60;6.70;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'AF';'As bouwpuin en baksteenresten';! +6.70;7.75;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'Lg1';'TGR BR';'Plaatselijk grind weinig "o" verkleurd';! +7.75;7.85;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'Lz1g3';'TGR BR';! +7.85;8.40;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'Gz2s';! +8.40;9.00;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'Gz2s';! +9.00;9.20;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'Lz1g3';'TGR BR';! +9.20;10.00;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'Gz2s';! +10.00;10.80;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'Gz2s';'CA2';! +10.80;11.50;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'Gz1';'CA2';! +11.50;11.90;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'Gz2';'CA2';! +11.90;12.20;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'Gz1';'CA2';! +12.20;13.00;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'Gz2';'CA2';! +13.00;13.20;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'Gz1';'CA2';! +13.20;13.80;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'Gz2';'CA2';! +13.80;15.40;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'Gz2';'CA2';! +15.40;17.00;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'Gz2s';'CA2';! +17.00;17.20;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'Gz2s';'CA2';! +17.20;18.00;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'KAS';'sterk gespleten';! +18.00;21.60;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'LI TGR BR';'KAS';'sterk gespleten met harde zones en plaatselijk vuursteen';! +21.60;28.60;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'LI GR';'KAS';'sterk gespleten met harde zones en plaatselijk vuursteen gedeeltelijk grijsbruin';! +28.60;29.15;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GR';'VGHA';'KAS';'sterk gespleten';! +29.15;29.84;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GR';'KAS';'sterk gespleten met harde zones verweerd gedeeltelijk grijsbruin';! +29.84;29.86;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GR';'KAS';'sterk gespleten met harde zones verweerd gedeeltelijk grijsbruin doorweekt';! +29.86;30.00;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GR';'KAS';'sterk gespleten met harde zones verweerd gedeeltelijk grijsbruin';! +30.00;31.00;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'GR';'KAS';'sterk gespleten';! +31.00;32.40;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'TGR BR';'KAS';'sterk gespleten met harde zones verweerd grijs tot grijsbruin';! +32.40;32.45;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'LI TGR BR';'KAS';'sterk gespleten met harde zones';! +32.45;32.60;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'LI TGR BR';'KAS';'sterk gespleten met harde zones met vuursteen stukken';! +32.60;32.90;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'LI TGR BR';'KAS';'sterk gespleten met harde zones';! +32.90;33.00;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'LI TGR BR';'KAS';'sterk gespleten met harde zones met vuursteen stukken';! +33.00;33.20;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'LI TGR BR';'KAS';'sterk gespleten met harde zones';! +33.20;33.60;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'LI TGR BR';'KAS';'sterk gespleten met harde zones met vuursteen stukken';! +33.60;34.00;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'LI TGR BR';'KAS';'sterk gespleten met harde zones';! +34.00;34.15;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'LI TGR BR';'KAS';'sterk gespleten met harde zones met vuursteen stukken';! +34.15;35.00;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'LI TGR BR';'KAS';'sterk gespleten met harde zones';! +35.00;35.80;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'LI TGR BR';'KAS';'sterk gespleten met harde zones met vuursteen stukken';! +35.80;36.10;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'LI TGR BR';'KAS';'sterk gespleten met harde zones';! +36.10;36.70;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'LI TGR BR';'KAS';'sterk gespleten met harde zones met vuursteen stukken';! +36.70;37.20;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;-9999.99;'NBE';'LI TGR BR';'KAS';'sterk gespleten met harde zones';! From df3b2308884cdedae19c3c4a8a60b8a4717bc165 Mon Sep 17 00:00:00 2001 From: Jules Blom Date: Mon, 19 May 2025 14:02:18 +0200 Subject: [PATCH 02/10] Rename file --- .../{a2_maastricht-gef.py => a2_maastricht_gef.py} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename examples/a2-maastricht-gef/{a2_maastricht-gef.py => a2_maastricht_gef.py} (100%) diff --git a/examples/a2-maastricht-gef/a2_maastricht-gef.py b/examples/a2-maastricht-gef/a2_maastricht_gef.py similarity index 100% rename from examples/a2-maastricht-gef/a2_maastricht-gef.py rename to examples/a2-maastricht-gef/a2_maastricht_gef.py From 2cf3c06ddb1f9d84243333e107d0b08f15d29bfa Mon Sep 17 00:00:00 2001 From: Jules Blom Date: Mon, 26 May 2025 14:15:21 +0200 Subject: [PATCH 03/10] Polish text in notebook --- .../a2-maastricht-gef/a2_maastricht_gef.py | 156 +++++++++++++----- 1 file changed, 116 insertions(+), 40 deletions(-) diff --git a/examples/a2-maastricht-gef/a2_maastricht_gef.py b/examples/a2-maastricht-gef/a2_maastricht_gef.py index 9c1476d..de1432a 100644 --- a/examples/a2-maastricht-gef/a2_maastricht_gef.py +++ b/examples/a2-maastricht-gef/a2_maastricht_gef.py @@ -18,46 +18,71 @@ import marimo -__generated_with = "0.13.2" +__generated_with = "0.13.11" app = marimo.App(width="medium") -@app.cell +@app.cell(hide_code=True) def _(mo): mo.md( """ - # GEF Data for A2 Tunnel Maastricht + # GEF Data for A2 Tunnel Maastricht - This notebook demonstrates how to + This notebook demonstrates how to - 1. Read in GEF files using [pygef](https://cemsbv.github.io/pygef/) - 1. Use `bedrock-ge` to load Ground Investigation (GI) data from these GEF files - 1. Convert that data into a standardized GI database using `bedrock-ge` - 1. Transform the GI data into 3D GIS features with proper coordinates and geometry ([OGC Simple Feature Access](https://en.wikipedia.org/wiki/Simple_Features)) - 1. Explore and analyze the GI data using: - * Interactive filtering with Pandas dataframes - * Visualization on interactive maps with GeoPandas - 1. Export the processed GI database to a GeoPackage file for use in GIS software + 1. Read in Ground Investigation (GI) data from [GEF files]() using [pygef](https://cemsbv.github.io/pygef/) + 1. Use `bedrock-ge` to convert that data into a standardized GI database using `bedrock-ge` + 1. Transform the GI data into 3D spatial features with proper coordinates and geometry ([OGC Simple Feature](https://en.wikipedia.org/wiki/Simple_Features)) + 1. Explore and analyze the GI data using interactive filtering with Pandas DataFrames and interactive visualization on a map with GeoPandas. + 1. Export the processed GI database to a GeoPackage file for use in other software, like QGIS. - ## Context +
+ What are GEF files? +

+ Geotechnical Exchange Format (GEF) is a standardized, text-based format designed to facilitate the reliable exchange and archiving of geotechnical investigation data, particularly CPT results, across different organizations and software platforms. GEF can also be used for other types of soil tests and borehole data. It is widely used in the Netherlands in ground investigration. +

+
- The Koning Willem-Alexander Tunnel is a double-deck tunnel for motorized traffic in the Dutch city of Maastricht. The tunnel has a length of 2.5 kilometers (lower tunnel tubes) and 2.3 kilometers (upper tunnel tubes). +
+ What is a DataFrame? +

+ A DataFrame is like a spreadsheet, it is a two-dimensional data structure that holds data like a table with rows and columns. +

+
- The tunnel has moved the old A2 highway underground. It previously formed a barrier for the city and slowed traffic. + ## Context - ### Geology + The Koning Willem-Alexander Tunnel is a double-deck tunnel for motorized traffic in the Dutch city of Maastricht. The tunnel has a length of 2.5 kilometers (lower tunnel tubes) and 2.3 kilometers (upper tunnel tubes). + The tunnel has moved the old A2 highway underground. This highway previously formed a barrier for the city and slowed traffic. - The soil here consists of a coarse gravel layer with limestone limestone with karst phenomena underneath. There are also faults. - Zwerfkeien + ### Geology - [Geotechniek-en-Risicos bij A2 Maastricht](https://www.cob.nl/magazines-brochures-en-nieuws/verdieping/verdieping-sept2012/geotechniek-en-risicos-bij-a2-maastricht/) - [Source](https://archisarchief.cultureelerfgoed.nl/Archis2/Archeorapporten/24/AR26905/RAP%202709_4130060%20Maastricht%20A2-traverse.pdf) + The uppermost layer consists of topsoil, clay, and loam, with a thickness of about 2 to 4 meters. These soft Holocene deposits are attributed to the Boxtel Formation, laid down by the Meuse River, as the tunnel is situated in a former river arm. - ## Ground Investigation Data + Beneath the surface layer lies an approximately 8-meter-thick gravel deposit. This gravel acts as a significant aquifer and was a key factor in the groundwater management strategies required for the tunnel construction. - The GI data was downloaded from [Dinoloket](https://www.dinoloket.nl/ondergrondgegevens), a platform where you can view and request data and models from TNO and BRO about the subsurface of the Netherlands. - """ + Below the gravel lies a fissured limestone layer belonging to the Maastricht Formation (mergel). This layer is a very weak, porous, sandy, shallow marine limestone, often weathered, and includes chalk and calcarenite components. + + The limestone is relatively young and shallow, resulting in low compaction and cementation. Its mechanical strength is highly variable and generally low, especially when saturated with groundwater. + + Extensive geophysical surveys and borehole investigations were conducted to map the subsurface, identify faults, flint layers, and assess the risk of cavities within the limestone. While faults were detected, no significant cavities were found. + + The stability of the excavation pit was monitored in real-time, with groundwater levels and pressures carefully controlled to prevent collapse or excessive deformation of the pit walls. + + Due to the high permeability of the gravel and fissured limestone, groundwater management was a major challenge. Over 500 wells were drilled to depths of up to 32 meters for dewatering, and a reinfiltration system was implemented to return nearly all pumped water to the ground, protecting local buildings and ecosystems. + + #### Sources + + * [Tunnel A2 Maastricht: Groundwater Management with DSI System](https://www.tunnel-online.info/en/artikel/tunnel-a2-maastricht-groundwater-management-with-dsi-system-1564115.html) + * [Geotechniek-en-Risicos bij A2 Maastricht](https://www.cob.nl/magazines-brochures-en-nieuws/verdieping/verdieping-sept2012/geotechniek-en-risicos-bij-a2-maastricht/) + * [Laboratory Tests on Dutch Limestone (Mergel) ](https://onepetro.org/ISRMEUROCK/proceedings-abstract/EUROCK15/All-EUROCK15/ISRM-EUROCK-2015-072/43534) + * [Eduard van Herk en Bjorn Vink](https://a2maastricht.nl/application/files/3315/2060/1222/Interview_Eduard_van_Herk_en_Bjorn_Vink.pdf) + + ## Ground Investigation Data + + The GI data was downloaded from [Dinoloket](https://www.dinoloket.nl/ondergrondgegevens), a platform where you can view and request data and models from TNO and BRO about the subsurface of the Netherlands. + """ ) return @@ -106,25 +131,35 @@ def _(boreholes, index, pygef): def _(mo): mo.md( r""" - ## Converting multiple GEF files to a relational database + ## Converting multiple GEF files to a relational database - First, let's check in which projected coordinate system the provided data was recorded - """ + Rather than dealing with a folder of files, we would like to combine all files into a single database with spatial information. This is where Bedrock comes in. + + ### Relational Databases + + A [relational database](https://observablehq.com/blog/databases-101-basics-data-analysts#what-are-relational-databases) is a database with multiple tables that are linked to each other with relations. This type of database is ideal for storing GI data, given its [hierarchical structure](https://bedrock.engineer/docs/#hierarchical-nature-of-gi-data). + + In Python it's convenient to represent a relational database as a dictionary of DataFrame's. + + ### Coordinated Reference System (CRS) + + First, let's check in which projected coordinate system the provided data was recorded. + """ ) return @app.cell def _(boreholes): - boreholes[1].delivered_location.srs_name + code = {bore.delivered_location.srs_name for bore in boreholes}.pop() + orig_epsg_code = code.split("EPSG::")[-1] + orig_crs = f"EPSG:{orig_epsg_code}" + orig_crs return @app.cell -def _(boreholes): - code = {bore.delivered_location.srs_name for bore in boreholes}.pop() - # epsg_code = code.split("EPSG::")[-1] - # crs = f"EPSG:{epsg_code}" +def _(): crs = "EPSG:7415" return (crs,) @@ -133,10 +168,11 @@ def _(boreholes): def _(mo): mo.md( r""" - EPSG:28992 is [Rijksdriehoekscoördinaten](https://nl.wikipedia.org/wiki/Rijksdriehoeksco%C3%B6rdinaten), also called Amersfoort / RD New. + The data is in EPSG:28992, which is the [Rijksdriehoekscoördinaten (NL)](https://nl.wikipedia.org/wiki/Rijksdriehoeksco%C3%B6rdinaten) system, also called "Amersfoort / RD New". This reference system does not include elevation. - EPSG:7415 is with Amersfoort / RD New + NAP height. ie with elevation which we need for 3D geometry - """ + To represent GI data spatially in 3D geometry we need a CRS with elevation. That's why we will use + EPSG:7415 Amersfoort / RD New + NAP height. + """ ) return @@ -149,7 +185,7 @@ def _(): @app.cell def _(): - project_uid = "Maastricht A2" + project_uid = "Maastricht A2 tunnel" return (project_uid,) @@ -181,6 +217,18 @@ def process_data(bore): return df +@app.cell(hide_code=True) +def _(mo): + mo.md( + r""" + Here, we create a new DataFrame for locations and remap the GEF keys to follow Bedrock's conventions. + We need to map `alias` to `location_source_id` and `delivered_vertical_position_offset` to `ground_level_elevation` for example. + We also need to create a **unique identifier** and add `project_uid` as a key to relate it the project. + """ + ) + return + + @app.cell def _(boreholes, pd, project_uid): locations_df = pd.DataFrame([ @@ -208,9 +256,31 @@ def _(calculate_location_gis_geometry, crs, locations_df): return (locations,) +@app.cell(hide_code=True) +def _(mo): + mo.md( + r""" + ## Displaying the GI locations on a map + + Rather than multiple tables (DataFrames) and soil profiles, we would like see an overview of what this ground investigation covers. It's **spatial** data after all, let's view it in a spatial context. + + ### Web Mapping Caveats + + Web-mapping tools are rarely capable of handling geometry in non-WGS84 coordinates. Additionally, vertical lines are not visible when looking at a map from straight above. That's why use `create_lon_lat_height_table` to create points in the WGS84 CRS so we can view the locations of the boreholes. + """ + ) + return + + @app.cell def _(create_lon_lat_height_table, crs, locations): - create_lon_lat_height_table(locations, crs).explore() + create_lon_lat_height_table(locations, crs).explore(marker_kwds={"radius":5}) + return + + +@app.cell +def _(mo): + mo.md(r"""Here we create a DataFrame for the In-Situ data of all locations. To relate to locations and the project we add foreign keys.""") return @@ -236,6 +306,12 @@ def _(insitu): return +@app.cell +def _(mo): + mo.md(r"""In-situ data is also spatial data. It has a location, a depth and a height. We can also turn it into spatial data using Bedrock's `calculate_in_situ_gis_geometry` """) + return + + @app.cell def _(calculate_in_situ_gis_geometry, crs, insitu, locations): insitu_geo = calculate_in_situ_gis_geometry(insitu, locations, crs) @@ -252,12 +328,12 @@ def _(insitu_geo): def _(mo): mo.md( r""" - ## Saving the GI geospatial database as a GeoPackage (.gpkg) + ## Saving the GI geospatial database as a GeoPackage (.gpkg) - Finally, lets write it to an actual geospatial database file, so we can share our GI data with others. For example, to reuse it in other notebooks, create dashboards, access the GI data in QGIS or ArcGIS, and more... + Finally, we'll write it to an actual geospatial database file, a GeoPackage, so we can share our GI data with others, for example, to reuse it in other computational notebooks, create dashboards, access the GI data in QGIS or ArcGIS, and more... - A GeoPackage is an OGC-standardized extension of SQLite (a relational database in a single file, .sqlite or .db) that allows you to store any type of GIS data (both raster as well as vector data) in a single file that has the .gpkg extension. Therefore, many (open-source) GIS software packages support GeoPackage! - """ + A GeoPackage is an OGC-standardized extension of SQLite (a relational database in a single file, .sqlite or .db) that allows you to store any type of GIS data (both raster as well as vector data) in a single file that has the .gpkg extension. Therefore, many (open-source) GIS software packages support GeoPackage! + """ ) return From a4041f492975ebd3ecb70c6ef4d9b8489ed513a7 Mon Sep 17 00:00:00 2001 From: Jules Blom Date: Tue, 17 Jun 2025 14:16:38 +0200 Subject: [PATCH 04/10] Imports + hide cell --- examples/a2-maastricht-gef/a2_maastricht_gef.py | 11 ++++++----- src/bedrock_ge/gi/ags/schemas.py | 2 +- src/bedrock_ge/gi/ags/transform.py | 2 +- src/bedrock_ge/gi/schemas.py | 2 +- 4 files changed, 9 insertions(+), 8 deletions(-) diff --git a/examples/a2-maastricht-gef/a2_maastricht_gef.py b/examples/a2-maastricht-gef/a2_maastricht_gef.py index de1432a..e1158bd 100644 --- a/examples/a2-maastricht-gef/a2_maastricht_gef.py +++ b/examples/a2-maastricht-gef/a2_maastricht_gef.py @@ -280,7 +280,7 @@ def _(create_lon_lat_height_table, crs, locations): @app.cell def _(mo): - mo.md(r"""Here we create a DataFrame for the In-Situ data of all locations. To relate to locations and the project we add foreign keys.""") + mo.md(r"""Here we create a DataFrame for the In-Situ data of all locations. To relate the in-situ data to locations and the project, we add foreign keys.""") return @@ -306,15 +306,16 @@ def _(insitu): return -@app.cell +@app.cell(hide_code=True) def _(mo): - mo.md(r"""In-situ data is also spatial data. It has a location, a depth and a height. We can also turn it into spatial data using Bedrock's `calculate_in_situ_gis_geometry` """) + mo.md(r"""In-situ data is also spatial data. It has a location, a depth and a height. We can also turn it into spatial data using Bedrock's `calculate_in_situ_gis_geometry`""") return @app.cell def _(calculate_in_situ_gis_geometry, crs, insitu, locations): insitu_geo = calculate_in_situ_gis_geometry(insitu, locations, crs) + insitu_geo.index return (insitu_geo,) @@ -363,10 +364,11 @@ def _(): import folium import mapclassify from shapely.geometry import Point, LineString - from bedrock_ge.gi.gis_geometry import calculate_wgs84_coordinates, calculate_in_situ_gis_geometry, calculate_gis_geometry, calculate_location_gis_geometry, create_lon_lat_height_table + from bedrock_ge.gi.gis_geometry import calculate_in_situ_gis_geometry, calculate_gis_geometry, calculate_location_gis_geometry, create_lon_lat_height_table from bedrock_ge.gi.write import write_gi_db_to_gpkg from bedrock_ge.gi.validate import check_brgi_database from pyproj import CRS + from typing import Dict, Tuple, Union return ( CRS, Path, @@ -380,6 +382,5 @@ def _(): write_gi_db_to_gpkg, ) - if __name__ == "__main__": app.run() diff --git a/src/bedrock_ge/gi/ags/schemas.py b/src/bedrock_ge/gi/ags/schemas.py index 79158db..1add63e 100644 --- a/src/bedrock_ge/gi/ags/schemas.py +++ b/src/bedrock_ge/gi/ags/schemas.py @@ -1,4 +1,4 @@ -import pandera as pa +import pandera.pandas as pa from pandera.typing import Series diff --git a/src/bedrock_ge/gi/ags/transform.py b/src/bedrock_ge/gi/ags/transform.py index f667ec3..c68eb53 100644 --- a/src/bedrock_ge/gi/ags/transform.py +++ b/src/bedrock_ge/gi/ags/transform.py @@ -3,7 +3,7 @@ from typing import Dict import pandas as pd -import pandera as pa +import pandera.pandas as pa from pandera.typing import DataFrame from pyproj import CRS diff --git a/src/bedrock_ge/gi/schemas.py b/src/bedrock_ge/gi/schemas.py index ad1c0b5..eacbfdf 100644 --- a/src/bedrock_ge/gi/schemas.py +++ b/src/bedrock_ge/gi/schemas.py @@ -2,7 +2,7 @@ from typing import Optional -import pandera as pa +import pandera.pandas as pa from pandera.typing import Series from pandera.typing.geopandas import GeoSeries From 4a9110dd6363879579fde2661ff7e93b517041ca Mon Sep 17 00:00:00 2001 From: Jules Blom Date: Mon, 30 Jun 2025 11:04:38 +0200 Subject: [PATCH 05/10] Update a2 GEF example for new bedrock version --- .../a2_maastricht_gef_to_brgi_geodb.py} | 214 +++++++++--------- .../gefs/B61F1425.gef | 0 .../gefs/B61F1427.gef | 0 .../gefs/B61F3153.gef | 0 .../gefs/B61F3155.gef | 0 .../gefs/B61F3158.gef | 0 .../gefs/B61F3160.gef | 0 .../gefs/B61F3161.gef | 0 .../gefs/B61F3164.gef | 0 .../gefs/B61F3165.gef | 0 .../gefs/B61F3170.gef | 0 .../gefs/B61F3171.gef | 0 .../gefs/B61F3172.gef | 0 .../gefs/B61F3174.gef | 0 .../gefs/B61F3297.gef | 0 .../gefs/B61F3298.gef | 0 .../gefs/B61F3299.gef | 0 .../gefs/B61F3300.gef | 0 .../gefs/B61F3303.gef | 0 .../gefs/B61F3304.gef | 0 .../gefs/B61F3315.gef | 0 21 files changed, 105 insertions(+), 109 deletions(-) rename examples/{a2-maastricht-gef/a2_maastricht_gef.py => a2_maastricht_gef/a2_maastricht_gef_to_brgi_geodb.py} (71%) rename examples/{a2-maastricht-gef => a2_maastricht_gef}/gefs/B61F1425.gef (100%) rename examples/{a2-maastricht-gef => a2_maastricht_gef}/gefs/B61F1427.gef (100%) rename examples/{a2-maastricht-gef => a2_maastricht_gef}/gefs/B61F3153.gef (100%) rename examples/{a2-maastricht-gef => a2_maastricht_gef}/gefs/B61F3155.gef (100%) rename examples/{a2-maastricht-gef => a2_maastricht_gef}/gefs/B61F3158.gef (100%) rename examples/{a2-maastricht-gef => a2_maastricht_gef}/gefs/B61F3160.gef (100%) rename examples/{a2-maastricht-gef => a2_maastricht_gef}/gefs/B61F3161.gef (100%) rename examples/{a2-maastricht-gef => a2_maastricht_gef}/gefs/B61F3164.gef (100%) rename examples/{a2-maastricht-gef => a2_maastricht_gef}/gefs/B61F3165.gef (100%) rename examples/{a2-maastricht-gef => a2_maastricht_gef}/gefs/B61F3170.gef (100%) rename examples/{a2-maastricht-gef => a2_maastricht_gef}/gefs/B61F3171.gef (100%) rename examples/{a2-maastricht-gef => a2_maastricht_gef}/gefs/B61F3172.gef (100%) rename examples/{a2-maastricht-gef => a2_maastricht_gef}/gefs/B61F3174.gef (100%) rename examples/{a2-maastricht-gef => a2_maastricht_gef}/gefs/B61F3297.gef (100%) rename examples/{a2-maastricht-gef => a2_maastricht_gef}/gefs/B61F3298.gef (100%) rename examples/{a2-maastricht-gef => a2_maastricht_gef}/gefs/B61F3299.gef (100%) rename examples/{a2-maastricht-gef => a2_maastricht_gef}/gefs/B61F3300.gef (100%) rename examples/{a2-maastricht-gef => a2_maastricht_gef}/gefs/B61F3303.gef (100%) rename examples/{a2-maastricht-gef => a2_maastricht_gef}/gefs/B61F3304.gef (100%) rename examples/{a2-maastricht-gef => a2_maastricht_gef}/gefs/B61F3315.gef (100%) diff --git a/examples/a2-maastricht-gef/a2_maastricht_gef.py b/examples/a2_maastricht_gef/a2_maastricht_gef_to_brgi_geodb.py similarity index 71% rename from examples/a2-maastricht-gef/a2_maastricht_gef.py rename to examples/a2_maastricht_gef/a2_maastricht_gef_to_brgi_geodb.py index e1158bd..4562a70 100644 --- a/examples/a2-maastricht-gef/a2_maastricht_gef.py +++ b/examples/a2_maastricht_gef/a2_maastricht_gef_to_brgi_geodb.py @@ -1,24 +1,22 @@ # /// script # requires-python = ">=3.12" # dependencies = [ -# "bedrock-ge==0.2.3", -# "chardet==5.2.0", -# "folium==0.19.5", -# "geopandas==1.0.1", -# "mapclassify==2.8.1", +# "bedrock-ge==0.3.1", +# "folium==0.20.0", +# "geopandas==1.1.0", +# "mapclassify==2.9.0", # "marimo", # "matplotlib==3.10.1", -# "pandas==2.2.3", # "pyproj==3.7.1", # "requests==2.32.3", -# "shapely==2.1.0", +# "shapely==2.1.1", # "pygef"==0.11.1" # ] # /// import marimo -__generated_with = "0.13.11" +__generated_with = "0.14.7" app = marimo.App(width="medium") @@ -28,18 +26,23 @@ def _(mo): """ # GEF Data for A2 Tunnel Maastricht - This notebook demonstrates how to + This notebook demonstrates how to - 1. Read in Ground Investigation (GI) data from [GEF files]() using [pygef](https://cemsbv.github.io/pygef/) - 1. Use `bedrock-ge` to convert that data into a standardized GI database using `bedrock-ge` + 1. Read in Ground Investigation (GI) data from [GEF files]() using the [pygef](https://cemsbv.github.io/pygef/) library. + 1. Use `bedrock-ge` to convert that data into a standardized GI database. 1. Transform the GI data into 3D spatial features with proper coordinates and geometry ([OGC Simple Feature](https://en.wikipedia.org/wiki/Simple_Features)) - 1. Explore and analyze the GI data using interactive filtering with Pandas DataFrames and interactive visualization on a map with GeoPandas. - 1. Export the processed GI database to a GeoPackage file for use in other software, like QGIS. + 1. Explore and analyze the GI data using interactive filtering with Pandas DataFrames and interactive visualization on a map using GeoPandas. + 1. Export the processed GI database to a GeoPackage file for use in GIS software.
What are GEF files?

- Geotechnical Exchange Format (GEF) is a standardized, text-based format designed to facilitate the reliable exchange and archiving of geotechnical investigation data, particularly CPT results, across different organizations and software platforms. GEF can also be used for other types of soil tests and borehole data. It is widely used in the Netherlands in ground investigration. + Geotechnical Exchange Format (GEF) is a standardized, + text-based format designed to facilitate the reliable exchange and archiving + of geotechnical investigation data, particularly CPT results, across + different organizations and software platforms. GEF can also be used for + other types of soil tests and borehole data. It is widely used in the + Netherlands in ground investigation.

@@ -52,15 +55,15 @@ def _(mo): ## Context - The Koning Willem-Alexander Tunnel is a double-deck tunnel for motorized traffic in the Dutch city of Maastricht. The tunnel has a length of 2.5 kilometers (lower tunnel tubes) and 2.3 kilometers (upper tunnel tubes). + The Koning Willem-Alexander Tunnel is a double-deck tunnel for motorized traffic in the city Maastricht, the Netherlands. The tunnel has a length of 2.5 kilometers (lower tunnel tubes) and 2.3 kilometers (upper tunnel tubes). The tunnel has moved the old A2 highway underground. This highway previously formed a barrier for the city and slowed traffic. ### Geology - The uppermost layer consists of topsoil, clay, and loam, with a thickness of about 2 to 4 meters. These soft Holocene deposits are attributed to the Boxtel Formation, laid down by the Meuse River, as the tunnel is situated in a former river arm. + The uppermost layer consists of topsoil, clay, and loam, with a thickness of about 2 to 4 meters. These soft Holocene deposits are attributed to the Boxtel Formation, laid down by the Meuse River. The tunnel is situated in a former river arm. - Beneath the surface layer lies an approximately 8-meter-thick gravel deposit. This gravel acts as a significant aquifer and was a key factor in the groundwater management strategies required for the tunnel construction. + Beneath the surface layer lies an approximately 8-m thick gravel deposit. This gravel acts as a significant aquifer and was a key factor in the groundwater management strategies required for the tunnel construction. Below the gravel lies a fissured limestone layer belonging to the Maastricht Formation (mergel). This layer is a very weak, porous, sandy, shallow marine limestone, often weathered, and includes chalk and calcarenite components. @@ -81,7 +84,7 @@ def _(mo): ## Ground Investigation Data - The GI data was downloaded from [Dinoloket](https://www.dinoloket.nl/ondergrondgegevens), a platform where you can view and request data and models from TNO and BRO about the subsurface of the Netherlands. + The GI data was downloaded from [Dinoloket](https://www.dinoloket.nl/ondergrondgegevens), a platform where you can view and request data and models from the Dutch Geological Survey and Basisregistratie Ondergrond about the subsurface of the Netherlands. """ ) return @@ -133,13 +136,13 @@ def _(mo): r""" ## Converting multiple GEF files to a relational database - Rather than dealing with a folder of files, we would like to combine all files into a single database with spatial information. This is where Bedrock comes in. + Rather than dealing with a folder of files in a format that very few software can handle, we would like to combine all of these files into a single database with spatial information. This is where `bedrock-ge` comes in. ### Relational Databases A [relational database](https://observablehq.com/blog/databases-101-basics-data-analysts#what-are-relational-databases) is a database with multiple tables that are linked to each other with relations. This type of database is ideal for storing GI data, given its [hierarchical structure](https://bedrock.engineer/docs/#hierarchical-nature-of-gi-data). - In Python it's convenient to represent a relational database as a dictionary of DataFrame's. + In Python it's convenient to represent a relational database as a dictionary of DataFrames. ### Coordinated Reference System (CRS) @@ -150,18 +153,12 @@ def _(mo): @app.cell -def _(boreholes): +def _(CRS, boreholes): code = {bore.delivered_location.srs_name for bore in boreholes}.pop() orig_epsg_code = code.split("EPSG::")[-1] - orig_crs = f"EPSG:{orig_epsg_code}" + orig_crs = CRS(f"EPSG:{orig_epsg_code}") orig_crs - return - - -@app.cell -def _(): - crs = "EPSG:7415" - return (crs,) + return (orig_crs,) @app.cell(hide_code=True) @@ -170,16 +167,22 @@ def _(mo): r""" The data is in EPSG:28992, which is the [Rijksdriehoekscoördinaten (NL)](https://nl.wikipedia.org/wiki/Rijksdriehoeksco%C3%B6rdinaten) system, also called "Amersfoort / RD New". This reference system does not include elevation. - To represent GI data spatially in 3D geometry we need a CRS with elevation. That's why we will use - EPSG:7415 Amersfoort / RD New + NAP height. + To represent GI data spatially in 3D geometry we need a CRS **with elevation**. That's why we will use + EPSG:5709 NAP height as the vertical CS. """ ) return @app.cell -def _(): - wgs = "EPSG:4326" +def _(CRS): + vertical_crs = CRS("EPSG:5709") + return (vertical_crs,) + + +@app.cell +def _(CRS): + wgs = CRS("EPSG:4326") return @@ -190,33 +193,15 @@ def _(): @app.cell -def _(CRS, crs, pd, project_uid): +def _(orig_crs, pd, project_uid, vertical_crs): project = pd.DataFrame({ "project_uid": [project_uid], # primary key - "crs_wkt": CRS(crs).to_wkt() + "horizontal_crs_wkt": orig_crs.to_wkt(), + "vertical_crs_wkt": vertical_crs.to_wkt(), }) return (project,) -@app.cell -def _(insitu_geo, locations, project): - brgi_db = {"Project": project, "Location": locations.drop(columns=["data"]), "InSitu_GEOL": insitu_geo } - return (brgi_db,) - - -@app.function -def process_data(bore): - df = bore.data.to_pandas().dropna(axis=1, how='all').rename(columns= - { - 'upperBoundary': 'depth_to_top', - 'lowerBoundary': 'depth_to_base', - 'upperBoundaryOffset': 'elevation_at_top', - 'lowerBoundaryOffset': 'elevation_at_base' - }) - - return df - - @app.cell(hide_code=True) def _(mo): mo.md( @@ -250,34 +235,6 @@ def _(boreholes, pd, project_uid): return (locations_df,) -@app.cell -def _(calculate_location_gis_geometry, crs, locations_df): - locations = calculate_location_gis_geometry(locations_df, crs=crs) - return (locations,) - - -@app.cell(hide_code=True) -def _(mo): - mo.md( - r""" - ## Displaying the GI locations on a map - - Rather than multiple tables (DataFrames) and soil profiles, we would like see an overview of what this ground investigation covers. It's **spatial** data after all, let's view it in a spatial context. - - ### Web Mapping Caveats - - Web-mapping tools are rarely capable of handling geometry in non-WGS84 coordinates. Additionally, vertical lines are not visible when looking at a map from straight above. That's why use `create_lon_lat_height_table` to create points in the WGS84 CRS so we can view the locations of the boreholes. - """ - ) - return - - -@app.cell -def _(create_lon_lat_height_table, crs, locations): - create_lon_lat_height_table(locations, crs).explore(marker_kwds={"radius":5}) - return - - @app.cell def _(mo): mo.md(r"""Here we create a DataFrame for the In-Situ data of all locations. To relate the in-situ data to locations and the project, we add foreign keys.""") @@ -285,7 +242,7 @@ def _(mo): @app.cell -def _(locations, pd): +def _(locations_df, pd): insitu = pd.DataFrame([ { **layer, @@ -293,35 +250,64 @@ def _(locations, pd): "project_uid": location["project_uid"], # foreignkey } # Outer loop: iterate through each location - for location in locations.to_dict('records') + for location in locations_df.to_dict('records') # Inner loop: iterate through each layer in the location's data dataframe for layer in location["data"].to_dict('records') ]) + insitu return (insitu,) @app.cell -def _(insitu): - insitu - return +def _(BedrockGIDatabase, insitu, locations_df, project): + brgi_db = BedrockGIDatabase( + Project=project, + Location=locations_df.drop(columns=["data"]), + InSituTests={"interpretation":insitu}, + ) + brgi_db + return (brgi_db,) + + +@app.cell +def _(brgi_db, create_brgi_geodb): + brgi_geodb = create_brgi_geodb(brgi_db) + return (brgi_geodb,) + + +@app.function +def process_data(bore): + df = bore.data.to_pandas().dropna(axis=1, how='all').rename(columns= + { + 'upperBoundary': 'depth_to_top', + 'lowerBoundary': 'depth_to_base', + 'upperBoundaryOffset': 'elevation_at_top', + 'lowerBoundaryOffset': 'elevation_at_base' + }) + + return df @app.cell(hide_code=True) def _(mo): - mo.md(r"""In-situ data is also spatial data. It has a location, a depth and a height. We can also turn it into spatial data using Bedrock's `calculate_in_situ_gis_geometry`""") - return + mo.md( + r""" + ## Displaying the GI locations on a map + Rather than multiple tables (DataFrames) and soil profiles, we would like see an overview of what this ground investigation covers. It's **spatial** data after all, let's view it in a spatial context. -@app.cell -def _(calculate_in_situ_gis_geometry, crs, insitu, locations): - insitu_geo = calculate_in_situ_gis_geometry(insitu, locations, crs) - insitu_geo.index - return (insitu_geo,) + `create_brgi_geodb` creates a `LonLatHeight` table which contains the GI locations at ground level in WGS84 - World Geodetic System 1984 - EPSG:4326 coordinates (Longitude, Latitude, Ellipsoidal Height). + + + The reason for creating the `LonLatHeight` table is that vertical lines in projected Coordinate Reference Systems (CRS) are often not rendered nicely by default in all web-mapping software. Vertical lines are often not visible when looking at a map from above, and not all web-mapping software is capable of handling geometry in non-WGS84, i.e. (Lon, Lat) coordinates. + """ + ) + return @app.cell -def _(insitu_geo): - insitu_geo +def _(brgi_geodb): + brgi_geodb.LonLatHeight.explore(marker_kwds={"radius":5}) return @@ -331,7 +317,7 @@ def _(mo): r""" ## Saving the GI geospatial database as a GeoPackage (.gpkg) - Finally, we'll write it to an actual geospatial database file, a GeoPackage, so we can share our GI data with others, for example, to reuse it in other computational notebooks, create dashboards, access the GI data in QGIS or ArcGIS, and more... + Finally, we'll write it to an actual geospatial database file, a [GeoPackage](https://www.geopackage.org/), so we can share our GI data with others, for example, to reuse it in other computational notebooks, create dashboards, access the GI data in QGIS or ArcGIS, and more... A GeoPackage is an OGC-standardized extension of SQLite (a relational database in a single file, .sqlite or .db) that allows you to store any type of GIS data (both raster as well as vector data) in a single file that has the .gpkg extension. Therefore, many (open-source) GIS software packages support GeoPackage! """ @@ -340,14 +326,14 @@ def _(mo): @app.cell -def _(brgi_db, check_brgi_database): - check_brgi_database(brgi_db) +def _(brgi_db, check_brgi_geodb): + check_brgi_geodb(brgi_db) return @app.cell -def _(brgi_db, write_gi_db_to_gpkg): - write_gi_db_to_gpkg(brgi_db, gpkg_path="./output/A2_Maastricht.gpkg") +def _(Path, brgi_db, write_brgi_db_to_file): + write_brgi_db_to_file(brgi_db, path=Path("./output/A2_Maastricht.gpkg"), driver="GPKG") return @@ -364,23 +350,33 @@ def _(): import folium import mapclassify from shapely.geometry import Point, LineString - from bedrock_ge.gi.gis_geometry import calculate_in_situ_gis_geometry, calculate_gis_geometry, calculate_location_gis_geometry, create_lon_lat_height_table - from bedrock_ge.gi.write import write_gi_db_to_gpkg - from bedrock_ge.gi.validate import check_brgi_database + + from bedrock_ge.gi.schemas import BedrockGIDatabase + from bedrock_ge.gi.db_operations import merge_dbs + from bedrock_ge.gi.geospatial import create_brgi_geodb + from bedrock_ge.gi.io_utils import geodf_to_df + from bedrock_ge.gi.validate import check_brgi_geodb + from bedrock_ge.gi.mapper import map_to_brgi_db + from bedrock_ge.gi.write import write_brgi_db_to_file from pyproj import CRS from typing import Dict, Tuple, Union return ( + BedrockGIDatabase, CRS, Path, - calculate_in_situ_gis_geometry, - calculate_location_gis_geometry, - check_brgi_database, - create_lon_lat_height_table, + check_brgi_geodb, + create_brgi_geodb, mo, pd, pygef, - write_gi_db_to_gpkg, + write_brgi_db_to_file, ) + +@app.cell +def _(): + return + + if __name__ == "__main__": app.run() diff --git a/examples/a2-maastricht-gef/gefs/B61F1425.gef b/examples/a2_maastricht_gef/gefs/B61F1425.gef similarity index 100% rename from examples/a2-maastricht-gef/gefs/B61F1425.gef rename to examples/a2_maastricht_gef/gefs/B61F1425.gef diff --git a/examples/a2-maastricht-gef/gefs/B61F1427.gef b/examples/a2_maastricht_gef/gefs/B61F1427.gef similarity index 100% rename from examples/a2-maastricht-gef/gefs/B61F1427.gef rename to examples/a2_maastricht_gef/gefs/B61F1427.gef diff --git a/examples/a2-maastricht-gef/gefs/B61F3153.gef b/examples/a2_maastricht_gef/gefs/B61F3153.gef similarity index 100% rename from examples/a2-maastricht-gef/gefs/B61F3153.gef rename to examples/a2_maastricht_gef/gefs/B61F3153.gef diff --git a/examples/a2-maastricht-gef/gefs/B61F3155.gef b/examples/a2_maastricht_gef/gefs/B61F3155.gef similarity index 100% rename from examples/a2-maastricht-gef/gefs/B61F3155.gef rename to examples/a2_maastricht_gef/gefs/B61F3155.gef diff --git a/examples/a2-maastricht-gef/gefs/B61F3158.gef b/examples/a2_maastricht_gef/gefs/B61F3158.gef similarity index 100% rename from examples/a2-maastricht-gef/gefs/B61F3158.gef rename to examples/a2_maastricht_gef/gefs/B61F3158.gef diff --git a/examples/a2-maastricht-gef/gefs/B61F3160.gef b/examples/a2_maastricht_gef/gefs/B61F3160.gef similarity index 100% rename from examples/a2-maastricht-gef/gefs/B61F3160.gef rename to examples/a2_maastricht_gef/gefs/B61F3160.gef diff --git a/examples/a2-maastricht-gef/gefs/B61F3161.gef b/examples/a2_maastricht_gef/gefs/B61F3161.gef similarity index 100% rename from examples/a2-maastricht-gef/gefs/B61F3161.gef rename to examples/a2_maastricht_gef/gefs/B61F3161.gef diff --git a/examples/a2-maastricht-gef/gefs/B61F3164.gef b/examples/a2_maastricht_gef/gefs/B61F3164.gef similarity index 100% rename from examples/a2-maastricht-gef/gefs/B61F3164.gef rename to examples/a2_maastricht_gef/gefs/B61F3164.gef diff --git a/examples/a2-maastricht-gef/gefs/B61F3165.gef b/examples/a2_maastricht_gef/gefs/B61F3165.gef similarity index 100% rename from examples/a2-maastricht-gef/gefs/B61F3165.gef rename to examples/a2_maastricht_gef/gefs/B61F3165.gef diff --git a/examples/a2-maastricht-gef/gefs/B61F3170.gef b/examples/a2_maastricht_gef/gefs/B61F3170.gef similarity index 100% rename from examples/a2-maastricht-gef/gefs/B61F3170.gef rename to examples/a2_maastricht_gef/gefs/B61F3170.gef diff --git a/examples/a2-maastricht-gef/gefs/B61F3171.gef b/examples/a2_maastricht_gef/gefs/B61F3171.gef similarity index 100% rename from examples/a2-maastricht-gef/gefs/B61F3171.gef rename to examples/a2_maastricht_gef/gefs/B61F3171.gef diff --git a/examples/a2-maastricht-gef/gefs/B61F3172.gef b/examples/a2_maastricht_gef/gefs/B61F3172.gef similarity index 100% rename from examples/a2-maastricht-gef/gefs/B61F3172.gef rename to examples/a2_maastricht_gef/gefs/B61F3172.gef diff --git a/examples/a2-maastricht-gef/gefs/B61F3174.gef b/examples/a2_maastricht_gef/gefs/B61F3174.gef similarity index 100% rename from examples/a2-maastricht-gef/gefs/B61F3174.gef rename to examples/a2_maastricht_gef/gefs/B61F3174.gef diff --git a/examples/a2-maastricht-gef/gefs/B61F3297.gef b/examples/a2_maastricht_gef/gefs/B61F3297.gef similarity index 100% rename from examples/a2-maastricht-gef/gefs/B61F3297.gef rename to examples/a2_maastricht_gef/gefs/B61F3297.gef diff --git a/examples/a2-maastricht-gef/gefs/B61F3298.gef b/examples/a2_maastricht_gef/gefs/B61F3298.gef similarity index 100% rename from examples/a2-maastricht-gef/gefs/B61F3298.gef rename to examples/a2_maastricht_gef/gefs/B61F3298.gef diff --git a/examples/a2-maastricht-gef/gefs/B61F3299.gef b/examples/a2_maastricht_gef/gefs/B61F3299.gef similarity index 100% rename from examples/a2-maastricht-gef/gefs/B61F3299.gef rename to examples/a2_maastricht_gef/gefs/B61F3299.gef diff --git a/examples/a2-maastricht-gef/gefs/B61F3300.gef b/examples/a2_maastricht_gef/gefs/B61F3300.gef similarity index 100% rename from examples/a2-maastricht-gef/gefs/B61F3300.gef rename to examples/a2_maastricht_gef/gefs/B61F3300.gef diff --git a/examples/a2-maastricht-gef/gefs/B61F3303.gef b/examples/a2_maastricht_gef/gefs/B61F3303.gef similarity index 100% rename from examples/a2-maastricht-gef/gefs/B61F3303.gef rename to examples/a2_maastricht_gef/gefs/B61F3303.gef diff --git a/examples/a2-maastricht-gef/gefs/B61F3304.gef b/examples/a2_maastricht_gef/gefs/B61F3304.gef similarity index 100% rename from examples/a2-maastricht-gef/gefs/B61F3304.gef rename to examples/a2_maastricht_gef/gefs/B61F3304.gef diff --git a/examples/a2-maastricht-gef/gefs/B61F3315.gef b/examples/a2_maastricht_gef/gefs/B61F3315.gef similarity index 100% rename from examples/a2-maastricht-gef/gefs/B61F3315.gef rename to examples/a2_maastricht_gef/gefs/B61F3315.gef From 2c3b5bac901e0ad7db13a15819818fe7f0724c58 Mon Sep 17 00:00:00 2001 From: Jules Blom Date: Mon, 30 Jun 2025 11:05:36 +0200 Subject: [PATCH 06/10] Typo --- examples/hk_kaitak_ags3/hk_kaitak_ags3_to_brgi_geodb.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/examples/hk_kaitak_ags3/hk_kaitak_ags3_to_brgi_geodb.py b/examples/hk_kaitak_ags3/hk_kaitak_ags3_to_brgi_geodb.py index 117bb88..dd5bc70 100644 --- a/examples/hk_kaitak_ags3/hk_kaitak_ags3_to_brgi_geodb.py +++ b/examples/hk_kaitak_ags3/hk_kaitak_ags3_to_brgi_geodb.py @@ -179,7 +179,7 @@ def _(mo): @app.cell def _(CRS, ags_to_brgi_db_mapping, map_to_brgi_db, merge_dbs, zip, zipfile): projected_crs = CRS("EPSG:2326") - vertrical_crs = CRS("EPSG:5738") + vertical_crs = CRS("EPSG:5738") ags3_file_brgi_dbs = [] with zipfile.ZipFile(zip) as zip_ref: @@ -196,7 +196,7 @@ def _(CRS, ags_to_brgi_db_mapping, map_to_brgi_db, merge_dbs, zip, zipfile): ags3_file_brgi_dbs.append( map_to_brgi_db( ags_to_brgi_db_mapping( - ags3_file, projected_crs, vertrical_crs + ags3_file, projected_crs, vertical_crs ) ) ) From 5749331cf4d7bc9fb24e0f5243a1674921a6c8c2 Mon Sep 17 00:00:00 2001 From: Jules Blom Date: Mon, 30 Jun 2025 11:42:31 +0200 Subject: [PATCH 07/10] Formatting intro text --- .../a2_maastricht_gef_to_brgi_geodb.py | 25 ++++++++++++------- 1 file changed, 16 insertions(+), 9 deletions(-) diff --git a/examples/a2_maastricht_gef/a2_maastricht_gef_to_brgi_geodb.py b/examples/a2_maastricht_gef/a2_maastricht_gef_to_brgi_geodb.py index 4562a70..2febe2d 100644 --- a/examples/a2_maastricht_gef/a2_maastricht_gef_to_brgi_geodb.py +++ b/examples/a2_maastricht_gef/a2_maastricht_gef_to_brgi_geodb.py @@ -53,6 +53,11 @@ def _(mo):

+ ## Ground Investigation Data + + The GI data was downloaded from [Dinoloket](https://www.dinoloket.nl/ondergrondgegevens), a platform for viewing and request data from the Dutch Geological Survey and Basisregistratie Ondergrond about the subsurface of the Netherlands. + We are using GEF files that contain borehole data. + ## Context The Koning Willem-Alexander Tunnel is a double-deck tunnel for motorized traffic in the city Maastricht, the Netherlands. The tunnel has a length of 2.5 kilometers (lower tunnel tubes) and 2.3 kilometers (upper tunnel tubes). @@ -75,16 +80,18 @@ def _(mo): Due to the high permeability of the gravel and fissured limestone, groundwater management was a major challenge. Over 500 wells were drilled to depths of up to 32 meters for dewatering, and a reinfiltration system was implemented to return nearly all pumped water to the ground, protecting local buildings and ecosystems. - #### Sources - - * [Tunnel A2 Maastricht: Groundwater Management with DSI System](https://www.tunnel-online.info/en/artikel/tunnel-a2-maastricht-groundwater-management-with-dsi-system-1564115.html) - * [Geotechniek-en-Risicos bij A2 Maastricht](https://www.cob.nl/magazines-brochures-en-nieuws/verdieping/verdieping-sept2012/geotechniek-en-risicos-bij-a2-maastricht/) - * [Laboratory Tests on Dutch Limestone (Mergel) ](https://onepetro.org/ISRMEUROCK/proceedings-abstract/EUROCK15/All-EUROCK15/ISRM-EUROCK-2015-072/43534) - * [Eduard van Herk en Bjorn Vink](https://a2maastricht.nl/application/files/3315/2060/1222/Interview_Eduard_van_Herk_en_Bjorn_Vink.pdf) - - ## Ground Investigation Data +
+ + Sources + + +
- The GI data was downloaded from [Dinoloket](https://www.dinoloket.nl/ondergrondgegevens), a platform where you can view and request data and models from the Dutch Geological Survey and Basisregistratie Ondergrond about the subsurface of the Netherlands. """ ) return From f52df60e0e9b749c298eabe3cbacf0721e6959aa Mon Sep 17 00:00:00 2001 From: Jules Blom Date: Mon, 30 Jun 2025 14:23:23 +0200 Subject: [PATCH 08/10] Add notebook title --- examples/a2_maastricht_gef/a2_maastricht_gef_to_brgi_geodb.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/examples/a2_maastricht_gef/a2_maastricht_gef_to_brgi_geodb.py b/examples/a2_maastricht_gef/a2_maastricht_gef_to_brgi_geodb.py index 2febe2d..e37df79 100644 --- a/examples/a2_maastricht_gef/a2_maastricht_gef_to_brgi_geodb.py +++ b/examples/a2_maastricht_gef/a2_maastricht_gef_to_brgi_geodb.py @@ -18,7 +18,9 @@ __generated_with = "0.14.7" app = marimo.App(width="medium") - +app = marimo.App( + app_title="Maastricht, GEF boreholes to a Bedrock GI Geospatial Database", +) @app.cell(hide_code=True) def _(mo): From 12dcfcdda83d47e6b7de85c4fcde12897bbb2e96 Mon Sep 17 00:00:00 2001 From: Jules Blom Date: Mon, 10 Nov 2025 20:11:34 +0100 Subject: [PATCH 09/10] Tweaks --- .../a2_maastricht_gef_to_brgi_geodb.py | 144 +++++++++++------- 1 file changed, 87 insertions(+), 57 deletions(-) diff --git a/examples/a2_maastricht_gef/a2_maastricht_gef_to_brgi_geodb.py b/examples/a2_maastricht_gef/a2_maastricht_gef_to_brgi_geodb.py index e37df79..f0caef7 100644 --- a/examples/a2_maastricht_gef/a2_maastricht_gef_to_brgi_geodb.py +++ b/examples/a2_maastricht_gef/a2_maastricht_gef_to_brgi_geodb.py @@ -1,40 +1,44 @@ # /// script # requires-python = ">=3.12" # dependencies = [ -# "bedrock-ge==0.3.1", +# "bedrock-ge==0.3.2", # "folium==0.20.0", -# "geopandas==1.1.0", -# "mapclassify==2.9.0", -# "marimo", -# "matplotlib==3.10.1", +# "geopandas==1.1.1", +# "mapclassify==2.8.1", +# "marimo[mcp]", +# "matplotlib==3.10.7", # "pyproj==3.7.1", # "requests==2.32.3", -# "shapely==2.1.1", -# "pygef"==0.11.1" +# "shapely==2.1.2", +# "pygef==0.13.0", +# "pandas==2.3.3", +# "pyarrow==21.0.0", # ] # /// import marimo -__generated_with = "0.14.7" -app = marimo.App(width="medium") +__generated_with = "0.17.6" app = marimo.App( - app_title="Maastricht, GEF boreholes to a Bedrock GI Geospatial Database", + width="medium", + app_title="Maastricht A2 Tunnel GEF-BORE data to a Bedrock GI Geospatial Database", ) + @app.cell(hide_code=True) def _(mo): - mo.md( - """ + mo.md(""" # GEF Data for A2 Tunnel Maastricht + Bedrock logo + This notebook demonstrates how to - 1. Read in Ground Investigation (GI) data from [GEF files]() using the [pygef](https://cemsbv.github.io/pygef/) library. - 1. Use `bedrock-ge` to convert that data into a standardized GI database. + 1. Read in Ground Investigation (GI) data from [GEF files](https://bedrock.engineer/reference/formats/gef/gef/) using the [pygef](https://cemsbv.github.io/pygef/) library. + 1. Use [`bedrock-ge`](https://github.com/bedrock-engineer/bedrock-ge) to convert that data into a standardized GI database. 1. Transform the GI data into 3D spatial features with proper coordinates and geometry ([OGC Simple Feature](https://en.wikipedia.org/wiki/Simple_Features)) 1. Explore and analyze the GI data using interactive filtering with Pandas DataFrames and interactive visualization on a map using GeoPandas. - 1. Export the processed GI database to a GeoPackage file for use in GIS software. + 1. Export the processed GI database to a GeoPackage file for use in GIS software, like QGIS or ArcGIS.
What are GEF files? @@ -43,7 +47,7 @@ def _(mo): text-based format designed to facilitate the reliable exchange and archiving of geotechnical investigation data, particularly CPT results, across different organizations and software platforms. GEF can also be used for - other types of soil tests and borehole data. It is widely used in the + other types of soil tests, like CPTs. It is widely used in the Netherlands in ground investigation.

@@ -58,11 +62,11 @@ def _(mo): ## Ground Investigation Data The GI data was downloaded from [Dinoloket](https://www.dinoloket.nl/ondergrondgegevens), a platform for viewing and request data from the Dutch Geological Survey and Basisregistratie Ondergrond about the subsurface of the Netherlands. - We are using GEF files that contain borehole data. + We are using [GEF files](https://bedrock.engineer/reference/formats/gef/gef/) that contain borehole data, [GEF-BORE](https://bedrock.engineer/reference/formats/gef/gef-bore/). ## Context - The Koning Willem-Alexander Tunnel is a double-deck tunnel for motorized traffic in the city Maastricht, the Netherlands. The tunnel has a length of 2.5 kilometers (lower tunnel tubes) and 2.3 kilometers (upper tunnel tubes). + The [Koning Willem-Alexander Tunnel](https://www.rijkswaterstaat.nl/wegen/wegenoverzicht/a2/koning-willem-alexandertunnel-a2-n2) is a double-deck tunnel for motorized traffic in the city Maastricht, the Netherlands. The tunnel has a length of 2.5 kilometers (lower tunnel tubes) and 2.3 kilometers (upper tunnel tubes). The tunnel has moved the old A2 highway underground. This highway previously formed a barrier for the city and slowed traffic. @@ -76,11 +80,13 @@ def _(mo): The limestone is relatively young and shallow, resulting in low compaction and cementation. Its mechanical strength is highly variable and generally low, especially when saturated with groundwater. + ## Ground Investigation & Operations + Extensive geophysical surveys and borehole investigations were conducted to map the subsurface, identify faults, flint layers, and assess the risk of cavities within the limestone. While faults were detected, no significant cavities were found. The stability of the excavation pit was monitored in real-time, with groundwater levels and pressures carefully controlled to prevent collapse or excessive deformation of the pit walls. - Due to the high permeability of the gravel and fissured limestone, groundwater management was a major challenge. Over 500 wells were drilled to depths of up to 32 meters for dewatering, and a reinfiltration system was implemented to return nearly all pumped water to the ground, protecting local buildings and ecosystems. + Due to the high permeability of the gravel and fissured limestone, groundwater management was a major challenge. Over 500 wells were drilled to depths of up to 32 m for dewatering, and a reinfiltration system was implemented to return nearly all pumped water to the ground, protecting local buildings and ecosystems.
@@ -93,9 +99,7 @@ def _(mo):
  • Interview Eduard van Herk en Bjorn Vink
  • - - """ - ) + """) return @@ -134,15 +138,14 @@ def _(boreholes, index): @app.cell -def _(boreholes, index, pygef): - pygef.plotting.plot_bore(boreholes[index]) +def _(boreholes, index, plot_bore): + plot_bore(boreholes[index]) return @app.cell(hide_code=True) def _(mo): - mo.md( - r""" + mo.md(r""" ## Converting multiple GEF files to a relational database Rather than dealing with a folder of files in a format that very few software can handle, we would like to combine all of these files into a single database with spatial information. This is where `bedrock-ge` comes in. @@ -156,30 +159,26 @@ def _(mo): ### Coordinated Reference System (CRS) First, let's check in which projected coordinate system the provided data was recorded. - """ - ) + """) return @app.cell def _(CRS, boreholes): code = {bore.delivered_location.srs_name for bore in boreholes}.pop() - orig_epsg_code = code.split("EPSG::")[-1] - orig_crs = CRS(f"EPSG:{orig_epsg_code}") + orig_crs = CRS(code) orig_crs return (orig_crs,) @app.cell(hide_code=True) def _(mo): - mo.md( - r""" + mo.md(r""" The data is in EPSG:28992, which is the [Rijksdriehoekscoördinaten (NL)](https://nl.wikipedia.org/wiki/Rijksdriehoeksco%C3%B6rdinaten) system, also called "Amersfoort / RD New". This reference system does not include elevation. To represent GI data spatially in 3D geometry we need a CRS **with elevation**. That's why we will use EPSG:5709 NAP height as the vertical CS. - """ - ) + """) return @@ -213,13 +212,11 @@ def _(orig_crs, pd, project_uid, vertical_crs): @app.cell(hide_code=True) def _(mo): - mo.md( - r""" - Here, we create a new DataFrame for locations and remap the GEF keys to follow Bedrock's conventions. + mo.md(r""" + Here, we create a new DataFrame for locations and remap the GEF keys to follow Bedrock's conventions. We need to map `alias` to `location_source_id` and `delivered_vertical_position_offset` to `ground_level_elevation` for example. We also need to create a **unique identifier** and add `project_uid` as a key to relate it the project. - """ - ) + """) return @@ -245,8 +242,16 @@ def _(boreholes, pd, project_uid): @app.cell +def _(locations_df): + locations_df + return + + +@app.cell(hide_code=True) def _(mo): - mo.md(r"""Here we create a DataFrame for the In-Situ data of all locations. To relate the in-situ data to locations and the project, we add foreign keys.""") + mo.md(r""" + Here we create a DataFrame for the In-Situ data of all GI locations. To relate the in-situ data to locations and the project, we add foreign keys. + """) return @@ -284,6 +289,12 @@ def _(brgi_db, create_brgi_geodb): return (brgi_geodb,) +@app.cell +def _(brgi_geodb): + brgi_geodb.InSituTests["interpretation"] + return + + @app.function def process_data(bore): df = bore.data.to_pandas().dropna(axis=1, how='all').rename(columns= @@ -299,38 +310,41 @@ def process_data(bore): @app.cell(hide_code=True) def _(mo): - mo.md( - r""" + mo.md(r""" ## Displaying the GI locations on a map Rather than multiple tables (DataFrames) and soil profiles, we would like see an overview of what this ground investigation covers. It's **spatial** data after all, let's view it in a spatial context. - `create_brgi_geodb` creates a `LonLatHeight` table which contains the GI locations at ground level in WGS84 - World Geodetic System 1984 - EPSG:4326 coordinates (Longitude, Latitude, Ellipsoidal Height). + `create_brgi_geodb` creates a `LonLatHeight` table which contains the GI locations at ground level as points in WGS84 - World Geodetic System 1984 - EPSG:4326 coordinates (Longitude, Latitude, Ellipsoidal Height). The reason for creating the `LonLatHeight` table is that vertical lines in projected Coordinate Reference Systems (CRS) are often not rendered nicely by default in all web-mapping software. Vertical lines are often not visible when looking at a map from above, and not all web-mapping software is capable of handling geometry in non-WGS84, i.e. (Lon, Lat) coordinates. - """ - ) + """) return @app.cell def _(brgi_geodb): - brgi_geodb.LonLatHeight.explore(marker_kwds={"radius":5}) + brgi_geodb.LonLatHeight + return + + +@app.cell +def _(brgi_geodb): + map = brgi_geodb.LonLatHeight.explore(marker_kwds={"radius":5}) + map return @app.cell(hide_code=True) def _(mo): - mo.md( - r""" + mo.md(r""" ## Saving the GI geospatial database as a GeoPackage (.gpkg) Finally, we'll write it to an actual geospatial database file, a [GeoPackage](https://www.geopackage.org/), so we can share our GI data with others, for example, to reuse it in other computational notebooks, create dashboards, access the GI data in QGIS or ArcGIS, and more... A GeoPackage is an OGC-standardized extension of SQLite (a relational database in a single file, .sqlite or .db) that allows you to store any type of GIS data (both raster as well as vector data) in a single file that has the .gpkg extension. Therefore, many (open-source) GIS software packages support GeoPackage! - """ - ) + """) return @@ -341,8 +355,27 @@ def _(brgi_db, check_brgi_geodb): @app.cell -def _(Path, brgi_db, write_brgi_db_to_file): - write_brgi_db_to_file(brgi_db, path=Path("./output/A2_Maastricht.gpkg"), driver="GPKG") +def _(brgi_db, write_brgi_db_to_file): + write_brgi_db_to_file(brgi_db, path="./output/A2_Maastricht.gpkg", driver="GPKG") + return + + +@app.cell +def _(mo): + mo.md(r""" + ## Visualising the Data in a 3D Webmap + + As standardized geospatial data, we can visualize our GI in a wealth of ways. + + View one of the Bedrock guides to see what you can do with your data. + + * [Viewing Geotechnical Data in QGIS](https://bedrock.engineer/guides/viewing-qgis/) + * [Viewing Geotechnical Data on a Web Map](https://bedrock.engineer/guides/viewing-webmap/) + + ### 3D Webmap with Cesium.js + + View the data from this example interactively in a 3D webmap. + """) return @@ -350,6 +383,7 @@ def _(Path, brgi_db, write_brgi_db_to_file): def _(): import marimo as mo import pygef + from pygef.plotting import plot_bore import os from pathlib import Path import pandas as pd @@ -377,15 +411,11 @@ def _(): create_brgi_geodb, mo, pd, + plot_bore, pygef, write_brgi_db_to_file, ) -@app.cell -def _(): - return - - if __name__ == "__main__": app.run() From 5e46801a6c79731c464f1ac7bb7bdbe7f4ad20f5 Mon Sep 17 00:00:00 2001 From: Jules Blom Date: Mon, 17 Nov 2025 17:26:24 +0100 Subject: [PATCH 10/10] Tweak example --- .../a2_maastricht_gef_to_brgi_geodb.py | 81 ++++++++++++------- 1 file changed, 54 insertions(+), 27 deletions(-) diff --git a/examples/a2_maastricht_gef/a2_maastricht_gef_to_brgi_geodb.py b/examples/a2_maastricht_gef/a2_maastricht_gef_to_brgi_geodb.py index f0caef7..8bb339d 100644 --- a/examples/a2_maastricht_gef/a2_maastricht_gef_to_brgi_geodb.py +++ b/examples/a2_maastricht_gef/a2_maastricht_gef_to_brgi_geodb.py @@ -13,12 +13,14 @@ # "pygef==0.13.0", # "pandas==2.3.3", # "pyarrow==21.0.0", +# "anthropic==0.73.0", +# "numpy==2.3.5", # ] # /// import marimo -__generated_with = "0.17.6" +__generated_with = "0.17.8" app = marimo.App( width="medium", app_title="Maastricht A2 Tunnel GEF-BORE data to a Bedrock GI Geospatial Database", @@ -30,7 +32,7 @@ def _(mo): mo.md(""" # GEF Data for A2 Tunnel Maastricht - Bedrock logo + Bedrock logo This notebook demonstrates how to @@ -43,12 +45,12 @@ def _(mo):
    What are GEF files?

    - Geotechnical Exchange Format (GEF) is a standardized, + [Geotechnical Exchange Format](http://localhost:4321/reference/formats/gef/gef/) (GEF) is a standardized, text-based format designed to facilitate the reliable exchange and archiving of geotechnical investigation data, particularly CPT results, across different organizations and software platforms. GEF can also be used for other types of soil tests, like CPTs. It is widely used in the - Netherlands in ground investigation. + Netherlands and Belgium in ground investigation.

    @@ -113,7 +115,7 @@ def _(Path, pygef): @app.cell(hide_code=True) def _(mo): - mo.md("pygef uses [polars](https://pola.rs/) for DataFrames, for consistency we will convert them to [Pandas](http://pandas.pydata.org/) DataFrames in this notebook.").callout("warn") + mo.md("pygef uses [polars](https://pola.rs/) for DataFrames, for consistency, we convert them to [Pandas](http://pandas.pydata.org/) DataFrames in this notebook.").callout("warn") return @@ -128,6 +130,7 @@ def _(boreholes, mo): @app.cell(hide_code=True) def _(multiselect): index = multiselect.value or 0 + index return (index,) @@ -148,11 +151,11 @@ def _(mo): mo.md(r""" ## Converting multiple GEF files to a relational database - Rather than dealing with a folder of files in a format that very few software can handle, we would like to combine all of these files into a single database with spatial information. This is where `bedrock-ge` comes in. + Rather than dealing with a folder of files in a format that not much software can handle, we would like to combine all of these files into a single database with spatial information. This is where `bedrock-ge` comes in. ### Relational Databases - A [relational database](https://observablehq.com/blog/databases-101-basics-data-analysts#what-are-relational-databases) is a database with multiple tables that are linked to each other with relations. This type of database is ideal for storing GI data, given its [hierarchical structure](https://bedrock.engineer/docs/#hierarchical-nature-of-gi-data). + A [relational database](https://observablehq.com/blog/databases-101-basics-data-analysts#what-are-relational-databases) is a database with multiple tables that are linked to each other with relations. This type of database is ideal for storing GI data, given its [hierarchical structure](https://bedrock.engineer/explanation/hierarchical-structure/). In Python it's convenient to represent a relational database as a dictionary of DataFrames. @@ -166,9 +169,9 @@ def _(mo): @app.cell def _(CRS, boreholes): code = {bore.delivered_location.srs_name for bore in boreholes}.pop() - orig_crs = CRS(code) - orig_crs - return (orig_crs,) + projected_crs = CRS(code) + projected_crs + return (projected_crs,) @app.cell(hide_code=True) @@ -177,7 +180,7 @@ def _(mo): The data is in EPSG:28992, which is the [Rijksdriehoekscoördinaten (NL)](https://nl.wikipedia.org/wiki/Rijksdriehoeksco%C3%B6rdinaten) system, also called "Amersfoort / RD New". This reference system does not include elevation. To represent GI data spatially in 3D geometry we need a CRS **with elevation**. That's why we will use - EPSG:5709 NAP height as the vertical CS. + [EPSG:5709](https://epsg.org/crs_5709/NAP-height.html) "Normaal Amsterdams Peil (NAP) height" as the vertical reference system. """) return @@ -201,10 +204,10 @@ def _(): @app.cell -def _(orig_crs, pd, project_uid, vertical_crs): +def _(pd, project_uid, projected_crs, vertical_crs): project = pd.DataFrame({ "project_uid": [project_uid], # primary key - "horizontal_crs_wkt": orig_crs.to_wkt(), + "horizontal_crs_wkt": projected_crs.to_wkt(), "vertical_crs_wkt": vertical_crs.to_wkt(), }) return (project,) @@ -250,7 +253,7 @@ def _(locations_df): @app.cell(hide_code=True) def _(mo): mo.md(r""" - Here we create a DataFrame for the In-Situ data of all GI locations. To relate the in-situ data to locations and the project, we add foreign keys. + Here we create a DataFrame for the In-Situ data of all GI locations. To relate the in-situ data to locations and the project, we add foreign keys to each row. """) return @@ -277,12 +280,20 @@ def _(BedrockGIDatabase, insitu, locations_df, project): brgi_db = BedrockGIDatabase( Project=project, Location=locations_df.drop(columns=["data"]), - InSituTests={"interpretation":insitu}, + InSituTests={"interpretation": insitu}, ) brgi_db return (brgi_db,) +@app.cell(hide_code=True) +def _(mo): + mo.md(r""" + Now let's convert the various tables (`Location`, `LonLatHeight`, `In-SituTests` ) into geospatial DataFrames with interpolated geometry data using `bedrock-ge`'s `create_brgi_geodb`. + """) + return + + @app.cell def _(brgi_db, create_brgi_geodb): brgi_geodb = create_brgi_geodb(brgi_db) @@ -319,20 +330,22 @@ def _(mo): The reason for creating the `LonLatHeight` table is that vertical lines in projected Coordinate Reference Systems (CRS) are often not rendered nicely by default in all web-mapping software. Vertical lines are often not visible when looking at a map from above, and not all web-mapping software is capable of handling geometry in non-WGS84, i.e. (Lon, Lat) coordinates. + + `brgi_geodb.LonLatHeight` is a GeoPandas GeoDataFrame, which has an `.explore()` utility method to view the data on a webmap. """) return @app.cell def _(brgi_geodb): - brgi_geodb.LonLatHeight + map = brgi_geodb.LonLatHeight.explore(marker_kwds={"radius":5}) + map return @app.cell def _(brgi_geodb): - map = brgi_geodb.LonLatHeight.explore(marker_kwds={"radius":5}) - map + brgi_geodb.LonLatHeight return @@ -341,29 +354,41 @@ def _(mo): mo.md(r""" ## Saving the GI geospatial database as a GeoPackage (.gpkg) - Finally, we'll write it to an actual geospatial database file, a [GeoPackage](https://www.geopackage.org/), so we can share our GI data with others, for example, to reuse it in other computational notebooks, create dashboards, access the GI data in QGIS or ArcGIS, and more... + Finally, we'll write it to an actual geospatial database file, a [GeoPackage](https://www.geopackage.org/), so we can share our GI data with others, for example, to reuse it in other computational notebooks, create dashboard apps, access the GI data in QGIS or ArcGIS, and more... + + A GeoPackage is an OGC-standardized extension of SQLite, a relational database in a single file. SQLite is the most deployed database in the world, it's probably on every device you own. - A GeoPackage is an OGC-standardized extension of SQLite (a relational database in a single file, .sqlite or .db) that allows you to store any type of GIS data (both raster as well as vector data) in a single file that has the .gpkg extension. Therefore, many (open-source) GIS software packages support GeoPackage! + GeoPackage allows you to store any type of GIS data (both raster as well as vector data) in a single file that has the `.gpkg` extension. Therefore, many (open-source) GIS software packages support GeoPackage! """) return -@app.cell -def _(brgi_db, check_brgi_geodb): - check_brgi_geodb(brgi_db) +@app.cell(hide_code=True) +def _(mo): + mo.md(r""" + `check_brgi_geodb` checks that all tables in the BedrockGI geospatial database conform to their respective schemas and that all foreign key relationships are properly maintained. + """) return @app.cell -def _(brgi_db, write_brgi_db_to_file): - write_brgi_db_to_file(brgi_db, path="./output/A2_Maastricht.gpkg", driver="GPKG") +def _(brgi_geodb, check_brgi_geodb): + check_brgi_geodb(brgi_geodb) return @app.cell +def _(brgi_geodb, os, write_brgi_db_to_file): + os.makedirs('./output', exist_ok=True) + + write_brgi_db_to_file(brgi_geodb, path="./output/A2_Maastricht.gpkg", driver="GPKG") + return + + +@app.cell(hide_code=True) def _(mo): mo.md(r""" - ## Visualising the Data in a 3D Webmap + ## Visualising the Data As standardized geospatial data, we can visualize our GI in a wealth of ways. @@ -374,7 +399,7 @@ def _(mo): ### 3D Webmap with Cesium.js - View the data from this example interactively in a 3D webmap. + View the data from this example interactively in a [3D webmap using CesiumJS](https://www.bedrock.engineer/maastricht-a2). """) return @@ -392,6 +417,7 @@ def _(): import pyarrow import folium import mapclassify + import numpy as np from shapely.geometry import Point, LineString from bedrock_ge.gi.schemas import BedrockGIDatabase @@ -410,6 +436,7 @@ def _(): check_brgi_geodb, create_brgi_geodb, mo, + os, pd, plot_bore, pygef,