Structuring data and generating caverns#
Functions to structure data and generate caverns with constraints.
References#
- h2ss.functions.net_to_gross(dat_xr, slope=0.0009251759226446605, intercept=0.2616769604617021, max_ntg=0.75)[source]#
Estimate the net-to-gross for a given halite thickness.
Parameters#
- dat_xrxarray.Dataset
Xarray dataset of the halite data
- slopefloat
Slope of the net-to-gross linear regression
- interceptfloat
y-intercept of the net-to-gross linear regression
- max_ntgfloat
Maximum allowed value for the net-to-gross
Returns#
- xarray.Dataset
Xarray dataset of the halite with net-to-gross information
- h2ss.functions.zones_of_interest(dat_xr, constraints, roof_thickness=80, floor_thickness=10, max_ntg=0.75)[source]#
Generate zones of interest by applying thickness and depth constraints.
Parameters#
- dat_xrxarray.Dataset
Xarray dataset of the halite data
- constraintsdict[str, float]
Dictionary containing the following:
"net_height"
: net cavern height [m];"min_depth"
: minimum cavern depth [m];"max_depth"
: maximum cavern depth [m]- roof_thicknessfloat
Salt roof thickness [m]
- floor_thicknessfloat
Minimum salt floor thickness [m]
- max_ntgfloat
Maximum allowed value for the net-to-gross
Returns#
- tuple[geopandas.GeoDataFrame, xarray.Dataset]
A (multi)polygon geodataframe of the zones of interest and an Xarray dataset of the zones of interest
- h2ss.functions.generate_caverns_square_grid(dat_extent, zones_df, diameter=85, separation=340)[source]#
Generate salt caverns using a regular square grid.
Parameters#
- dat_extentgeopandas.GeoSeries
Extent of the data
- zones_dfgeopandas.GeoDataFrame
Zones of interest
- diameterfloat
Diameter of the cavern [m]
- separationfloat
Cavern separation distance [m]
Returns#
- geopandas.GeoDataFrame
A polygon geodataframe of potential caverns in the zone of interest
Notes#
Gridding method based on [1].
- h2ss.functions.hexgrid_init(dat_extent, separation)[source]#
Initialise variables for
generate_caverns_hexagonal_grid
.Parameters#
- dat_extentgeopandas.GeoSeries
Extent of the data
- separationfloat
Cavern separation distance [m]
Returns#
- tuple[float, list[int], list[int]]
a, cols, and rows
- h2ss.functions.generate_caverns_hexagonal_grid(dat_extent, zones_df, diameter=85, separation=340)[source]#
Generate caverns in a regular hexagonal grid.
Parameters#
- dat_extentgeopandas.GeoSeries
Extent of the data
- zones_dfgeopandas.GeoDataFrame
Zones of interest
- diameterfloat
Diameter of the cavern [m]
- separationfloat
Cavern separation distance [m]
Returns#
- geopandas.GeoDataFrame
A polygon geodataframe of potential caverns
Notes#
The close-packed hexagonal grid configuration was proposed by [2]; this configuration provides around 15% more caverns compared to a square grid configuration. Hexagonal gridding method based on [3].
- h2ss.functions.cavern_dataframe(dat_zone, cavern_df, depths, roof_thickness=80)[source]#
Merge halite data for each cavern location and create a dataframe.
Parameters#
- dat_zonexarray.Dataset
Xarray dataset for the zone of interest
- cavern_dfgeopandas.GeoDataFrame
Geodataframe of caverns within the zone of interest
- depthsdict[str, float]
Dictionary of cavern top depth ranges [m] for labelling:
"min"
: minimum depth;"min_opt"
: minimum optimal depth;"max_opt"
: maximum optimal depth;"max"
: maximum depth- roof_thicknessfloat
Salt roof thickness [m]
Returns#
- geopandas.GeoDataFrame
The cavern geodataframe with halite height and depth data for only the thickest halite layer at each given point
- h2ss.functions.label_caverns(cavern_df, depths, heights=None, roof_thickness=80, floor_thickness=10)[source]#
Label cavern dataframe by height and depth.
Parameters#
- cavern_dfgeopandas.GeoDataFrame
Dataframe of potential caverns
- depthsdict[str, float]
Dictionary of cavern top depth ranges [m] for labelling:
"min"
: minimum depth;"min_opt"
: minimum optimal depth;"max_opt"
: maximum optimal depth;"max"
: maximum depth- heightslist[float] or None
List of fixed caverns heights [m] for labelling; if
None
, the actual height is used- roof_thicknessfloat
Salt roof thickness [m]
- floor_thicknessfloat
Minimum salt floor thickness [m]
Returns#
- geopandas.GeoDataFrame
A dataframe of potential caverns labelled by cavern height and top depth ranges
- h2ss.functions.constraint_halite_edge(dat_xr, buffer=255)[source]#
The edge of each halite member as a constraint.
Parameters#
- dat_xrxarray.Dataset
Xarray dataset of the halite data
- bufferfloat
Buffer [m]
Returns#
- dict[str, geopandas.GeoDataFrame]
Dictionary of GeoPandas geodataframes of the halite edge constraint for each halite member
Notes#
Set the buffer to 3 times the cavern diameter, i.e. the pillar width.
- h2ss.functions.constraint_exploration_well(data_path, buffer=500)[source]#
Read exploration well data and generate constraint.
Parameters#
- data_pathstr
Path to the Zip file
- bufferfloat
Buffer [m]
Returns#
- tuple[geopandas.GeoDataFrame, geopandas.GeoDataFrame]
Geodataframes of the dataset and buffer
Notes#
500 m buffer - suggested in the draft OREDP II p. 108 [4].
- h2ss.functions.constraint_wind_farm(data_path)[source]#
Read data for wind farms.
Parameters#
- data_pathstr
Path to the Zip file
- dat_extentgeopandas.GeoSeries
Extent of the data
Returns#
- geopandas.GeoDataFrame
Geodataframe of the dataset
Notes#
The shapes are used as is without a buffer - suggested for renewable energy test site areas in the draft OREDP II p. 109 [4].
- h2ss.functions.constraint_shipping_routes(data_path, dat_extent, buffer=1852)[source]#
Read frequent shipping route data and generate constraint.
Parameters#
- data_pathstr
Path to the Zip file
- dat_extentgeopandas.GeoSeries
Extent of the data
- bufferfloat
Buffer [m]
Returns#
- tuple[geopandas.GeoDataFrame, geopandas.GeoDataFrame]
Geodataframes of the dataset and buffer
Notes#
1 NM (nautical mile) buffer - suggested in the draft OREDP II p. 108 [4]. 1 NM is equivalent to 1,852 m [5].
- h2ss.functions.constraint_shipwrecks(data_path, dat_extent, buffer=100)[source]#
Read shipwreck data and generate constraint.
Parameters#
- data_pathstr
Path to the Zip file
- dat_extentgeopandas.GeoSeries
Extent of the data
- bufferfloat
Buffer [m]
Returns#
- tuple[geopandas.GeoDataFrame, geopandas.GeoDataFrame]
Geodataframes of the dataset and buffer
Notes#
Archaeological Exclusion Zones recommendation - 100 m buffer [6].
- h2ss.functions.constraint_subsea_cables(data_path, dat_extent, buffer=750)[source]#
Read subsea cable data and generate constraint.
Parameters#
- data_pathstr
Path to the GPKG file
- dat_extentgeopandas.GeoSeries
Extent of the data
- bufferfloat
Buffer [m]
Returns#
- tuple[geopandas.GeoDataFrame, geopandas.GeoDataFrame]
Geodataframes of the dataset and buffer
Notes#
750 m buffer - suggested in the draft OREDP II p. 109-111 [4].
- h2ss.functions.exclude_constraint(cavern_df, cavern_all, exclusions, key)[source]#
Exclude constraint by their dictionary key.
Parameters#
- cavern_dfgeopandas.GeoDataFrame
Dataframe of available caverns
- cavern_allgeopandas.GeoDataFrame
Dataframe of all caverns, i.e. available and excluded
- exclusionsdict[str, geopandas.GeoDataFrame]
Dictionary of exclusions data
- keystr
Key for the constraint in the dictionary; one of the following:
"shipping"
: frequent shipping routes;"cables"
: subsea cables;"wind_farms"
: offshore wind farms;"wells"
: exporation wells;"shipwrecks"
: shipwrecks
Returns#
- geopandas.GeoDataFrame
Dataframe of available caverns
- h2ss.functions.generate_caverns_with_constraints(cavern_df, exclusions)[source]#
Add constraints to cavern configuration.
Parameters#
- cavern_dfgeopandas.GeoDataFrame
Dataframe of available caverns
- exclusionsdict[str, geopandas.GeoDataFrame]
Dictionary of exclusions data;
"edge"
must be present in the dictionary, but if any other of the following keys do not exist in the dictionary, the exclusion will be skipped:"edge"
: halite edge, dict[str, geopandas.GeoDataFrame];"shipping"
: frequent shipping routes;"cables"
: subsea cables;"wind_farms"
: offshore wind farms;"wells"
: exporation wells;"shipwrecks"
: shipwrecks
Returns#
- tuple[geopandas.GeoDataFrame, geopandas.GeoDataFrame]
Dataframe of available and excluded caverns
- h2ss.functions.read_weibull_data(data_path_weibull, data_path_wind_farms)[source]#
Extract mean, max, and min Weibull parameters of wind speeds.
Parameters#
- data_path_weibullstr
Path to the Weibull parameter data Zip file
- data_path_wind_farmsstr
Path to the wind farm data Zip file
Returns#
- pandas.DataFrame
Dataframe of k and C values for each wind farm
Notes#
Data extracted for each wind farm in the area of interest, i.e. Kish Basin: Codling, Dublin Array, and North Irish Sea Array.