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) along the vertical axis (depth with respect to datum) at a single point (geographic lat/lon).

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 LayeredData

GeoST native format. Result of to_parquet or to_csv exports

GeoST CPT parquet or csv

read_cpt_table

CptCollection or DiscreteData

GeoST native format. Result of to_parquet or to_csv exports

NLOG excel export

read_nlog_cores

BoreholeCollection or LayeredData

Reader for NLOG deep cores, see here

UU LLG cores

read_uullg_tables

BoreholeCollection or LayeredData

Reader for csv distribution of Utrecht University student boreholes

BORIS XML

read_xml_boris

BoreholeCollection or LayeredData

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'>
PointHeader instance containing 6 objects
                nr                          crs  surface vertical_datum  \
0  BHR000000085497  urn:ogc:def:crs:EPSG::28992     1.99            NAP   
1  BHR000000114014  urn:ogc:def:crs:EPSG::28992     2.05            NAP   
2  BHR000000120513  urn:ogc:def:crs:EPSG::28992     2.01            NAP   
3  BHR000000160549  urn:ogc:def:crs:EPSG::28992     2.03            NAP   
4  BHR000000206176  urn:ogc:def:crs:EPSG::28992     1.89            NAP   
5  BHR000000247842  urn:ogc:def:crs:EPSG::28992     2.12            NAP   

   begin_depth   end  ghg   glg           landuse         x         y  \
0          0.0  0.49  0.5  None  graslandBlijvend  141671.0  455122.0   
1          0.0  0.55  0.5  None  graslandBlijvend  141523.0  455073.0   
2          0.0  0.51  0.5  None  graslandBlijvend  141580.0  455167.0   
3          0.0  0.53  0.6  None  graslandBlijvend  141622.0  455034.0   
4          0.0  0.39  0.3  None  graslandBlijvend  141522.0  455275.0   
5          0.0  0.62  0.4  None  graslandBlijvend  141642.0  455278.0   

                geometry  
0  POINT (141671 455122)  
1  POINT (141523 455073)  
2  POINT (141580 455167)  
3  POINT (141622 455034)  
4  POINT (141522 455275)  
5  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)