Downloading image data#

from marsimage.download import download_msl, download_pds3

Single product downloading#

You’ve already seen how to download a single dataproduct from the PDS with download_pds3() if you already have the URL to it. It will also try to automatically download an external PDS3 .LBL label associated with the product.

pds_img = 'https://planetarydata.jpl.nasa.gov/img/data/msl/MSLMHL_0029/DATA/RDR/SURFACE/3215/3215MH0008300011103206C00_DRXX.IMG'

download_pds3(pds_img, path='temp/')
PosixPath('temp/3215MH0008300011103206C00_DRXX.IMG')

Multi Sol and Multi instrument downloading#

For larger projects like photogrammetry, it is necessary to download images from a range of sols and for multiple instruments.

MarsImage provides a batch download function called download_msl to download calibrated MSL/Curiosity images from the PDS.

You can specify a list of instruments to download from: mastcam, mahli, mardi, navcam, hazcam, or all to download all at once.

To download multiple cameras at once, you can write them as a python list: ['navcam', 'mastcam']. The full command will look like this:

download_msl(['navcam', 'mastcam'], sol_start=3560, sol_end=3650, output_dir=download_dir)
download_dir = './temp/MontMercouHazcam/'

# this will download all MSL Hazcam images from sol 3074 to 3075
download_msl('hazcam', sol_start=3074, sol_end=3075, output_dir=download_dir)
Downloading images from Sol 3074 to Sol 3075 for HAZCAM.
observation image pds3_label pds4_label sol camera desirability thumbnail
productid
FLB_670378809MXY_F0870834FHAZ00206M1 FLB670378809MXY_0870834FHAZ00206 /tmp/tmpaqgs8uqs/temp/MontMercouHazcam/03074/H... /tmp/tmpaqgs8uqs/temp/MontMercouHazcam/03074/H... NaN 03074 hazcam 10 False
FLB_670378809RAD_F0870834FHAZ00206M1 FLB670378809RAD_0870834FHAZ00206 /tmp/tmpaqgs8uqs/temp/MontMercouHazcam/03074/H... /tmp/tmpaqgs8uqs/temp/MontMercouHazcam/03074/H... NaN 03074 hazcam 10 False
FLB_670381342MXY_F0870834FHAZ00206M1 FLB670381342MXY_0870834FHAZ00206 /tmp/tmpaqgs8uqs/temp/MontMercouHazcam/03074/H... /tmp/tmpaqgs8uqs/temp/MontMercouHazcam/03074/H... NaN 03074 hazcam 10 False
FLB_670381342RAD_F0870834FHAZ00206M1 FLB670381342RAD_0870834FHAZ00206 /tmp/tmpaqgs8uqs/temp/MontMercouHazcam/03074/H... /tmp/tmpaqgs8uqs/temp/MontMercouHazcam/03074/H... NaN 03074 hazcam 10 False
FLB_670397990MXY_F0871078FHAZ00302M1 FLB670397990MXY_0871078FHAZ00302 /tmp/tmpaqgs8uqs/temp/MontMercouHazcam/03074/H... /tmp/tmpaqgs8uqs/temp/MontMercouHazcam/03074/H... NaN 03074 hazcam 10 False
FLB_670397990RAD_F0871078FHAZ00302M1 FLB670397990RAD_0871078FHAZ00302 /tmp/tmpaqgs8uqs/temp/MontMercouHazcam/03074/H... /tmp/tmpaqgs8uqs/temp/MontMercouHazcam/03074/H... NaN 03074 hazcam 10 False
FRB_670378809MXY_F0870834FHAZ00206M1 FRB670378809MXY_0870834FHAZ00206 /tmp/tmpaqgs8uqs/temp/MontMercouHazcam/03074/H... /tmp/tmpaqgs8uqs/temp/MontMercouHazcam/03074/H... NaN 03074 hazcam 10 False
FRB_670378809RAD_F0870834FHAZ00206M1 FRB670378809RAD_0870834FHAZ00206 /tmp/tmpaqgs8uqs/temp/MontMercouHazcam/03074/H... /tmp/tmpaqgs8uqs/temp/MontMercouHazcam/03074/H... NaN 03074 hazcam 10 False
FRB_670381342MXY_F0870834FHAZ00206M1 FRB670381342MXY_0870834FHAZ00206 /tmp/tmpaqgs8uqs/temp/MontMercouHazcam/03074/H... /tmp/tmpaqgs8uqs/temp/MontMercouHazcam/03074/H... NaN 03074 hazcam 10 False
FRB_670381342RAD_F0870834FHAZ00206M1 FRB670381342RAD_0870834FHAZ00206 /tmp/tmpaqgs8uqs/temp/MontMercouHazcam/03074/H... /tmp/tmpaqgs8uqs/temp/MontMercouHazcam/03074/H... NaN 03074 hazcam 10 False
FRB_670397990MXY_F0871078FHAZ00302M1 FRB670397990MXY_0871078FHAZ00302 /tmp/tmpaqgs8uqs/temp/MontMercouHazcam/03074/H... /tmp/tmpaqgs8uqs/temp/MontMercouHazcam/03074/H... NaN 03074 hazcam 10 False
FRB_670397990RAD_F0871078FHAZ00302M1 FRB670397990RAD_0871078FHAZ00302 /tmp/tmpaqgs8uqs/temp/MontMercouHazcam/03074/H... /tmp/tmpaqgs8uqs/temp/MontMercouHazcam/03074/H... NaN 03074 hazcam 10 False
RLB_670398086MXY_F0871078RHAZ00311M1 RLB670398086MXY_0871078RHAZ00311 /tmp/tmpaqgs8uqs/temp/MontMercouHazcam/03074/H... /tmp/tmpaqgs8uqs/temp/MontMercouHazcam/03074/H... NaN 03074 hazcam 10 False
RLB_670398086RAD_F0871078RHAZ00311M1 RLB670398086RAD_0871078RHAZ00311 /tmp/tmpaqgs8uqs/temp/MontMercouHazcam/03074/H... /tmp/tmpaqgs8uqs/temp/MontMercouHazcam/03074/H... NaN 03074 hazcam 10 False
RRB_670398086MXY_F0871078RHAZ00311M1 RRB670398086MXY_0871078RHAZ00311 /tmp/tmpaqgs8uqs/temp/MontMercouHazcam/03074/H... /tmp/tmpaqgs8uqs/temp/MontMercouHazcam/03074/H... NaN 03074 hazcam 10 False
RRB_670398086RAD_F0871078RHAZ00311M1 RRB670398086RAD_0871078RHAZ00311 /tmp/tmpaqgs8uqs/temp/MontMercouHazcam/03074/H... /tmp/tmpaqgs8uqs/temp/MontMercouHazcam/03074/H... NaN 03074 hazcam 10 False
FLB_670471299MXY_F0871078FHAZ00341M1 FLB670471299MXY_0871078FHAZ00341 /tmp/tmpaqgs8uqs/temp/MontMercouHazcam/03075/H... /tmp/tmpaqgs8uqs/temp/MontMercouHazcam/03075/H... NaN 03075 hazcam 10 False
FLB_670471299RAD_F0871078FHAZ00341M1 FLB670471299RAD_0871078FHAZ00341 /tmp/tmpaqgs8uqs/temp/MontMercouHazcam/03075/H... /tmp/tmpaqgs8uqs/temp/MontMercouHazcam/03075/H... NaN 03075 hazcam 10 False
FRB_670471299MXY_F0871078FHAZ00341M1 FRB670471299MXY_0871078FHAZ00341 /tmp/tmpaqgs8uqs/temp/MontMercouHazcam/03075/H... /tmp/tmpaqgs8uqs/temp/MontMercouHazcam/03075/H... NaN 03075 hazcam 10 False
FRB_670471299RAD_F0871078FHAZ00341M1 FRB670471299RAD_0871078FHAZ00341 /tmp/tmpaqgs8uqs/temp/MontMercouHazcam/03075/H... /tmp/tmpaqgs8uqs/temp/MontMercouHazcam/03075/H... NaN 03075 hazcam 10 False
RLB_670471333MXY_F0871078RHAZ00341M1 RLB670471333MXY_0871078RHAZ00341 /tmp/tmpaqgs8uqs/temp/MontMercouHazcam/03075/H... /tmp/tmpaqgs8uqs/temp/MontMercouHazcam/03075/H... NaN 03075 hazcam 10 False
RLB_670471333RAD_F0871078RHAZ00341M1 RLB670471333RAD_0871078RHAZ00341 /tmp/tmpaqgs8uqs/temp/MontMercouHazcam/03075/H... /tmp/tmpaqgs8uqs/temp/MontMercouHazcam/03075/H... NaN 03075 hazcam 10 False
RRB_670471333MXY_F0871078RHAZ00341M1 RRB670471333MXY_0871078RHAZ00341 /tmp/tmpaqgs8uqs/temp/MontMercouHazcam/03075/H... /tmp/tmpaqgs8uqs/temp/MontMercouHazcam/03075/H... NaN 03075 hazcam 10 False
RRB_670471333RAD_F0871078RHAZ00341M1 RRB670471333RAD_0871078RHAZ00341 /tmp/tmpaqgs8uqs/temp/MontMercouHazcam/03075/H... /tmp/tmpaqgs8uqs/temp/MontMercouHazcam/03075/H... NaN 03075 hazcam 10 False

Advanced Product filtering#

MSL MMM (Mastcam, Mahli, Mardi) observations are often downlinked in different compression methods and resolutions, e.g. lossess, JPEG compressed, thumbnails…

By default download_msl will try to find the best quality product with the highest version number for any given observation. This behavior can be disabled by passing find_best=False and remove_thumbnails=False to the function.

By default, it will only download DRXX, RAD_ and MXY_ products. These are the only type of product supported by the MarsImage Class.

However, if desired, the defauly filter can be changed by passing a product_filter argument to the function, e.g. product_filter=['DRLX', 'RADL', 'MXYL']. This currently acts as a whitelist which the products must match.

Lets use these features to download all products for a selected MAHLI observation:

download_dir = './temp/MastcamProductLevels/'

# this will download all MSL MAST_RIGHT images that match the observation 4142MR1055890052100038 and return a dataframe with the results
# this image is available with different compression, the desirability value will be highest for the best quality image
index = download_msl(
    'mastcam',
    sol_start=4142,
    sol_end=4142,
    output_dir=download_dir,
    product_filter=['4142MR1055890052100038'],
    find_best=False,
    remove_thumbnails=False,
)
Downloading images from Sol 4142 to Sol 4142 for MASTCAM.
display(index)
observation image pds3_label pds4_label sol camera desirability thumbnail
productid
4142MR1055890052100038C00_DRCL 4142MR10558900521000380DRCL /tmp/tmpaqgs8uqs/temp/MastcamProductLevels/041... NaN /tmp/tmpaqgs8uqs/temp/MastcamProductLevels/041... 04142 mastcam 8 False
4142MR1055890052100038C00_DRCX 4142MR10558900521000380DRCX /tmp/tmpaqgs8uqs/temp/MastcamProductLevels/041... NaN /tmp/tmpaqgs8uqs/temp/MastcamProductLevels/041... 04142 mastcam 8 False
4142MR1055890052100038C00_DRLX 4142MR10558900521000380DRLX /tmp/tmpaqgs8uqs/temp/MastcamProductLevels/041... NaN /tmp/tmpaqgs8uqs/temp/MastcamProductLevels/041... 04142 mastcam 8 False
4142MR1055890052100038C00_DRXX 4142MR10558900521000380DRXX /tmp/tmpaqgs8uqs/temp/MastcamProductLevels/041... NaN /tmp/tmpaqgs8uqs/temp/MastcamProductLevels/041... 04142 mastcam 8 False
4142MR1055890052100038E01_DRCL 4142MR10558900521000380DRCL /tmp/tmpaqgs8uqs/temp/MastcamProductLevels/041... NaN /tmp/tmpaqgs8uqs/temp/MastcamProductLevels/041... 04142 mastcam 5 False
4142MR1055890052100038E01_DRCX 4142MR10558900521000380DRCX /tmp/tmpaqgs8uqs/temp/MastcamProductLevels/041... NaN /tmp/tmpaqgs8uqs/temp/MastcamProductLevels/041... 04142 mastcam 5 False
4142MR1055890052100038E01_DRLX 4142MR10558900521000380DRLX /tmp/tmpaqgs8uqs/temp/MastcamProductLevels/041... NaN /tmp/tmpaqgs8uqs/temp/MastcamProductLevels/041... 04142 mastcam 5 False
4142MR1055890052100038E01_DRXX 4142MR10558900521000380DRXX /tmp/tmpaqgs8uqs/temp/MastcamProductLevels/041... NaN /tmp/tmpaqgs8uqs/temp/MastcamProductLevels/041... 04142 mastcam 5 False
4142MR1055890052100038I01_DRCL 4142MR10558900521000380DRCL /tmp/tmpaqgs8uqs/temp/MastcamProductLevels/041... NaN /tmp/tmpaqgs8uqs/temp/MastcamProductLevels/041... 04142 mastcam 0.6 True
4142MR1055890052100038I01_DRCX 4142MR10558900521000380DRCX /tmp/tmpaqgs8uqs/temp/MastcamProductLevels/041... NaN /tmp/tmpaqgs8uqs/temp/MastcamProductLevels/041... 04142 mastcam 0.6 True
4142MR1055890052100038I01_DRLX 4142MR10558900521000380DRLX /tmp/tmpaqgs8uqs/temp/MastcamProductLevels/041... NaN /tmp/tmpaqgs8uqs/temp/MastcamProductLevels/041... 04142 mastcam 0.6 True
4142MR1055890052100038I01_DRXX 4142MR10558900521000380DRXX /tmp/tmpaqgs8uqs/temp/MastcamProductLevels/041... NaN /tmp/tmpaqgs8uqs/temp/MastcamProductLevels/041... 04142 mastcam 0.6 True