map2loop.thickness_calculator.StructuralPoint#
- class map2loop.thickness_calculator.StructuralPoint#
Bases:
ThicknessCalculator
This class is a subclass of the ThicknessCalculator abstract base class. It implements the thickness calculation using a deterministic workflow based on stratigraphic measurements.
- thickness_calculator_label#
A string that stores the label of the thickness calculator.
- Type:
str
- For this class, it is "StrucuturalPoint".
- compute(units
pandas.DataFrame, stratigraphic_order: list, basal_contacts: pandas.DataFrame, map_data: MapData)
- -> pandas.DataFrame
Calculates the thickness in meters for each unit in the stratigraphic column.
Initialiser of for ThicknessCalculator
- __init__()#
Initialiser of for ThicknessCalculator
Methods
__init__
()Initialiser of for ThicknessCalculator
compute
(units, stratigraphic_order, ...)Method overview: - define perpendicular line, with strike perpendicular to the stratigraphic measurement's strike - find intersection points between the perpendicular line and the geological contacts - Perform the following checks: 1) is there more than one intersection? 2) are the intersections between two different lithologies, and if so, grab the neighboring lithologies only. 3) is the distance between the two intersections less than half the map dimensions? (avoids incorrect intersections to be picked) 4) is the stratigraphic measurement strike within 30 degrees of the strike of the geological contacts?.
type
()Getter for subclass type label
- compute(units: DataFrame, stratigraphic_order: list, basal_contacts: GeoDataFrame, structure_data: DataFrame, map_data: MapData) DataFrame #
Method overview: - define perpendicular line, with strike perpendicular to the stratigraphic measurement’s strike - find intersection points between the perpendicular line and the geological contacts - Perform the following checks:
is there more than one intersection?
are the intersections between two different lithologies, and if so, grab the neighboring lithologies only.
is the distance between the two intersections less than half the map dimensions? (avoids incorrect intersections to be picked)
is the stratigraphic measurement strike within 30 degrees of the strike of the geological contacts?
once the intersections pass the checks, calculate the thickness of the unit at the intersection points, using the general formula L*sin(dip)
Attributes:#
units (pandas.DataFrame): the data frame of units to add thicknesses to stratigraphic_order (list): a list of unit names sorted from youngest to oldest basal_contacts (geopandas.GeoDataFrame): basal contact geo data with locations and unit names of the contacts (columns must contain [“ID”,”basal_unit”,”type”,”geometry”]) structure_data (pandas.DataFrame): sampled structural data map_data (map2loop.MapData): a catchall so that access to all map data is available
Returns:#
pandas.DataFrame: units dataframe with added thickness columns: “ThicknessMedian” is the median thickness of the unit, “ThicknessStdDev” is the standard deviation of the thickness of the unit
Note:#
This method is highly dependent on the existence of stratigraphic measurements that follow the strike of the geological contacts. If an unit does not contain a stratigraphic measurement, the thickness will not be calculated. Interpolated Structure may be used for such situations and future versions of map2loop will attempt to solve for this. If the thickness is not calculated for a given unit, the assigned thickness will be -1. For the bottom and top units of the stratigraphic sequence, the assigned thickness will also be -1.
- type()#
Getter for subclass type label
- Returns:
str – Name of subclass