s1tiling.libs.otbwrappers.ComputeGroundAndSatPositionsOnDEM
- class s1tiling.libs.otbwrappers.ComputeGroundAndSatPositionsOnDEM(cfg: Configuration)[source]
Bases:
OTBStepFactory
Factory that prepares steps that run SARDEMProjection as described in Normals computation documentation to obtain the XYZ ECEF coordinates of the ground and of the satellite positions associated to the pixel from input the heigth file.
SARDEMProjection application fill a multi-bands image anchored on the footprint of the input DEM image. In each pixel in the DEM/output image, we store the XYZ ECEF coordinate of the ground point (associated to the pixel), and the XYZ coordinates of the satellite position (associated to the pixel…)
Requires the following information from the configuration object:
ram_per_process
dem_db_filepath – to fill-up image metadata
dem_field_ids – to fill-up image metadata
dem_main_field_id – to fill-up image metadata
tmp_dir – useless in the in-memory nomical case
fname_fmt – optional key: ground_and_sat_s2, useless in the in-memory nominal case
nodata.LIA – optional
Requires the following information from the metadata dictionary
basename
input filename
output filename
It also requires
$OTB_GEOID_FILE
to be set in order to ignore any DEM information already registered in dask worker (through OrthoRectification for instance) and only use the Geoid.New methods & Specialized methods
__init__
Constructor.
_get_canonical_input
Helper function to retrieve the canonical input associated to a list of inputs.
_get_inputs
Extract the last inputs to use at the current level from all previous products seens in the pipeline.
_update_filename_meta_post_hook
Register
accept_as_compatible_input
hook fors1tiling.libs.meta.accept_as_compatible_input()
._update_filename_meta_pre_hook
Injects the
reduce_inputs_insar()
hook in step metadata, and provide names clear from polar related information.Computes dem information and adds them to the meta structure, to be used later to fill-in the image metadata.
Returns the parameters to use with SARDEMProjection OTB application to project S1 geometry onto DEM tiles.
Filters which insar input will be kept.
Return the requirement context that permits to fix missing requirements.
Set SARDEMProjection related information that'll get carried around.
Methods inherited from parent
Accessor to where output files will be stored in case their production is required (i.e. not in-memory processing).
Instanciates the step related to the current
StepFactory
, that consumes results from the previous input steps.Duplicates, completes, and returns, the meta dictionary with specific information for the current factory regarding tasks analysis.
Directory used to store temporary files before they are renamed into their final version.
Returns the names of typical result files in case their production is required (i.e. not in-memory processing).
Permits to have steps force the output pixel data.
This specialization of
StepFactory.build_step_output_tmp_filename()
will automatically insert.tmp
before the filename extension.This specialization of
check_requirements()
checks whether the related OTB application can correctly be executed from S1Tiling.Attributes and properties
OTB Application property.
Property image_description, used to fill
TIFFTAG_IMAGEDESCRIPTION
Step Name property.
Name of the "in" parameter used by the OTB Application.
Name of the "out" parameter used by the OTB Application.
Property ram_per_process
- _do_create_actual_step(execution_parameters: Dict, input_step: AbstractStep, meta: Dict) AbstractStep
Instanciates the step related to the current
StepFactory
, that consumes results from the previous input step.We expect the step metadata and the GDAL image metadata to have been updated.
1. Steps that wrap an OTB application will instanciate this application object, and:
either pipe the new application to the one from the input step if it wasn’t a first step
or fill in the “in” parameter of the application with the
out_filename()
of the input step.
1-bis. in case the new step isn’t related to an OTB application, nothing specific is done, we’ll just return an
AbstractStep
- build_step_output_filename(meta: Dict) str | List[str]
Returns the names of typical result files in case their production is required (i.e. not in-memory processing).
This specialization uses
gen_output_filename
naming policy parameter to build the output filename. See the Available naming policies.
- build_step_output_tmp_filename(meta: Dict) str | List[str]
This specialization of
StepFactory.build_step_output_tmp_filename()
will automatically insert.tmp
before the filename extension.
- check_requirements() Tuple[str, str] | None
This specialization of
check_requirements()
checks whether the related OTB application can correctly be executed from S1Tiling.- Returns:
A pair of the message indicating what is required, and some context how to fix it – by default: install OTB!
- Returns:
None
otherwise.
- complete_meta(meta: Dict, all_inputs: List[Dict[str, AbstractStep]]) Dict [source]
Computes dem information and adds them to the meta structure, to be used later to fill-in the image metadata.
Also register temporary files from previous step for removal.
- create_step(execution_parameters: Dict, previous_steps: List[List[Dict[str, AbstractStep]]]) AbstractStep
Instanciates the step related to the current
StepFactory
, that consumes results from the previous input steps.1. This methods starts by updating metadata information through:
complete_meta()
on theinput
metadatas.2. Then it updates the GDAL image metadata information that will need to be written in the pipeline output image through
update_image_metadata()
.3. Eventually the actual step creation method is executed according to the exact kind of step factory (
ExecutableStepFactory
,AnyProducerStepFactory
,OTBStepFactory
) through the variation point_do_create_actual_step()
.While this method is not meant to be overridden, for simplity it will be in
Store
factory.Note: it’s possible to override this method to return no step (
None
). In that case, no OTB Application would be registered in the actualPipeline
.
- output_directory(meta: Dict) str
Accessor to where output files will be stored in case their production is required (i.e. not in-memory processing)
This property is built from
gen_output_dir
construction parameter. Typical values for the parameter are:os.path.join(cfg.output_preprocess, '{tile_name}'),
wheretile_name
is looked intometa
parameterNone
, in that case the result will be the same astmp_directory()
. This case will make sense for steps that don’t produce required products
- property param_in: str
Name of the “in” parameter used by the OTB Application. Default is likely to be “in”, while some applications use “io.in”, often “il” for list of files…
- property param_out: str
Name of the “out” parameter used by the OTB Application. Default is likely to be “out”, whie some applications use “io.out”.
- parameters(meta: Dict) Dict[str, str | int | float | bool | List[str]] [source]
Returns the parameters to use with SARDEMProjection OTB application to project S1 geometry onto DEM tiles.
- property ram_per_process
Property ram_per_process
- static reduce_inputs(inputs: List[Dict]) List [source]
Filters which insar input will be kept.
Given several (usually 2 is the maximum) possible input S1 files (“insar” input channels), select and return the one that maximize its time coverage with the current S2 destination tile.
Actually, this function returns the first S1 image that time-covers the whole S2 tile. The S1 images are searched in reverse order of their footprint-coverage.
- requirement_context() str [source]
Return the requirement context that permits to fix missing requirements. SARDEMProjection2 comes from normlim_sigma0.
- tmp_directory(meta) str
Directory used to store temporary files before they are renamed into their final version.
This property is built from
gen_tmp_dir
construction parameter. Typical values for the parameter are:os.path.join(cfg.tmpdir, 'S1')
os.path.join(cfg.tmpdir, 'S2', '{tile_name}')
wheretile_name
is looked intometa
parameter
- update_filename_meta(meta: Dict) Dict
Duplicates, completes, and returns, the meta dictionary with specific information for the current factory regarding tasks analysis.
This method is used:
while analysing the dependencies to build the task graph – in this use case the relevant information are the file names and paths.
and indirectly before instanciating a new
Step
Other metadata not filled here:
get_task_name()
which is deduced from out_filename by defaultout_extended_filename_complement()
It’s possible to inject some other metadata (that could be used from
_get_canonical_input()
for instance) thanks to_update_filename_meta_pre_hook()
.This method is not meant to be overridden. Instead it implements the template method design pattern, and expects the customization to be done through the specialization of the hooks:
_update_filename_meta_pre_hook()
,_update_filename_meta_post_hook()
.