Source code for bromodels.GTM.GeoTop

from typing import Union

import pandas as pd
import xarray

from .data import GTM_LITHO_CLASS_table, GTM_STR_UNIT_table

Number = Union[float, int]

url = "http://dinodata.nl/opendap/GeoTOP/geotop.nc"


[docs]def GeoTopDomain( west: Number = 118421, south: Number = 484233, east: Number = 121256, north: Number = 486076, bottom: Number = -20, ) -> xarray.Dataset: """ Extract a Dataset based on a domain (west, south, east, north, bottom) of GeoTop. Parameters ---------- west : int, float, optional Coordinate in RD new (EPSG:28992) south : int, float, optional Coordinate in RD new (EPSG:28992) east : int, float, optional Coordinate in RD new (EPSG:28992) north : int, float, optional Coordinate in RD new (EPSG:28992) bottom : int, float, optional Bottom of the domain [m NAP] """ if west > east: raise ValueError("west coordinate is larger than east coordinate") if south > north: raise ValueError("south coordinate is larger than north coordinate") ds = xarray.open_dataset(url) ds = ds.sortby("z", ascending=False) ds = ds.transpose() ds = ds.sel(x=slice(west, east), y=slice(south, north), z=slice(None, bottom)) ds = ds.dropna("z", how="all", subset=["lithok", "strat"]) ds.load() ds = ds.sortby("y", ascending=False) return ds
[docs]def GeoTopColumn(x: Number = 134464, y: Number = 454423) -> xarray.Dataset: """ Extract a Dataset based on a point (x, y) location in GeoTop. Parameters ---------- x : int, float, optional Coordinate in RD new (EPSG:28992) y : int, float, optional Coordinate in RD new (EPSG:28992) Returns ------- xarray.Dataset """ ds = xarray.open_dataset(url) ds = ds.sel(x=x, y=y, method="nearest") ds = ds.dropna("z", how="all", subset=["lithok", "strat"]) ds = ds.sortby("z", ascending=False) return ds
[docs]def GeoTopPoint( x: Number = 134464, y: Number = 454423, z: Number = -10 ) -> xarray.Dataset: """ Extract a Dataset based on a point (x, y, z) location in GeoTop. Parameters ---------- x : int, float, optional Coordinate in RD new (EPSG:28992) y : int, float, optional Coordinate in RD new (EPSG:28992) z : int, float, optional Depth in m NAP Returns ------- xarray.Dataset """ ds = xarray.open_dataset(url) ds = ds.sel(x=x, y=y, z=z, method="nearest") return ds
[docs]def geotop_stratigraphic_unit() -> pd.DataFrame: """ Read lookup DataFrame that relates stratigraphic values to description. """ # Get lookup DataFrame to connect geological units codes to numbers return pd.DataFrame(GTM_STR_UNIT_table)
[docs]def geotop_lithology_class() -> pd.DataFrame: """ Read lookup DataFrame that relates lithology values to description. """ # Get lookup DataFrame to connect geological units codes to numbers return pd.DataFrame(GTM_LITHO_CLASS_table)