giant.coverage.coverage_class

This module provides the capability to perform coverage analysis for remote sensing instruments given a notional ConOps.

Description

The coverage analysis works by taking the observation plan and then at each “imaging” epoch in the observation plan, computing which facets of the shape model fall within the field of view of the instrument (and optionally are illuminated by the sun).

This information is then stored, per image, per facet, and can then be queried to check what percentage of the surface was observed according to some constraints. Additionally, for SPC coverage, we can then take the information from the visibility check, and use it to compute the shape from shading dilutions of precision (DOP) for each facet, to get an idea of how good the coverage is for building shape models using SPC.

Use

## Preparation To run coverage analysis we need to prepare the shape model. This is done in 2 simple steps.

  1. Ingest the shape model you wish to use for coverage analysis into the GIANT format using the ingest_shape command line utility provided by GIANT

  2. run python prepare_shape.py -t /path/to/kdtree.pickle -o /path/to/output.pickle to precompute necessary information about the shape model for coverage analysis. (Depending on the size of the shape model, this can take a while to run, but only needs to be run once for shape model)

We also need to define our observation ConOps. This is more detailed but roughly works through the following:

  1. Provide trajectory information (usually through the form of NAIF SPICE SPK files but could also be done through a csv file or similar)

  2. Provide pointing information (this can be done most simply through NAIF SPICE CK files, or can be done programmatically by defining a python function which takes in a datetime object and outputs a giant.rotations.Rotation object defining the rotation from the inertial frame to the “camera frame” or through a csv file)

  3. Provide an imaging cadence. This can be done most simply from a file (like a list of image times or a csv file) or can be done programmatically

## Running the analysis To get results for visibility and DOP, you will need to have a model for a camera, and write a script to be able to create a Coverage instance.

Once initialized, you can run Coverage.compute_visibility() to get visibility results, and then you can run Coverage.compute_dop() to get DOP results.

## Interpreting the results The results for visibility (and optionally DOP) can be saved to numpy files as dictionaries (or in some cases pickle files) that can later be used for plotting.

Classes

Coverage

This class provides coverage analysis capabilities for remote sensing instruments given an observation plan.