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 |
(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'>
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)