reVX.setbacks.setbacks_cli.compute_setbacks
- compute_setbacks(excl_fpath, node_feature_type, node_file_path, node_multiplier, out_dir, tag, hub_height=None, rotor_diameter=None, base_setback_dist=None, regulations_fpath=None, weights_calculation_upscale_factor=None, replace=False, hsds=False, out_layers=None, feature_specs=None, max_workers=None)[source]
Compute Setbacks.
Setbacks can be computed for a specific turbine (hub height and rotor diameter) or more generally using a base setback distance.
Setbacks can be computed either locally (on a per-county basis with given distances/multipliers) or everywhere under a generic setback multiplier assumption applied to either the turbine tip-height or the base setback distance. These two methods can also be applied simultaneously - local setbacks are computed where given (via a the regulation file input) and a generic multiplier applied to the turbine tip-height or the base setback distance everywhere else.
Partial inclusions can be computed instead of boolean exclusions, both of which can be fed directly into
reV
.- Parameters:
excl_fpath (str) – Path to HDF5 file containing the county FIPS layer (should be called
cnty_fips
) used to match local regulations inregulations_fpath
to counties on the grid. No data will be written to this file unless explicitly requested via theout_layers
input.node_feature_type (str) – Name of the feature type being run. Must be a key of the
SETBACKS
dictionary.node_file_path (str) – Path to input feature file. This file MUST be a GeoPackage (and have the “.gpkg” extension).
node_multiplier (int | float | str | None, optional) – A setback multiplier to use if regulations are not supplied. This multiplier will be applied to the
base_setback_dist
to calculate the setback. If supplied along withregulations_fpath
, this input will be used to apply a setback to all counties not listed in the regulations file.out_dir (str) – Path to output directory where output file should be written.
tag (str) – Tag to add to each output file to make it unique (i.e. not clash with output files from other nodes).
hub_height (int | float, optional) – Turbine hub height (m), used along with rotor diameter to compute the blade tip-height which is used as the base setback distance for generic/local regulations. If this input is specified,
rotor_diameter
must also be given, andbase_setback_dist
must be set to None, otherwise an error in thrown. The base setback distance is scaled by generic/local multipliers (provided either via theregulations_fpath
csv, or thegeneric_setback_multiplier
input, or both) before setbacks are computed. By default,None
.rotor_diameter (int | float, optional) – Turbine rotor diameter (m), used along with hub height to compute the blade tip-height, which is used as the base setback distance for generic/local regulations. If this input is specified,
hub_height
must also be given, andbase_setback_dist
must be set to None, otherwise an error in thrown. The base setback distance is scaled by generic/local multipliers (provided either via theregulations_fpath
csv, or thegeneric_setback_multiplier
input, or both) before setbacks are computed. By default,None
.base_setback_dist (int | float, optional) – Base setback distance (m). This value is used as the base setback distance for generic/local regulations. If this input is specified, both
hub_height``and ``rotor_diameter
must be set to None, otherwise an error in thrown. The base setback distance is scaled by generic/local multipliers (provided either via theregulations_fpath
csv, or thegeneric_setback_multiplier
input, or both) before setbacks are computed. By default,None
.regulations_fpath (str, optional) – Path to regulations
.csv
or.gpkg
file. At a minimum, this file must contain the following columns:Feature Type
: Contains labels for the type of setback that each row represents. This should be a “feature_type” label that can be found in theSETBACK_SPECS
dictionary (e.g."structures"
,"roads"
,"water"
, etc.), unless you have created your own setback calculator usingsetbacks_calculator()
, in which case this label can match the feature_type input you used for that function call.Feature Subtype
: Contains labels for feature subtypes. The feature subtypes are only used for down-selecting the local regulations that should be applied for a particular feature, so often you can leave this blank or set it toNone
. If you do specify this value, it should be a “feature_subtypes_to_exclude” label that can be found in theSETBACK_SPECS
dictionary, unless you have created your own setback calculator usingsetbacks_calculator()
, in which case this label can match the feature_subtypes_to_exclude input you used for that function call.Value Type
: Specifies wether the value is a multiplier or static height. SeeSetbackRegulations
(if using onlybase_setback_dist
input) orWindSetbackRegulations
(if usinghub_height
+rotor_diameter
input) for more info.Value
: Numeric value of the setback or multiplier.FIPS
: Specifies a unique 5-digit code for each county (this can be an integer - no leading zeros required). This is used along side thecnty_fips
layer in the excl_fpath to match the county regulations to the county’s spatial extent.
This option overrides the
generic_setback_multiplier
input, but only for counties that are listed in the input CSV file. This means bothregulations_fpath
andgeneric_setback_multiplier
can be specified simultaneously in order to compute setbacks driven by local ordinance where given + a generic multiplier applied everywhere else. By default,None
, which does not compute any local setbacks.weights_calculation_upscale_factor (int, optional) – Optional input to specify partial setback calculations. If this value is an int > 1, the output will be a layer with inclusion weight values (floats ranging from 0 to 1). Note that this is backwards w.r.t the typical output of exclusion integer values (1 for excluded, 0 otherwise). Values <= 1 will still return a standard exclusion mask. For example, a cell that was previously excluded with a boolean mask (value of 1) may instead be converted to an inclusion weight value of 0.75, meaning that 75% of the area corresponding to that point should be included (i.e. the exclusion feature only intersected a small portion - 25% - of the cell). This percentage inclusion value is calculated by upscaling the output array using this input value, rasterizing the exclusion features onto it, and counting the number of resulting sub-cells excluded by the feature. For example, setting the value to
3
would split each output cell into nine sub-cells - 3 divisions in each dimension. After the feature is rasterized on this high-resolution sub-grid, the area of the non-excluded sub-cells is totaled and divided by the area of the original cell to obtain the final inclusion percentage. Therefore, a larger upscale factor results in more accurate percentage values. IfNone
(or a value <= 1), this process is skipped and the output is a boolean exclusion mask. By defaultNone
.replace (bool, optional) – Flag to replace the output GeoTIFF if it already exists. By default,
False
.hsds (bool, optional) – Boolean flag to use
h5pyd
to handle HDF5 “files” hosted on AWS behind HSDS. By default,False
.out_layers (dict, optional) – Dictionary mapping the input feature file names (with extension) to names of layers under which exclusions should be saved in the
excl_fpath
HDF5 file. IfNone
or empty dictionary, no layers are saved to the HDF5 file. By default,None
.feature_specs (dict, optional) – Optional dictionary specifying new feature setback calculators or updates to existing ones. The keys of this dictionary should be names of the features for which a specification is being provided. If the name is already a key in
SETBACK_SPECS
, the corresponding specifications wil be updated for that feature. Otherwise, the name will represent a new feature type, which can be used as a key in thefeatures
input. The values of the feature-type keys should be dictionaries, where the keys are parameters of thesetbacks_calculator()
function. Required parameters in that function are required keys of these dictionaries. Values should be the updated value. For example, the inputfeature_specs: { "water": { "num_features_per_worker": 500 }, "oil_and_gas_pipelines": { "feature_type": "oil and gas", "feature_filter_type": "clip" } }
would update the existing
"water"
setbacks calculator to compute 500 features per worker at a time and create a new"oil_and_gas_pipelines"
feature that looks for the string"oil and gas"
in the regulations file and clips the feature to a county before calculating a setback. Note that even though"oil_and_gas_pipelines"
is not a default feature supported byreVX
, you can now use it in thefeatures
input. This can also be helpful if you need to compute the same type of setback for multiple different input datasets. For example, the inputfeature_specs: { "water-nwi": { "feature_type": "water", "buffer_type": "default", "feature_filter_type": "clip", "num_features_per_worker": 700, }, "water-nhd": { "feature_type": "water", "buffer_type": "default", "feature_filter_type": "clip", "num_features_per_worker": 10_000, } }
would allow you to set up your
features
input like so:features: { "water-nwi": "/path/to/nwi/*.gpkg", "water-nhd": "/path/to/nhd/*.gpkg", }
By default,
None
, which does not add any new setback calculators (the default ones defined inSETBACK_SPECS
are still available).max_workers (int, optional) – Number of workers to use for setback exclusion computation. If this value is 1, the computation runs in serial. If this value is > 1, the computation runs in parallel with that many workers. If
None
, the computation runs in parallel on all available cores. By default,None
.
- Returns:
str – Path to output GeoTIFF file containing setback exclusion data.