geolib_plus.bro_xml_cpt package

Submodules

geolib_plus.bro_xml_cpt.bro_utils module

bro_utils :

Functions used in the reading of bro_xml cpts

class geolib_plus.bro_xml_cpt.bro_utils.XMLBroCPTReader

Bases: CptReader

all_single_data_available() bool
are_all_required_data_available(avail_columns: List) None

Determine if all data is available

bro_data: XMLBroFullData = XMLBroFullData(penetrationLength=None, depth=None, elapsedTime=None, coneResistance=None, correctedConeResistance=None, netConeResistance=None, magneticFieldStrengthX=None, magneticFieldStrengthY=None, magneticFieldStrengthZ=None, magneticFieldStrengthTotal=None, electricalConductivity=None, inclinationEW=None, inclinationNS=None, inclinationX=None, inclinationY=None, inclinationResultant=None, magneticInclination=None, magneticDeclination=None, localFriction=None, poreRatio=None, temperature=None, porePressureU1=None, porePressureU2=None, porePressureU3=None, frictionRatio=None, id=None, location_x=None, location_y=None, offset_z=None, predrilled_z=None, a=0.8, vertical_datum=None, local_reference=None, quality_class=None, cone_penetrometer_type=None, cpt_standard=None, result_time=None, dataframe=None)
bro_dataframe_map: Dict[str, str] = {'depth': 'depth', 'electric_cond': 'electricalConductivity', 'friction': 'localFriction', 'friction_nbr': 'frictionRatio', 'inclination_ew': 'inclinationEW', 'inclination_ns': 'inclinationNS', 'inclination_resultant': 'inclinationResultant', 'inclination_x': 'inclinationX', 'inclination_y': 'inclinationY', 'magnetic_declination': 'magneticDeclination', 'magnetic_inclination': 'magneticInclination', 'magnetic_strength_tot': 'magneticFieldStrengthTotal', 'magnetic_strength_x': 'magneticFieldStrengthX', 'magnetic_strength_y': 'magneticFieldStrengthY', 'magnetic_strength_z': 'magneticFieldStrengthZ', 'net_tip': 'netConeResistance', 'penetration_length': 'penetrationLength', 'pore_pressure_u1': 'porePressureU1', 'pore_pressure_u2': 'porePressureU2', 'pore_pressure_u3': 'porePressureU3', 'pore_ratio': 'poreRatio', 'qt': 'correctedConeResistance', 'temperature': 'temperature', 'time': 'elapsedTime', 'tip': 'coneResistance'}
find_availed_data_columns(root: _Element) List

Find which columns are not empty.

get_all_data_from_bro(root: _Element) None

Extract values from bro. From the xml elements.

parse_bro_xml(xml: bytes)

Populates class with xml data. No interpretation of results occurs at this function. This is simply reading the xml. TODO Replace iter by single search as iter can give multiple results

Parameters:

xml – XML bytes

static parse_xml_location(tdata: bytes)

Return x y of location. TODO Don’t user iter :param tdata: XML bytes :returns: list – of x y string coordinates

Will transform coordinates not in EPSG:28992

read_file(filepath: Path) dict
search_values_in_root(root: _Element, search_item: str) str
static transform_dict_fields_to_arrays(dictionary: Dict) Dict
water_measurement_type: List = []
static xml_to_byte_string(fn: Path) bytes

Opens an xml-file and returns a byte-string :param fn: xml file name :return: byte-string of the xml file

class geolib_plus.bro_xml_cpt.bro_utils.XMLBroColumnValues(*, penetrationLength: Optional[Iterable] = None, depth: Optional[Iterable] = None, elapsedTime: Optional[Iterable] = None, coneResistance: Optional[Iterable] = None, correctedConeResistance: Optional[Iterable] = None, netConeResistance: Optional[Iterable] = None, magneticFieldStrengthX: Optional[Iterable] = None, magneticFieldStrengthY: Optional[Iterable] = None, magneticFieldStrengthZ: Optional[Iterable] = None, magneticFieldStrengthTotal: Optional[Iterable] = None, electricalConductivity: Optional[Iterable] = None, inclinationEW: Optional[Iterable] = None, inclinationNS: Optional[Iterable] = None, inclinationX: Optional[Iterable] = None, inclinationY: Optional[Iterable] = None, inclinationResultant: Optional[Iterable] = None, magneticInclination: Optional[Iterable] = None, magneticDeclination: Optional[Iterable] = None, localFriction: Optional[Iterable] = None, poreRatio: Optional[Iterable] = None, temperature: Optional[Iterable] = None, porePressureU1: Optional[Iterable] = None, porePressureU2: Optional[Iterable] = None, porePressureU3: Optional[Iterable] = None, frictionRatio: Optional[Iterable] = None)

Bases: BaseModel

coneResistance: Optional[Iterable]
correctedConeResistance: Optional[Iterable]
depth: Optional[Iterable]
elapsedTime: Optional[Iterable]
electricalConductivity: Optional[Iterable]
frictionRatio: Optional[Iterable]
inclinationEW: Optional[Iterable]
inclinationNS: Optional[Iterable]
inclinationResultant: Optional[Iterable]
inclinationX: Optional[Iterable]
inclinationY: Optional[Iterable]
localFriction: Optional[Iterable]
magneticDeclination: Optional[Iterable]
magneticFieldStrengthTotal: Optional[Iterable]
magneticFieldStrengthX: Optional[Iterable]
magneticFieldStrengthY: Optional[Iterable]
magneticFieldStrengthZ: Optional[Iterable]
magneticInclination: Optional[Iterable]
netConeResistance: Optional[Iterable]
penetrationLength: Optional[Iterable]
porePressureU1: Optional[Iterable]
porePressureU2: Optional[Iterable]
porePressureU3: Optional[Iterable]
poreRatio: Optional[Iterable]
temperature: Optional[Iterable]
class geolib_plus.bro_xml_cpt.bro_utils.XMLBroFullData(*, penetrationLength: Optional[Iterable] = None, depth: Optional[Iterable] = None, elapsedTime: Optional[Iterable] = None, coneResistance: Optional[Iterable] = None, correctedConeResistance: Optional[Iterable] = None, netConeResistance: Optional[Iterable] = None, magneticFieldStrengthX: Optional[Iterable] = None, magneticFieldStrengthY: Optional[Iterable] = None, magneticFieldStrengthZ: Optional[Iterable] = None, magneticFieldStrengthTotal: Optional[Iterable] = None, electricalConductivity: Optional[Iterable] = None, inclinationEW: Optional[Iterable] = None, inclinationNS: Optional[Iterable] = None, inclinationX: Optional[Iterable] = None, inclinationY: Optional[Iterable] = None, inclinationResultant: Optional[Iterable] = None, magneticInclination: Optional[Iterable] = None, magneticDeclination: Optional[Iterable] = None, localFriction: Optional[Iterable] = None, poreRatio: Optional[Iterable] = None, temperature: Optional[Iterable] = None, porePressureU1: Optional[Iterable] = None, porePressureU2: Optional[Iterable] = None, porePressureU3: Optional[Iterable] = None, frictionRatio: Optional[Iterable] = None, id: Optional[str] = None, location_x: Optional[float] = None, location_y: Optional[float] = None, offset_z: Optional[float] = None, predrilled_z: Optional[float] = None, a: Optional[float] = 0.8, vertical_datum: Optional[str] = None, local_reference: Optional[str] = None, quality_class: Optional[str] = None, cone_penetrometer_type: Optional[str] = None, cpt_standard: Optional[str] = None, result_time: Optional[str] = None, dataframe: Optional[DataFrame] = None)

Bases: XMLBroColumnValues

a: Optional[float]
property columns_string_list
cone_penetrometer_type: Optional[str]
cpt_standard: Optional[str]
dataframe: Optional[DataFrame]
id: Optional[str]
local_reference: Optional[str]
location_x: Optional[float]
location_y: Optional[float]
offset_z: Optional[float]
predrilled_z: Optional[float]
quality_class: Optional[str]
result_time: Optional[str]
vertical_datum: Optional[str]

geolib_plus.bro_xml_cpt.bro_xml_cpt module

class geolib_plus.bro_xml_cpt.bro_xml_cpt.BroXmlCpt(*, penetration_length: ~typing.Optional[~typing.Iterable] = None, depth: ~typing.Optional[~typing.Iterable] = None, coordinates: ~typing.Optional[~typing.List] = None, local_reference_level: ~typing.Optional[float] = None, depth_to_reference: ~typing.Optional[~typing.Iterable] = None, tip: ~typing.Optional[~typing.Iterable] = None, friction: ~typing.Optional[~typing.Iterable] = None, friction_nbr: ~typing.Optional[~typing.Iterable] = None, a: ~typing.Optional[float] = None, name: ~typing.Optional[str] = None, rho: ~typing.Optional[~typing.Iterable] = None, total_stress: ~typing.Optional[~typing.Iterable] = None, effective_stress: ~typing.Optional[~typing.Iterable] = None, pwp: ~typing.Optional[~typing.Iterable] = None, qt: ~typing.Optional[~typing.Iterable] = None, Qtn: ~typing.Optional[~typing.Iterable] = None, Qtncs: ~typing.Optional[~typing.Iterable] = None, Fr: ~typing.Optional[~typing.Iterable] = None, IC: ~typing.Optional[~typing.Iterable] = None, n: ~typing.Optional[~typing.Iterable] = None, vs: ~typing.Optional[~typing.Iterable] = None, G0: ~typing.Optional[~typing.Iterable] = None, E0: ~typing.Optional[~typing.Iterable] = None, permeability: ~typing.Optional[~typing.Iterable] = None, poisson: ~typing.Optional[~typing.Iterable] = None, damping: ~typing.Optional[~typing.Iterable] = None, relative_density: ~typing.Optional[~typing.Iterable] = None, psi: ~typing.Optional[~typing.Iterable] = None, pore_pressure_u1: ~typing.Optional[~typing.Iterable] = None, pore_pressure_u2: ~typing.Optional[~typing.Iterable] = None, pore_pressure_u3: ~typing.Optional[~typing.Iterable] = None, water: ~typing.Optional[~typing.Iterable] = None, lithology: ~typing.Optional[~typing.Iterable] = None, litho_points: ~typing.Optional[~typing.Iterable] = None, lithology_merged: ~typing.Optional[~typing.Iterable] = None, depth_merged: ~typing.Optional[~typing.Iterable] = None, index_merged: ~typing.Optional[~typing.Iterable] = None, vertical_datum: ~typing.Optional[str] = None, local_reference: ~typing.Optional[str] = None, inclination_x: ~typing.Optional[~typing.Iterable] = None, inclination_y: ~typing.Optional[~typing.Iterable] = None, inclination_ns: ~typing.Optional[~typing.Iterable] = None, inclination_ew: ~typing.Optional[~typing.Iterable] = None, inclination_resultant: ~typing.Optional[~typing.Iterable] = None, time: ~typing.Optional[~typing.Iterable] = None, net_tip: ~typing.Optional[~typing.Iterable] = None, pore_ratio: ~typing.Optional[~typing.Iterable] = None, tip_nbr: ~typing.Optional[~typing.Iterable] = None, unit_weight_measured: ~typing.Optional[~typing.Iterable] = None, pwp_ini: ~typing.Optional[~typing.Iterable] = None, total_pressure_measured: ~typing.Optional[~typing.Iterable] = None, effective_pressure_measured: ~typing.Optional[~typing.Iterable] = None, electric_cond: ~typing.Optional[~typing.Iterable] = None, magnetic_strength_x: ~typing.Optional[~typing.Iterable] = None, magnetic_strength_y: ~typing.Optional[~typing.Iterable] = None, magnetic_strength_z: ~typing.Optional[~typing.Iterable] = None, magnetic_strength_tot: ~typing.Optional[~typing.Iterable] = None, magnetic_inclination: ~typing.Optional[~typing.Iterable] = None, magnetic_declination: ~typing.Optional[~typing.Iterable] = None, temperature: ~typing.Optional[~typing.Iterable] = None, predrilled_z: ~typing.Optional[float] = None, undefined_depth: ~typing.Optional[float] = None, cpt_standard: ~typing.Optional[str] = None, quality_class: ~typing.Optional[str] = None, cpt_type: ~typing.Optional[str] = None, result_time: ~typing.Optional[str] = None, water_measurement_type: ~typing.Optional[str] = None, litho_NEN: ~typing.Optional[~typing.Iterable] = None, E_NEN: ~typing.Optional[~typing.Iterable] = None, cohesion_NEN: ~typing.Optional[~typing.Iterable] = None, fr_angle_NEN: ~typing.Optional[~typing.Iterable] = None, plot_settings: ~geolib_plus.plot_settings.PlotSettings = <geolib_plus.plot_settings.PlotSettings object>, g: float = 9.81, Pa: float = 100.0)

Bases: AbstractCPT

Class that contains gets the reader and contains pre-processing functions. That can be used to modify the raw data.

drop_duplicate_depth_values()

Updates fields by removing penetration_length that are duplicate. This means that all the properties in __list_of_array_values will be updated.

classmethod get_cpt_reader() CptReader
has_points_with_error() bool

A routine which checks whether the data is free of points with error.

Returns:

If the gef cpt data is free of error flags

remove_points_with_error()

Updates fields by removing depths that contain nan values. This means that all the properties in __list_of_array_values will be updated.

geolib_plus.bro_xml_cpt.validate_bro module

class geolib_plus.bro_xml_cpt.validate_bro.HTTPSResolver

Bases: Resolver

resolve(self, system_url, public_id, context)

Override this method to resolve an external source by system_url and public_id. The third argument is an opaque context object.

Return the result of one of the resolve_*() methods.

class geolib_plus.bro_xml_cpt.validate_bro.ValidatePreProcessing

Bases: object

validate_length_and_samples_cpt(cpt: AbstractCPT, minimum_length: int = 5, minimum_samples: int = 50)

Performs initial checks regarding the availability of data in the cpt. Returns a string that contains all the error messages.

geolib_plus.bro_xml_cpt.validate_bro.validate_bro(schema_url, bro_xml_file)
geolib_plus.bro_xml_cpt.validate_bro.validate_bro_cpt(bro_xml_file)

Module contents