Reading data#

GeoST offer various functions to read and parse data to GeoST objects. Generally speaking, data can either be loaded from (local) files or is requested from a service like the BRO REST-API. The raw data is then parsed to a GeoST data object such as a BoreholeCollection or CptCollection.

Supported subsurface data#

GeoST supports data coming from several data sources and file formats. The tables below list the currently supported data sources, associated reader functions and resulting GeoST objects.

Subsurface data#

By subsurface point data we mean layered data (e.g. boreholes) or discrete/measurement data (e.g. CPT, well logs) at a single x,y- or lat,lon-location (see Data structures for a more detailed description).

File format/data service

Read function

Returned GeoST object

Description

BHR-G

read_bhrg

BoreholeCollection

(BRO) Geological boreholes from xml

BHR-GT

read_bhrgt

BoreholeCollection

(BRO) Geotechnical boreholes from xml

BHR-P

read_bhrp

BoreholeCollection

(BRO) Pedological boreholes from xml

CPT

read_cpt read_gef_cpts

CptCollection

(BRO) Cone Penetration Tests from xml or gef

SFR

read_sfr

BoreholeCollection

(BRO) Pedological soilprofile descriptions from xml

BRO REST-API

bro_api_read

BoreholeCollection or CptCollection

BRO BHR-G, BHR-GT, BHR-P, CPT or SFR objects

GeoST borehole parquet or csv

read_borehole_table

BoreholeCollection or DataFrame

GeoST native format. Result of to_parquet or to_csv exports

GeoST CPT parquet or csv

read_cpt_table

CptCollection or DataFrame

GeoST native format. Result of to_parquet or to_csv exports

NLOG excel export

read_nlog_cores

BoreholeCollection or DataFrame

Reader for NLOG deep cores, see here

UU LLG cores

read_uullg_tables

BoreholeCollection or DataFrame

Reader for csv distribution of Utrecht University student boreholes

BORIS XML

read_xml_boris

BoreholeCollection or DataFrame

Reader for XML exports of the BORIS borehole description software

Subsurface model data#

By subsurface model data we mean voxel models (such as GeoTOP) or layer models (such as REGIS).

File format/data service

Read function

Returned GeoST object

Description

Generic Voxelmodel

VoxelModel

VoxelModel

Generic reader for a voxelmodel presented in NetCDF format (readable as xarray dataset)

GeoTOP NetCDF

GeoTop.from_netcdf

VoxelModel

Reader for GeoTOP NetCDF distribution

GeoTOP OpenDAP

GeoTop.from_opendap

VoxelModel

Reader for GeoTOP OpenDAP distribution

Data reading examples#

import geost

# Read a few BRO soil cores in a small area
boreholes = geost.bro_api_read("BHR-P", bbox=(141_470, 455_000, 141_700, 455_300))

print(type(boreholes))
boreholes.header
<class 'geost.base.BoreholeCollection'>
nr crs surface vertical_datum begin_depth end ghg glg landuse x y geometry
0 BHR000000085497 urn:ogc:def:crs:EPSG::28992 1.99 NAP 0.0 0.49 0.5 None graslandBlijvend 141671.0 455122.0 POINT (141671 455122)
1 BHR000000114014 urn:ogc:def:crs:EPSG::28992 2.05 NAP 0.0 0.55 0.5 None graslandBlijvend 141523.0 455073.0 POINT (141523 455073)
2 BHR000000120513 urn:ogc:def:crs:EPSG::28992 2.01 NAP 0.0 0.51 0.5 None graslandBlijvend 141580.0 455167.0 POINT (141580 455167)
3 BHR000000160549 urn:ogc:def:crs:EPSG::28992 2.03 NAP 0.0 0.53 0.6 None graslandBlijvend 141622.0 455034.0 POINT (141622 455034)
4 BHR000000206176 urn:ogc:def:crs:EPSG::28992 1.89 NAP 0.0 0.39 0.3 None graslandBlijvend 141522.0 455275.0 POINT (141522 455275)
5 BHR000000247842 urn:ogc:def:crs:EPSG::28992 2.12 NAP 0.0 0.62 0.4 None graslandBlijvend 141642.0 455278.0 POINT (141642 455278)
from geost.bro import GeoTop

# Get corresponding voxels of the GeoTOP model
geotop = GeoTop.from_opendap(bbox=(141_470, 455_000, 141_700, 455_300))

geotop
GeoTop
Data variables:
    strat    (y, x, z) float32 25kB dask.array<chunksize=(5, 4, 76), meta=np.ndarray>
    lithok   (y, x, z) float32 25kB dask.array<chunksize=(5, 4, 76), meta=np.ndarray>
    kans_1   (y, x, z) float32 25kB dask.array<chunksize=(5, 4, 76), meta=np.ndarray>
    kans_2   (y, x, z) float32 25kB dask.array<chunksize=(5, 4, 76), meta=np.ndarray>
    kans_3   (y, x, z) float32 25kB dask.array<chunksize=(5, 4, 76), meta=np.ndarray>
    kans_4   (y, x, z) float32 25kB dask.array<chunksize=(5, 4, 76), meta=np.ndarray>
    kans_5   (y, x, z) float32 25kB dask.array<chunksize=(5, 4, 76), meta=np.ndarray>
    kans_6   (y, x, z) float32 25kB dask.array<chunksize=(5, 4, 76), meta=np.ndarray>
    kans_7   (y, x, z) float32 25kB dask.array<chunksize=(5, 4, 76), meta=np.ndarray>
    kans_8   (y, x, z) float32 25kB dask.array<chunksize=(5, 4, 76), meta=np.ndarray>
    kans_9   (y, x, z) float32 25kB dask.array<chunksize=(5, 4, 76), meta=np.ndarray>
    onz_lk   (y, x, z) float32 25kB dask.array<chunksize=(5, 4, 76), meta=np.ndarray>
    onz_ls   (y, x, z) float32 25kB dask.array<chunksize=(5, 4, 76), meta=np.ndarray>
Dimensions: {'y': 5, 'x': 4, 'z': 313}
Resolution (y, x, z): (100.0, 100.0, 0.5)