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 |
(BRO) Geological boreholes from xml |
||
BHR-GT |
(BRO) Geotechnical boreholes from xml |
||
BHR-P |
(BRO) Pedological boreholes from xml |
||
CPT |
(BRO) Cone Penetration Tests from xml or gef |
||
SFR |
(BRO) Pedological soilprofile descriptions from xml |
||
BRO REST-API |
BRO BHR-G, BHR-GT, BHR-P, CPT or SFR objects |
||
GeoST borehole parquet or csv |
GeoST native format. Result of to_parquet or to_csv exports |
||
GeoST CPT parquet or csv |
GeoST native format. Result of to_parquet or to_csv exports |
||
NLOG excel export |
Reader for NLOG deep cores, see here |
||
UU LLG cores |
Reader for csv distribution of Utrecht University student boreholes |
||
BORIS XML |
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 |
Generic reader for a voxelmodel presented in NetCDF format (readable as xarray dataset) |
||
GeoTOP NetCDF |
Reader for GeoTOP NetCDF distribution |
||
GeoTOP OpenDAP |
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)