# Projection


<!-- WARNING: THIS FILE WAS AUTOGENERATED! DO NOT EDIT! -->

------------------------------------------------------------------------

<a
href="https://github.com/michaelaye/p4tools/blob/main/p4tools/production/projection.py#L155"
target="_blank" style="float:right; font-size:smaller">source</a>

### stitch_cubenorm

``` python

def stitch_cubenorm(
    spid1, spid2
):

```

*Stitch together the 2 CCD chip images and perform a cubenorm
operation.* Parameters ———- spid1 : object The first CCD chip image
object. Must have attributes `local_cube` and `stitched_cube_path`.
spid2 : object The second CCD chip image object. Must have attributes
`local_cube` and `stitched_cube_path`. Returns ——- normed : pathlib.Path
The path to the normalized stitched cube file. Raises —— ProcessError If
there is an error during the stitching or cubenorm process.

------------------------------------------------------------------------

<a
href="https://github.com/michaelaye/p4tools/blob/main/p4tools/production/projection.py#L135"
target="_blank" style="float:right; font-size:smaller">source</a>

### ensure_spice

``` python

def ensure_spice(
    cubepath
):

```

*Check cube for SPICE data and run spiceinit if missing.*

Returns True if SPICE data is present (or was successfully added), False
on failure.

------------------------------------------------------------------------

<a
href="https://github.com/michaelaye/p4tools/blob/main/p4tools/production/projection.py#L126"
target="_blank" style="float:right; font-size:smaller">source</a>

### has_spice

``` python

def has_spice(
    cubepath
):

```

*Check if an ISIS cube has SPICE data by looking for NaifKeywords in its
label.*

------------------------------------------------------------------------

<a
href="https://github.com/michaelaye/p4tools/blob/main/p4tools/production/projection.py#L98"
target="_blank" style="float:right; font-size:smaller">source</a>

### nocal_hi

``` python

def nocal_hi(
    source_product, # Class object managing the precise filenames and locations for HiRISE source products
):

```

*Import HiRISE product into ISIS and spice-init it.*

------------------------------------------------------------------------

<a
href="https://github.com/michaelaye/p4tools/blob/main/p4tools/production/projection.py#L39"
target="_blank" style="float:right; font-size:smaller">source</a>

### P4Mosaic

``` python

def P4Mosaic(
    obsid
):

```

*A class to handle mosaic operations for a given observation ID.*
Parameters ———- obsid : str The observation ID used to locate the source
product and mosaic path. Attributes ———- mosaic_path : pathlib.Path The
path to the mosaic file. Methods ——- read() Reads the mosaic file and
returns it as an xarray DataArray. show(xslice=None, yslice=None)
Displays the mosaic image using hvplot with optional slicing.

------------------------------------------------------------------------

<a
href="https://github.com/michaelaye/p4tools/blob/main/p4tools/production/projection.py#L250"
target="_blank" style="float:right; font-size:smaller">source</a>

### create_RED45_mosaic

``` python

def create_RED45_mosaic(
    obsid, # The observation ID for which the RED45 mosaic is to be created.
    overwrite:bool=False, # If True, existing mosaic files will be overwritten. Default is False.
):

```

*Create a RED45 mosaic from EDR data associated with a given observation
ID.*

If a single CCD channel fails to download (e.g. 404 from PDS), a
NULL-filled dummy cube is created from the sibling channel so that
`histitch` can proceed. The dummy contributes only NULL pixels —
`handmos` treats these as transparent.

------------------------------------------------------------------------

<a
href="https://github.com/michaelaye/p4tools/blob/main/p4tools/production/projection.py#L192"
target="_blank" style="float:right; font-size:smaller">source</a>

### get_RED45_mosaic_inputs

``` python

def get_RED45_mosaic_inputs(
    obsid:str, # HiRISE observation id, e.g. ESP_011350_0945
    saveroot:Path=None, # Path to where the data is stored
)->list: # List of 4 hirise.RED_PRODUCTs: [RED4_0, RED4_1, RED5_0, RED5_1]

```

*Create list with filenames for RED4 and RED5 CCD chips 0 and 1,
respectively.*

------------------------------------------------------------------------

<a
href="https://github.com/michaelaye/p4tools/blob/main/p4tools/production/projection.py#L381"
target="_blank" style="float:right; font-size:smaller">source</a>

### do_campt

``` python

def do_campt(
    mosaicname, savepath, temppath
):

```

*Executes the campt command with the provided parameters from ISIS. *
Campt computes the geometric information like longitude and lattitude at
a given pixel location. Parameters ———- mosaicname : str The name of the
mosaic file to process. savepath : str The path where the output should
be saved. temppath : str The path to the temporary file containing
coordinates. Returns ——- tuple A tuple containing the mosaicname and a
boolean indicating success (False if an error occurred).

------------------------------------------------------------------------

<a
href="https://github.com/michaelaye/p4tools/blob/main/p4tools/production/projection.py#L415"
target="_blank" style="float:right; font-size:smaller">source</a>

### XY2LATLON

``` python

def XY2LATLON(
    df, inpath, overwrite:bool=False, obsid:NoneType=None
):

```

*A class to convert XY coordinates to latitude and longitude using
ground projection data.* Attributes ———- edrpath : str Path to the
ground projection root directory. df : pandas.DataFrame DataFrame
containing the data to be processed. obsid : str Observation ID, derived
from the DataFrame if not provided. inpath : pathlib.Path Input path
where the files are located. overwrite : bool Flag to indicate whether
to overwrite existing files. p4m : P4Mosaic Instance of the P4Mosaic
class for handling mosaic paths. Properties ———- obsid : str Gets or
sets the observation ID. mosaicpath : str Returns the path to the mosaic
file. savepath : pathlib.Path Returns the path to save the campt output
CSV file. savepath_blotch : pathlib.Path Returns the path to save the
blotch campt output CSV file. savepath_fan : pathlib.Path Returns the
path to save the fan campt output CSV file. temppath : pathlib.Path
Returns the temporary path for intermediate files. Methods ——-
process_inpath(): Processes the input path and generates the necessary
campt output files.

------------------------------------------------------------------------

<a
href="https://github.com/michaelaye/p4tools/blob/main/p4tools/production/projection.py#L514"
target="_blank" style="float:right; font-size:smaller">source</a>

### TileCalculator

``` python

def TileCalculator(
    cubepath, read_data:bool=True, dbname:NoneType=None
):

```

*A class to calculate tile coordinates for HiRISE images.* Parameters
———- cubepath : str or Path The path to the HiRISE image cube. read_data
: bool, optional If True, reads data from the database (default is
True). dbname : str, optional The name of the database to read data from
(default is None). Attributes ———- cubepath : Path The path to the
HiRISE image cube. data : DataFrame The observation ID markings data
from the database. img_name : str The image name derived from the cube
path. x_tile_max : int The maximum x tile value. y_tile_max : int The
maximum y tile value. campt_results_path : Path The path to save the
campt results. temppath : Path The temporary path for campt input
coordinates. final_path : Path The final path to save the tile
coordinates. tile_coords_df : DataFrame The DataFrame containing tile
coordinates. Methods ——- get_xy_tiles() Returns a grid of x and y tile
values. get_campt_input_coords() Returns a DataFrame with campt input
coordinates. calc_tile_coords() Calculates and saves the tile
coordinates.

------------------------------------------------------------------------

<a
href="https://github.com/michaelaye/p4tools/blob/main/p4tools/production/projection.py#L681"
target="_blank" style="float:right; font-size:smaller">source</a>

### p4tile_center_to_hirise_pix

``` python

def p4tile_center_to_hirise_pix(
    tile, x_or_y
):

```

------------------------------------------------------------------------

<a
href="https://github.com/michaelaye/p4tools/blob/main/p4tools/production/projection.py#L665"
target="_blank" style="float:right; font-size:smaller">source</a>

### p4pix_to_hirise_pix

``` python

def p4pix_to_hirise_pix(
    p4pix, # Coordinate value for either x or y dimension of P4 pixel
    tile, # x or y tile coordinate of PlanetFour
    x_or_y, # Switch between different coordinate transformations
):

```

*This convert either x or y coordinate of a planet4 pixel to Hirise
coordinate.*
