Accessing External Granule Data

It is possible to download granules hosted on external Distributed Active Archive Centers (DAACs) using the MAAP ADE. This data is hosted externally from the MAAP but can be accessed using the MAAP ADE’s authentication systems.

In order to do this, we start by creating a Jupyter workspace within the NASA Goddard Commercial Cloud (GCC) MAAP ADE. Using the left-hand navigation, select “+ Get Started” and then select the “Jupyter - MAAP Basic Stable” workspace.

Create Jupyter Workspace

Alternatively, you can create a workspace using the “Workspaces” interface. See Create Workspace for more information.

Optionally, you can check if your workspace is configured correctly by navigating to the side panel tab Workspaces and selecting the workspace’s settings page via the ‘Configure Workspace’ button:

Configure Workspace

Check that the container name is mas.maap-project.org:5000/root/jupyter-image/vanilla:edl-federated-login:

containers:
  - name: jupyter
    image: 'mas.maap-project.org:5000/root/jupyter-image/vanilla:develop'

Click SAVE and then click APPLY. You are now ready to launch a Jupyter Notebook and access external granule data.

Accessing data from Jupyter Notebooks in your workspace

Within your Jupyter Notebook, start by importing the maap package. Then invoke the MAAP, setting the maap_host argument to api.ops.maap-project.org.

[1]:
# import the maap package to handle queries
from maap.maap import MAAP
# invoke the MAAP using the MAAP host argument
maap = MAAP(maap_host='api.ops.maap-project.org')

Accessing Sentinel-1 Granule Data from the Alaska Satellite Facility (ASF)

Search for a granule using the searchGranule function (for more information on searching for granules, see Searching for Granules in MAAP). Then utilize the getData function, which downloads granule data if it doesn’t already exist locally. We can use getData to download the first result from our granule search into the file system and assign it to a variable (in this case download).

[2]:
# search for granule data using the collection concept ID argument
results = maap.searchGranule(collection_concept_id='C1200231010-NASA_MAAP')
# download first result
download = results[0].getData()

We can then use the print function to see the file name and directory.

[3]:
# print file directory
print(download)
./S1A_S3_GRDH_1SDH_20140615T034444_20140615T034512_001055_00107C_8977.zip

Accessing Global Ecosystem Dynamics Investigation (GEDI) Level 3 Granule Data from the Oak Ridge National Lab (ORNL)

We use a similar approach in order to access GEDI Level 3 granule data. Note that we can use searchGranule’s cmr_host argument to specify a CMR instance external to MAAP.

[4]:
# search for granule data using CMR host name, collection concept ID, and Granule UR arguments
results = maap.searchGranule(
    cmr_host='cmr.earthdata.nasa.gov',
    collection_concept_id='C2067521974-ORNL_CLOUD',
    granule_ur='GEDI_L3_Land_Surface_Metrics.GEDI03_elev_lowestmode_stddev_2019108_2020106_001_08.tif')
# download first result
download_2 = results[0].getData()

As in the previous example, we can use the print function to see the file name and directory.

[5]:
# print file directory
print(download_2)
./GEDI03_elev_lowestmode_stddev_2019108_2020106_001_08.tif