LVIS Access and Explore

Authors: Rajat Shinde (UAH), Sheyenne Kirkland (UAH), Alex Mandel (DevSeed), Jamison French (DevSeed), Emile Tenezakis (DevSeed), Brian Freitag (NASA MSFC)

Date: August 22, 2023

Description: In this tutorial, we will explore the LVIS (Land Vegetation and Ice Sensor) based data products and work on accessing these data products using MAAP.

Run This Notebook

To access and run this tutorial within MAAP’s Algorithm Development Environment (ADE), please refer to the “Getting started with the MAAP” section of our documentation.

Disclaimer: It is highly recommended to run a tutorial within MAAP’s ADE, which already includes packages specific to MAAP, such as maap-py. Running the tutorial outside of the MAAP ADE may lead to errors.

Importing Packages

We import the os module, import the MAAP package, and create a new MAAP class instance.

[ ]:
# import os module
import os

# import the MAAP package to handle queries
from maap.maap import MAAP

# import printing package to help display outputs
from pprint import pprint

# invoke the MAAP search client
maap = MAAP()

Creating a Data Directory for this Tutorial

[14]:
# set data directory path
dataDir = './data'

# check if directory exists -> if directory doesn't exist, directory is created
if not os.path.exists(dataDir):
    os.mkdir(dataDir)

After executing the previous cell, we can observe that the data directory has been created and all the files in this tutorial will be downloaded to this directory.

Accessing the LVIS Facility L1B Geolocated Return Energy Waveforms V001

About the Dataset

The LVIS Facility L1B Geolocated Return Energy Waveforms V001 dataset contains Level-1B geolocated return energy waveforms collected by the NASA Land, Vegetation and Ice Sensor (LVIS) Facility, an imaging lidar and camera sensor suite. The short name for this collection is LVISF1B. This short name is used for searching this collection in the NASA CMR using the searchCollection() method.

Searching the Collection

[15]:
lvisf1b_collections = maap.searchCollection(
    short_name='LVISF1B',
    version='1',
    cmr_host='cmr.earthdata.nasa.gov'
)
lvisf1b_collections
[15]:
[{'concept-id': 'C1723866745-NSIDC_ECS',
  'revision-id': '38',
  'format': 'application/echo10+xml',
  'Collection': {'ShortName': 'LVISF1B',
   'VersionId': '1',
   'InsertTime': '2023-08-22T18:01:08.485Z',
   'LastUpdate': '2023-08-22T18:01:08.485Z',
   'LongName': 'Not provided',
   'DataSetId': 'LVIS Facility L1B Geolocated Return Energy Waveforms V001',
   'Description': 'This data set contains Level-1B geolocated return energy waveforms collected by the NASA Land, Vegetation, and Ice Sensor (LVIS) Facility, an imaging lidar and camera sensor suite.',
   'DOI': {'DOI': '10.5067/XQJ8PN8FTIDG'},
   'StandardProduct': 'false',
   'RevisionDate': '2023-05-31T00:00:00.000Z',
   'SuggestedUsage': 'Scientific Research',
   'ProcessingCenter': 'NASA/GSFC/SED/ESD/LRSL',
   'ProcessingLevelId': 'Level 1B',
   'ProcessingLevelDescription': 'Sensor units',
   'ArchiveCenter': 'NASA NSIDC DAAC',
   'CollectionState': 'PLANNED',
   'RestrictionComment': ' These data are freely, openly, and fully accessible, provided that you are logged into your NASA Earthdata profile (https://urs.earthdata.nasa.gov/).',
   'UseConstraints': {'LicenseText': ' These data are freely, openly, and fully available to use without restrictions, provided that you cite the data according to the recommended citation at https://nsidc.org/about/use_copyright.html. For more information on the NASA EOSDIS Data Use Policy, see https://earthdata.nasa.gov/earth-observation-data/data-use-policy.'},
   'DataFormat': 'HDF5',
   'SpatialKeywords': {'Keyword': ['CANADA',
     'GREENLAND',
     'UNITED STATES OF AMERICA',
     'COSTA RICA',
     'FRENCH GUIANA']},
   'Temporal': {'EndsAtPresentFlag': 'false',
    'RangeDateTime': {'BeginningDateTime': '2018-11-07T00:00:00.000Z'}},
   'Contacts': {'Contact': [{'Role': 'ARCHIVER',
      'OrganizationName': 'NASA NSIDC DAAC',
      'OrganizationAddresses': {'Address': {'StreetAddress': 'National Snow and Ice Data Center CIRES, 449 UCB University of Colorado',
        'City': 'Boulder',
        'StateProvince': 'CO',
        'PostalCode': '80309-0449',
        'Country': 'USA'}},
      'OrganizationPhones': {'Phone': {'Number': '1 303 492 6199',
        'Type': 'Telephone'}},
      'OrganizationEmails': {'Email': 'nsidc@nsidc.org'}},
     {'Role': 'DISTRIBUTOR',
      'OrganizationName': 'NASA NSIDC DAAC',
      'OrganizationAddresses': {'Address': {'StreetAddress': 'National Snow and Ice Data Center CIRES, 449 UCB University of Colorado',
        'City': 'Boulder',
        'StateProvince': 'CO',
        'PostalCode': '80309-0449',
        'Country': 'USA'}},
      'OrganizationPhones': {'Phone': {'Number': '1 303 492 6199',
        'Type': 'Telephone'}},
      'OrganizationEmails': {'Email': 'nsidc@nsidc.org'}},
     {'Role': 'PROCESSOR', 'OrganizationName': 'NASA/GSFC/SED/ESD/LRSL'},
     {'Role': 'ORIGINATOR', 'OrganizationName': 'NASA/GSFC/SED/ESD/LRSL'},
     {'Role': 'TECHNICAL CONTACT',
      'ContactPersons': {'ContactPerson': [{'FirstName': 'NSIDC',
         'MiddleName': 'User',
         'LastName': 'Services',
         'JobPosition': 'TECHNICAL CONTACT'},
        {'FirstName': 'J.',
         'MiddleName': 'Bryan',
         'LastName': 'Blair',
         'JobPosition': 'TECHNICAL CONTACT'},
        {'FirstName': 'Michelle',
         'LastName': 'Hofton',
         'JobPosition': 'TECHNICAL CONTACT'}]}}]},
   'ScienceKeywords': {'ScienceKeyword': {'CategoryKeyword': 'EARTH SCIENCE',
     'TopicKeyword': 'SPECTRAL/ENGINEERING',
     'TermKeyword': 'INFRARED WAVELENGTHS',
     'VariableLevel1Keyword': {'Value': 'SENSOR COUNTS'}}},
   'Platforms': {'Platform': [{'ShortName': 'B-200',
      'LongName': 'Beechcraft King Air B-200',
      'Type': 'Propeller',
      'Instruments': {'Instrument': {'ShortName': 'LVIS',
        'LongName': 'Land, Vegetation, and Ice Sensor',
        'Technique': 'instrument',
        'NumberOfSensors': '1',
        'Sensors': {'Sensor': {'ShortName': 'LVIS',
          'LongName': 'Land, Vegetation, and Ice Sensor'}}}}},
     {'ShortName': 'G-III',
      'LongName': 'Gulfstream III',
      'Type': 'Jet',
      'Instruments': {'Instrument': {'ShortName': 'LVIS',
        'LongName': 'Land, Vegetation, and Ice Sensor',
        'Technique': 'instrument',
        'NumberOfSensors': '1',
        'Sensors': {'Sensor': {'ShortName': 'LVIS',
          'LongName': 'Land, Vegetation, and Ice Sensor'}}}}},
     {'ShortName': 'G-V',
      'LongName': 'Gulfstream V',
      'Type': 'Jet',
      'Instruments': {'Instrument': {'ShortName': 'LVIS',
        'LongName': 'Land, Vegetation, and Ice Sensor',
        'Technique': 'instrument',
        'NumberOfSensors': '1',
        'Sensors': {'Sensor': {'ShortName': 'LVIS',
          'LongName': 'Land, Vegetation, and Ice Sensor'}}}}},
     {'ShortName': 'P-3B',
      'LongName': 'Lockheed P-3B Orion',
      'Type': 'Propeller',
      'Instruments': {'Instrument': {'ShortName': 'LVIS',
        'LongName': 'Land, Vegetation, and Ice Sensor',
        'Technique': 'instrument',
        'NumberOfSensors': '1',
        'Sensors': {'Sensor': {'ShortName': 'LVIS',
          'LongName': 'Land, Vegetation, and Ice Sensor'}}}}}]},
   'AdditionalAttributes': {'AdditionalAttribute': [{'Name': 'AircraftID',
      'DataType': 'STRING',
      'Description': 'The identifier of the airplane used by the FAA to uniquely identify each aircraft'},
     {'Name': 'SIPSMetGenVersion',
      'DataType': 'STRING',
      'Description': 'The version of the SIPSMetGen software used to produce the metadata file for this granule'},
     {'Name': 'ThemeID',
      'DataType': 'STRING',
      'Description': 'The identifier of the theme under which data are logically grouped'},
     {'Name': 'identifier_product_doi',
      'DataType': 'STRING',
      'Description': 'Digital object identifier that uniquely identifies this data product'},
     {'Name': 'identifier_product_doi_authority',
      'DataType': 'STRING',
      'Description': 'URL of the digital object identifier resolving authority'}]},
   'Campaigns': {'Campaign': [{'ShortName': 'ABoVE',
      'LongName': 'Arctic-Boreal Vulnerability Experiment (ABoVE) NASA field campaign',
      'StartDate': '2017-06-29T00:00:00.000Z',
      'EndDate': '2017-07-17T00:00:00.000Z'},
     {'ShortName': 'GEDI',
      'LongName': "NASA's Global Ecosystem Dynamics Investigation",
      'StartDate': '2019-01-01T00:00:00.000Z',
      'EndDate': '2019-12-31T00:00:00.000Z'},
     {'ShortName': 'MULTI_NASA',
      'LongName': 'Operation IceBridge Multiple Campaigns',
      'StartDate': '1993-01-01T00:00:00.000Z',
      'EndDate': '2025-12-31T00:00:00.000Z'}]},
   'SpatialInfo': {'SpatialCoverageType': 'HORIZONTAL'},
   'OnlineAccessURLs': {'OnlineAccessURL': [{'URL': 'https://n5eil01u.ecs.nsidc.org/ICEBRIDGE/LVISF1B.001/',
      'URLDescription': 'Direct download via HTTPS protocol.'},
     {'URL': 'https://search.earthdata.nasa.gov/search?q=LVISF1B+V001',
      'URLDescription': "NASA's newest search and order tool for subsetting, reprojecting, and reformatting data."},
     {'URL': 'https://nsidc.org/data/data-access-tool/LVISF1B/versions/1/',
      'URLDescription': 'Search and filter data files using a map-based interface'}]},
   'OnlineResources': {'OnlineResource': [{'URL': 'https://doi.org/10.5067/XQJ8PN8FTIDG',
      'Description': 'Provides access to data, documentation, tools, citation information, support, and other resources.',
      'Type': 'CollectionURL : DATA SET LANDING PAGE'},
     {'URL': 'https://doi.org/10.5067/XQJ8PN8FTIDG',
      'Description': "Includes a user's guide, supplemental documents like ATBDs and academic papers, How Tos, FAQs, etc.",
      'Type': 'VIEW RELATED INFORMATION : GENERAL DOCUMENTATION'}]},
   'Spatial': {'SpatialCoverageType': 'HORIZONTAL',
    'HorizontalSpatialDomain': {'Geometry': {'CoordinateSystem': 'CARTESIAN',
      'BoundingRectangle': {'WestBoundingCoordinate': '-167.0',
       'NorthBoundingCoordinate': '88.0',
       'EastBoundingCoordinate': '18.0',
       'SouthBoundingCoordinate': '2.0'}}},
    'GranuleSpatialRepresentation': 'GEODETIC'}}}]

The above cell searches and generates the metadata associated with the LVISF1B collection. The concept-id in the above output is important and defines the collection id. Using this collection id (See COLLECTION_ID below), we will be searching for the granules in this collection.

Searching and Downloading a Granule

We use searchGranule() method for searching granules in a particular collection. Once the list of granules is retrieved, we can download a granule to above-defined path by using the getData() method.

[16]:
COLLECTION_ID = lvisf1b_collections[0]["concept-id"]

results = maap.searchGranule(
    concept_id=COLLECTION_ID,
    cmr_host="cmr.earthdata.nasa.gov"
)
pprint(f'Got {len(results)} results')


#Validating download
filename = results[0].getData(dataDir)
print(filename)
'Got 20 results'
./data/LVISF1B_US2018_1107_R2011_067463.h5

Validating the Downloaded Product

The downloaded product is stored in a Hierarchical Data Format, Version 5 or HDF5 file format (.h5). Such files can be accessed in Python by using the h5py library.

[17]:
#Testing the HDF5 files
import h5py
with h5py.File(filename, "r") as f:
    print("Keys: %s" % f.keys())
    # get first object name/key; may or may NOT be a group
    a_group_key = list(f.keys())[0]

    # get the object type for a_group_key: usually group or dataset
    print(type(f[a_group_key]))

    # If a_group_key is a group name,
    # this gets the object names in the group and returns as a list
    data = list(f[a_group_key])

    # If a_group_key is a dataset name,
    # this gets the dataset values and returns as a list
    data = list(f[a_group_key])
    # preferred methods to get dataset values:
    ds_obj = f[a_group_key]      # returns as a h5py dataset object
    ds_arr = f[a_group_key][()]  # returns as a numpy array

    print(ds_arr)
Keys: <KeysViewHDF5 ['AZIMUTH', 'INCIDENTANGLE', 'LAT0', 'LAT1215', 'LFID', 'LON0', 'LON1215', 'RANGE', 'RXWAVE', 'SHOTNUMBER', 'SIGMEAN', 'TIME', 'TXWAVE', 'Z0', 'Z1215', 'ancillary_data']>
<class 'h5py._hl.dataset.Dataset'>
[159.14177  159.4966   158.7841   ... 127.461716 124.07847  124.752396]

Since we are able to access data values from the downloaded granule, it is justified that the downloaded file is a valid data product.

Acessing the ABoVE LVIS L1B Geolocated Return Energy Waveforms V001

About the Dataset

The ABoVE LVIS L1B Geolocated Return Energy Waveforms V001 dataset contains return energy waveform data over Alaska and Western Canada measured by the NASA Land, Vegetation, and Ice Sensor (LVIS), an airborne lidar scanning laser altimeter. The data were collected as part of NASA’s Terrestrial Ecology Program campaign, the Arctic-Boreal Vulnerability Experiment (ABoVE). The short name for this collection is ABLVIS1B.

Searching the Collection

[18]:
ablvis1b_collections = maap.searchCollection(
    short_name='ABLVIS1B',
    version='1',
    cmr_host='cmr.earthdata.nasa.gov'
)
ablvis1b_collections
[18]:
[{'concept-id': 'C1513105920-NSIDC_ECS',
  'revision-id': '49',
  'format': 'application/echo10+xml',
  'Collection': {'ShortName': 'ABLVIS1B',
   'VersionId': '1',
   'InsertTime': '2023-08-22T16:58:08.001Z',
   'LastUpdate': '2023-08-22T16:58:08.001Z',
   'LongName': 'Not provided',
   'DataSetId': 'ABoVE LVIS L1B Geolocated Return Energy Waveforms V001',
   'Description': "This data set contains return energy waveform data over Alaska and Western Canada measured by the NASA Land, Vegetation, and Ice Sensor (LVIS), an airborne lidar scanning laser altimeter. The data were collected as part of NASA's Terrestrial Ecology Program campaign, the Arctic-Boreal Vulnerability Experiment (ABoVE).",
   'DOI': {'DOI': '10.5067/UMRAWS57QAFU'},
   'StandardProduct': 'false',
   'RevisionDate': '2023-07-05T00:00:00.000Z',
   'SuggestedUsage': 'Scientific Research',
   'ProcessingCenter': 'NASA/GSFC/SED/ESD/LRSL',
   'ProcessingLevelId': 'Level 1B',
   'ProcessingLevelDescription': 'Sensor units',
   'ArchiveCenter': 'NASA NSIDC DAAC',
   'CollectionState': 'PLANNED',
   'RestrictionComment': ' These data are freely, openly, and fully accessible, provided that you are logged into your NASA Earthdata profile (https://urs.earthdata.nasa.gov/).',
   'UseConstraints': {'LicenseText': ' These data are freely, openly, and fully available to use without restrictions, provided that you cite the data according to the recommended citation at https://nsidc.org/about/use_copyright.html. For more information on the NASA EOSDIS Data Use Policy, see https://earthdata.nasa.gov/earth-observation-data/data-use-policy.'},
   'DataFormat': 'HDF5',
   'SpatialKeywords': {'Keyword': ['ALASKA', 'CANADA']},
   'Temporal': {'EndsAtPresentFlag': 'false',
    'RangeDateTime': {'BeginningDateTime': '2017-06-29T00:00:00.000Z',
     'EndingDateTime': '2017-07-17T23:59:59.999Z'}},
   'Contacts': {'Contact': [{'Role': 'ARCHIVER',
      'OrganizationName': 'NASA NSIDC DAAC',
      'OrganizationAddresses': {'Address': {'StreetAddress': 'National Snow and Ice Data Center CIRES, 449 UCB University of Colorado',
        'City': 'Boulder',
        'StateProvince': 'CO',
        'PostalCode': '80309-0449',
        'Country': 'USA'}},
      'OrganizationPhones': {'Phone': {'Number': '1 303 492 6199',
        'Type': 'Telephone'}},
      'OrganizationEmails': {'Email': 'nsidc@nsidc.org'}},
     {'Role': 'DISTRIBUTOR',
      'OrganizationName': 'NASA NSIDC DAAC',
      'OrganizationAddresses': {'Address': {'StreetAddress': 'National Snow and Ice Data Center CIRES, 449 UCB University of Colorado',
        'City': 'Boulder',
        'StateProvince': 'CO',
        'PostalCode': '80309-0449',
        'Country': 'USA'}},
      'OrganizationPhones': {'Phone': {'Number': '1 303 492 6199',
        'Type': 'Telephone'}},
      'OrganizationEmails': {'Email': 'nsidc@nsidc.org'}},
     {'Role': 'PROCESSOR', 'OrganizationName': 'NASA/GSFC/SED/ESD/LRSL'},
     {'Role': 'ORIGINATOR', 'OrganizationName': 'NASA/GSFC/SED/ESD/LRSL'},
     {'Role': 'TECHNICAL CONTACT',
      'ContactPersons': {'ContactPerson': [{'FirstName': 'NSIDC',
         'MiddleName': 'User',
         'LastName': 'Services',
         'JobPosition': 'TECHNICAL CONTACT'},
        {'FirstName': 'J.',
         'MiddleName': 'Bryan',
         'LastName': 'Blair',
         'JobPosition': 'TECHNICAL CONTACT'},
        {'FirstName': 'Michelle',
         'LastName': 'Hofton',
         'JobPosition': 'TECHNICAL CONTACT'}]}}]},
   'ScienceKeywords': {'ScienceKeyword': {'CategoryKeyword': 'EARTH SCIENCE',
     'TopicKeyword': 'SPECTRAL/ENGINEERING',
     'TermKeyword': 'INFRARED WAVELENGTHS',
     'VariableLevel1Keyword': {'Value': 'SENSOR COUNTS'}}},
   'Platforms': {'Platform': [{'ShortName': 'AIRCRAFT',
      'LongName': 'Not provided',
      'Type': 'Aircraft',
      'Instruments': {'Instrument': [{'ShortName': 'ALTIMETERS',
         'Technique': 'instrument',
         'NumberOfSensors': '1',
         'Sensors': {'Sensor': {'ShortName': 'ALTIMETERS'}}},
        {'ShortName': 'LASERS',
         'LongName': 'Light Amplification by Stimulated Emission of Radiation',
         'Technique': 'instrument',
         'NumberOfSensors': '1',
         'Sensors': {'Sensor': {'ShortName': 'LASERS',
           'LongName': 'Light Amplification by Stimulated Emission of Radiation'}}}]}},
     {'ShortName': 'B-200',
      'LongName': 'Beechcraft King Air B-200',
      'Type': 'Propeller',
      'Instruments': {'Instrument': {'ShortName': 'LVIS',
        'LongName': 'Land, Vegetation, and Ice Sensor',
        'Technique': 'instrument',
        'NumberOfSensors': '1',
        'Sensors': {'Sensor': {'ShortName': 'LVIS',
          'LongName': 'Land, Vegetation, and Ice Sensor'}}}}},
     {'ShortName': 'C-130',
      'LongName': 'Lockheed C-130 Hercules',
      'Type': 'Propeller',
      'Instruments': {'Instrument': {'ShortName': 'LVIS',
        'LongName': 'Land, Vegetation, and Ice Sensor',
        'Technique': 'instrument',
        'NumberOfSensors': '1',
        'Sensors': {'Sensor': {'ShortName': 'LVIS',
          'LongName': 'Land, Vegetation, and Ice Sensor'}}}}},
     {'ShortName': 'DC-8',
      'LongName': 'Douglas DC-8',
      'Type': 'Aircraft',
      'Characteristics': {'Characteristic': {'Name': 'AircraftID',
        'Description': 'The identifier of the airplane used by the FAA to uniquely identify each aircraft',
        'DataType': 'STRING',
        'Unit': 'Not Applicable',
        'Value': 'N817NA'}},
      'Instruments': {'Instrument': {'ShortName': 'LVIS',
        'LongName': 'Land, Vegetation, and Ice Sensor',
        'Technique': 'instrument',
        'NumberOfSensors': '1',
        'Sensors': {'Sensor': {'ShortName': 'LVIS',
          'LongName': 'Land, Vegetation, and Ice Sensor'}}}}},
     {'ShortName': 'G-V',
      'LongName': 'Gulfstream V',
      'Type': 'Jet',
      'Instruments': {'Instrument': {'ShortName': 'LVIS',
        'LongName': 'Land, Vegetation, and Ice Sensor',
        'Technique': 'instrument',
        'NumberOfSensors': '1',
        'Sensors': {'Sensor': {'ShortName': 'LVIS',
          'LongName': 'Land, Vegetation, and Ice Sensor'}}}}},
     {'ShortName': 'HU-25C',
      'LongName': 'Dassault HU-25C Guardian',
      'Type': 'Jet',
      'Instruments': {'Instrument': {'ShortName': 'LVIS',
        'LongName': 'Land, Vegetation, and Ice Sensor',
        'Technique': 'instrument',
        'NumberOfSensors': '1',
        'Sensors': {'Sensor': {'ShortName': 'LVIS',
          'LongName': 'Land, Vegetation, and Ice Sensor'}}}}},
     {'ShortName': 'P-3B',
      'LongName': 'Lockheed P-3B Orion',
      'Type': 'Propeller',
      'Instruments': {'Instrument': {'ShortName': 'LVIS',
        'LongName': 'Land, Vegetation, and Ice Sensor',
        'Technique': 'instrument',
        'NumberOfSensors': '1',
        'Sensors': {'Sensor': {'ShortName': 'LVIS',
          'LongName': 'Land, Vegetation, and Ice Sensor'}}}}},
     {'ShortName': 'RQ-4',
      'LongName': 'Northrop Grumman RQ-4 Global Hawk',
      'Type': 'Uncrewed Aerial Vehicles',
      'Instruments': {'Instrument': {'ShortName': 'LVIS',
        'LongName': 'Land, Vegetation, and Ice Sensor',
        'Technique': 'instrument',
        'NumberOfSensors': '1',
        'Sensors': {'Sensor': {'ShortName': 'LVIS',
          'LongName': 'Land, Vegetation, and Ice Sensor'}}}}}]},
   'AdditionalAttributes': {'AdditionalAttribute': [{'Name': 'AircraftID',
      'DataType': 'STRING',
      'Description': 'The identifier of the airplane used by the FAA to uniquely identify each aircraft'},
     {'Name': 'SIPSMetGenVersion',
      'DataType': 'STRING',
      'Description': 'The version of the SIPSMetGen software used to produce the metadata file for this granule'},
     {'Name': 'ThemeID',
      'DataType': 'STRING',
      'Description': 'The identifier of the theme under which data are logically grouped'},
     {'Name': 'identifier_product_doi',
      'DataType': 'STRING',
      'Description': 'Digital object identifier that uniquely identifies this data product'},
     {'Name': 'identifier_product_doi_authority',
      'DataType': 'STRING',
      'Description': 'URL of the digital object identifier resolving authority'}]},
   'Campaigns': {'Campaign': {'ShortName': 'ABoVE',
     'LongName': 'Arctic-Boreal Vulnerability Experiment (ABoVE) NASA field campaign',
     'StartDate': '2017-06-29T00:00:00.000Z',
     'EndDate': '2017-07-17T00:00:00.000Z'}},
   'SpatialInfo': {'SpatialCoverageType': 'HORIZONTAL'},
   'OnlineAccessURLs': {'OnlineAccessURL': [{'URL': 'https://n5eil01u.ecs.nsidc.org/ICEBRIDGE/ABLVIS1B.001',
      'URLDescription': 'Direct download via HTTPS protocol.'},
     {'URL': 'https://search.earthdata.nasa.gov/search?q=ABLVIS1B+V001',
      'URLDescription': "NASA's newest search and order tool for subsetting, reprojecting, and reformatting data."},
     {'URL': 'https://nsidc.org/icebridge/portal/map',
      'URLDescription': 'Tool to visualize, search, and download IceBridge data.'},
     {'URL': 'https://nsidc.org/data/data-access-tool/ABLVIS1B/versions/1/',
      'URLDescription': 'Search and filter data files using a map-based interface'}]},
   'OnlineResources': {'OnlineResource': [{'URL': 'https://doi.org/10.5067/UMRAWS57QAFU',
      'Description': 'Provides access to data, documentation, tools, citation information, support, and other resources.',
      'Type': 'CollectionURL : DATA SET LANDING PAGE'},
     {'URL': 'https://doi.org/10.5067/UMRAWS57QAFU',
      'Description': "Includes a user's guide, supplemental documents like ATBDs and academic papers, How Tos, FAQs, etc.",
      'Type': 'VIEW RELATED INFORMATION : GENERAL DOCUMENTATION'}]},
   'Spatial': {'SpatialCoverageType': 'HORIZONTAL',
    'HorizontalSpatialDomain': {'Geometry': {'CoordinateSystem': 'CARTESIAN',
      'BoundingRectangle': {'WestBoundingCoordinate': '-158.0',
       'NorthBoundingCoordinate': '72.0',
       'EastBoundingCoordinate': '-104.0',
       'SouthBoundingCoordinate': '48.0'}}},
    'GranuleSpatialRepresentation': 'GEODETIC'}}}]

Based on the output of the above cell, we can retrieve the concept-id as collection id and use in the subsequent cells for downloading the granules from this collection.

Searching and Downloading a Granule

[20]:
COLLECTION_ID = ablvis1b_collections[0]['concept-id']

results = maap.searchGranule(
    concept_id=COLLECTION_ID,
    cmr_host="cmr.earthdata.nasa.gov"
)
pprint(f'Got {len(results)} results')


#Validating download
filename = results[0].getData(dataDir)
print(filename)
'Got 20 results'
./data/LVIS1B_ABoVE2017_0629_R1803_056233.h5

Validating the Downloaded Product

Similar to the LVISF1B dataset (as discussed above), ABLVIS1B dataset has products stored as .h5 files. We will be following the same steps as described above to validate the downloaded product.

[21]:
#Testing the HDF5 files
import h5py
with h5py.File(filename, "r") as f:
    print("Keys: %s" % f.keys())
    # get first object name/key; may or may NOT be a group
    a_group_key = list(f.keys())[0]

    # get the object type for a_group_key: usually group or dataset
    print(type(f[a_group_key]))

    # If a_group_key is a group name,
    # this gets the object names in the group and returns as a list
    data = list(f[a_group_key])

    # If a_group_key is a dataset name,
    # this gets the dataset values and returns as a list
    data = list(f[a_group_key])
    # preferred methods to get dataset values:
    ds_obj = f[a_group_key]      # returns as a h5py dataset object
    ds_arr = f[a_group_key][()]  # returns as a numpy array

    print(ds_arr)
Keys: <KeysViewHDF5 ['AZIMUTH', 'INCIDENTANGLE', 'LAT0', 'LAT1215', 'LFID', 'LON0', 'LON1215', 'RANGE', 'RXWAVE', 'SHOTNUMBER', 'SIGMEAN', 'TIME', 'TXWAVE', 'Z0', 'Z1215', 'ancillary_data']>
<class 'h5py._hl.dataset.Dataset'>
[209.55528 209.98833 209.2643  ... 181.83081 183.49066 182.28035]

Accessing LVIS Facility L2 Geolocated Surface Elevation and Canopy Height Product V001

About the Dataset

The LVIS Facility L2 Geolocated Surface Elevation and Canopy Height Product V001 dataset contains Level-2 geolocated surface elevation and canopy height measurements collected by the NASA Land, Vegetation, and Ice Sensor (LVIS) Facility, an imaging lidar and camera sensor suite. The short name for this collection is LVISF2.

Searching the Collection

[23]:
lvisf2_collections = maap.searchCollection(
    short_name='LVISF2',
    version='1',
    cmr_host='cmr.earthdata.nasa.gov'
)
lvisf2_collections
[23]:
[{'concept-id': 'C1723866830-NSIDC_ECS',
  'revision-id': '29',
  'format': 'application/echo10+xml',
  'Collection': {'ShortName': 'LVISF2',
   'VersionId': '1',
   'InsertTime': '2023-08-22T16:21:40.702Z',
   'LastUpdate': '2023-08-22T16:21:40.702Z',
   'LongName': 'Not provided',
   'DataSetId': 'LVIS Facility L2 Geolocated Surface Elevation and Canopy Height Product V001',
   'Description': 'This data set contains Level-2 geolocated surface elevation and canopy height measurements collected by the NASA Land, Vegetation, and Ice Sensor (LVIS) Facility, an imaging lidar and camera sensor suite.',
   'DOI': {'DOI': '10.5067/VP7J20HJQISD'},
   'StandardProduct': 'false',
   'RevisionDate': '2023-05-31T00:00:00.000Z',
   'SuggestedUsage': 'Scientific Research',
   'ProcessingCenter': 'NASA/GSFC/SED/ESD/LRSL',
   'ProcessingLevelId': 'Level 2',
   'ProcessingLevelDescription': 'Derived geophysical variables',
   'ArchiveCenter': 'NASA NSIDC DAAC',
   'CollectionState': 'PLANNED',
   'RestrictionComment': ' These data are freely, openly, and fully accessible, provided that you are logged into your NASA Earthdata profile (https://urs.earthdata.nasa.gov/).',
   'UseConstraints': {'LicenseText': ' These data are freely, openly, and fully available to use without restrictions, provided that you cite the data according to the recommended citation at https://nsidc.org/about/use_copyright.html. For more information on the NASA EOSDIS Data Use Policy, see https://earthdata.nasa.gov/earth-observation-data/data-use-policy.'},
   'DataFormat': 'ASCII',
   'SpatialKeywords': {'Keyword': ['ALASKA',
     'CANADA',
     'GREENLAND',
     'UNITED STATES OF AMERICA',
     'COSTA RICA',
     'FRENCH GUIANA']},
   'Temporal': {'EndsAtPresentFlag': 'false',
    'RangeDateTime': {'BeginningDateTime': '2018-11-07T00:00:00.000Z'}},
   'Contacts': {'Contact': [{'Role': 'ARCHIVER',
      'OrganizationName': 'NASA NSIDC DAAC',
      'OrganizationAddresses': {'Address': {'StreetAddress': 'National Snow and Ice Data Center CIRES, 449 UCB University of Colorado',
        'City': 'Boulder',
        'StateProvince': 'CO',
        'PostalCode': '80309-0449',
        'Country': 'USA'}},
      'OrganizationPhones': {'Phone': {'Number': '1 303 492 6199',
        'Type': 'Telephone'}},
      'OrganizationEmails': {'Email': 'nsidc@nsidc.org'}},
     {'Role': 'DISTRIBUTOR',
      'OrganizationName': 'NASA NSIDC DAAC',
      'OrganizationAddresses': {'Address': {'StreetAddress': 'National Snow and Ice Data Center CIRES, 449 UCB University of Colorado',
        'City': 'Boulder',
        'StateProvince': 'CO',
        'PostalCode': '80309-0449',
        'Country': 'USA'}},
      'OrganizationPhones': {'Phone': {'Number': '1 303 492 6199',
        'Type': 'Telephone'}},
      'OrganizationEmails': {'Email': 'nsidc@nsidc.org'}},
     {'Role': 'PROCESSOR', 'OrganizationName': 'NASA/GSFC/SED/ESD/LRSL'},
     {'Role': 'ORIGINATOR', 'OrganizationName': 'NASA/GSFC/SED/ESD/LRSL'},
     {'Role': 'TECHNICAL CONTACT',
      'ContactPersons': {'ContactPerson': [{'FirstName': 'NSIDC',
         'MiddleName': 'User',
         'LastName': 'Services',
         'JobPosition': 'TECHNICAL CONTACT'},
        {'FirstName': 'J.',
         'MiddleName': 'Bryan',
         'LastName': 'Blair',
         'JobPosition': 'TECHNICAL CONTACT'},
        {'FirstName': 'Michelle',
         'LastName': 'Hofton',
         'JobPosition': 'TECHNICAL CONTACT'}]}}]},
   'ScienceKeywords': {'ScienceKeyword': [{'CategoryKeyword': 'EARTH SCIENCE',
      'TopicKeyword': 'CRYOSPHERE',
      'TermKeyword': 'GLACIERS/ICE SHEETS',
      'VariableLevel1Keyword': {'Value': 'GLACIER ELEVATION/ICE SHEET ELEVATION'}},
     {'CategoryKeyword': 'EARTH SCIENCE',
      'TopicKeyword': 'CRYOSPHERE',
      'TermKeyword': 'SEA ICE',
      'VariableLevel1Keyword': {'Value': 'SEA ICE ELEVATION'}},
     {'CategoryKeyword': 'EARTH SCIENCE',
      'TopicKeyword': 'LAND SURFACE',
      'TermKeyword': 'TOPOGRAPHY',
      'VariableLevel1Keyword': {'Value': 'TERRAIN ELEVATION'}},
     {'CategoryKeyword': 'EARTH SCIENCE',
      'TopicKeyword': 'BIOSPHERE',
      'TermKeyword': 'VEGETATION',
      'VariableLevel1Keyword': {'Value': 'CANOPY CHARACTERISTICS',
       'VariableLevel2Keyword': {'Value': 'VEGETATION HEIGHT'}}}]},
   'Platforms': {'Platform': [{'ShortName': 'B-200',
      'LongName': 'Beechcraft King Air B-200',
      'Type': 'Propeller',
      'Instruments': {'Instrument': {'ShortName': 'LVIS',
        'LongName': 'Land, Vegetation, and Ice Sensor',
        'Technique': 'instrument',
        'NumberOfSensors': '1',
        'Sensors': {'Sensor': {'ShortName': 'LVIS',
          'LongName': 'Land, Vegetation, and Ice Sensor'}}}}},
     {'ShortName': 'G-III',
      'LongName': 'Gulfstream III',
      'Type': 'Jet',
      'Instruments': {'Instrument': {'ShortName': 'LVIS',
        'LongName': 'Land, Vegetation, and Ice Sensor',
        'Technique': 'instrument',
        'NumberOfSensors': '1',
        'Sensors': {'Sensor': {'ShortName': 'LVIS',
          'LongName': 'Land, Vegetation, and Ice Sensor'}}}}},
     {'ShortName': 'G-V',
      'LongName': 'Gulfstream V',
      'Type': 'Jet',
      'Instruments': {'Instrument': {'ShortName': 'LVIS',
        'LongName': 'Land, Vegetation, and Ice Sensor',
        'Technique': 'instrument',
        'NumberOfSensors': '1',
        'Sensors': {'Sensor': {'ShortName': 'LVIS',
          'LongName': 'Land, Vegetation, and Ice Sensor'}}}}},
     {'ShortName': 'P-3B',
      'LongName': 'Lockheed P-3B Orion',
      'Type': 'Propeller',
      'Instruments': {'Instrument': {'ShortName': 'LVIS',
        'LongName': 'Land, Vegetation, and Ice Sensor',
        'Technique': 'instrument',
        'NumberOfSensors': '1',
        'Sensors': {'Sensor': {'ShortName': 'LVIS',
          'LongName': 'Land, Vegetation, and Ice Sensor'}}}}}]},
   'AdditionalAttributes': {'AdditionalAttribute': [{'Name': 'AircraftID',
      'DataType': 'STRING',
      'Description': 'The identifier of the airplane used by the FAA to uniquely identify each aircraft'},
     {'Name': 'SIPSMetGenVersion',
      'DataType': 'STRING',
      'Description': 'The version of the SIPSMetGen software used to produce the metadata file for this granule'},
     {'Name': 'ThemeID',
      'DataType': 'STRING',
      'Description': 'The identifier of the theme under which data are logically grouped'},
     {'Name': 'identifier_product_doi',
      'DataType': 'STRING',
      'Description': 'Digital object identifier that uniquely identifies this data product'},
     {'Name': 'identifier_product_doi_authority',
      'DataType': 'STRING',
      'Description': 'URL of the digital object identifier resolving authority'}]},
   'Campaigns': {'Campaign': [{'ShortName': 'ABoVE',
      'LongName': 'Arctic-Boreal Vulnerability Experiment (ABoVE) NASA field campaign',
      'StartDate': '2017-06-29T00:00:00.000Z',
      'EndDate': '2017-07-17T00:00:00.000Z'},
     {'ShortName': 'GEDI',
      'LongName': "NASA's Global Ecosystem Dynamics Investigation",
      'StartDate': '2019-01-01T00:00:00.000Z',
      'EndDate': '2019-12-31T00:00:00.000Z'},
     {'ShortName': 'MULTI_NASA',
      'LongName': 'Operation IceBridge Multiple Campaigns',
      'StartDate': '1993-01-01T00:00:00.000Z',
      'EndDate': '2025-12-31T00:00:00.000Z'}]},
   'SpatialInfo': {'SpatialCoverageType': 'HORIZONTAL'},
   'OnlineAccessURLs': {'OnlineAccessURL': [{'URL': 'https://n5eil01u.ecs.nsidc.org/ICEBRIDGE/LVISF2.001/',
      'URLDescription': 'Direct download via HTTPS protocol.'},
     {'URL': 'https://search.earthdata.nasa.gov/search?q=LVISF2+V001',
      'URLDescription': "NASA's newest search and order tool for subsetting, reprojecting, and reformatting data."},
     {'URL': 'https://nsidc.org/data/data-access-tool/LVISF2/versions/1/',
      'URLDescription': 'Search and filter data files using a map-based interface'}]},
   'OnlineResources': {'OnlineResource': [{'URL': 'https://doi.org/10.5067/VP7J20HJQISD',
      'Description': 'Provides access to data, documentation, tools, citation information, support, and other resources.',
      'Type': 'CollectionURL : DATA SET LANDING PAGE'},
     {'URL': 'https://doi.org/10.5067/VP7J20HJQISD',
      'Description': "Includes a user's guide, supplemental documents like ATBDs and academic papers, How Tos, FAQs, etc.",
      'Type': 'VIEW RELATED INFORMATION : GENERAL DOCUMENTATION'}]},
   'Spatial': {'SpatialCoverageType': 'HORIZONTAL',
    'HorizontalSpatialDomain': {'Geometry': {'CoordinateSystem': 'CARTESIAN',
      'BoundingRectangle': {'WestBoundingCoordinate': '-167.0',
       'NorthBoundingCoordinate': '88.0',
       'EastBoundingCoordinate': '18.0',
       'SouthBoundingCoordinate': '2.0'}}},
    'GranuleSpatialRepresentation': 'GEODETIC'}}}]

Searching and Downloading a Granule

[24]:
COLLECTION_ID = lvisf2_collections[0]['concept-id']

results = maap.searchGranule(
    concept_id=COLLECTION_ID,
    cmr_host="cmr.earthdata.nasa.gov"
)
pprint(f'Got {len(results)} results')


#Validating download
filename = results[0].getData(dataDir)
print(filename)
'Got 20 results'
./data/LVISF2_US2018_1107_R2011_067463.TXT

We follow the same steps as above for searching and downloading a granule from the LVISF2 collection. However, as we observe, the downloaded product in this case is a .txt file. So, we will be using the numpy Python package for accessing the downloaded text file.

Validating the Downloaded Product

[25]:
#Testing the TXT files from the LVIS collections
import numpy as np
data = np.genfromtxt(filename)
print(data)
[[1.95842916e+09 5.93768900e+06 6.74631929e+04 ... 1.00000000e+00
  1.00000000e+00 1.00000000e+00]
 [1.95842916e+09 5.93769000e+06 6.74631931e+04 ... 1.00000000e+00
  1.00000000e+00 1.00000000e+00]
 [1.95842916e+09 5.93769100e+06 6.74631934e+04 ... 1.00000000e+00
  1.00000000e+00 1.00000000e+00]
 ...
 [1.95842916e+09 6.49713000e+06 6.76030543e+04 ... 1.00000000e+00
  1.00000000e+00 1.00000000e+00]
 [1.95842916e+09 6.49713100e+06 6.76030545e+04 ... 1.00000000e+00
  1.00000000e+00 1.00000000e+00]
 [1.95842916e+09 6.49713200e+06 6.76030548e+04 ... 1.00000000e+00
  1.00000000e+00 1.00000000e+00]]

As we can observe from the output of the above cell, the data values are accessible from the downloaded product. Hence, validating the downloaded file.

Accessing the ABoVE LVIS L2 Geolocated Surface Elevation Product V001

About the Dataset

This dataset contains surface elevation data over Alaska and Western Canada measured by the NASA Land, Vegetation, and Ice Sensor (LVIS), an airborne lidar scanning laser altimeter. The data were collected as part of NASA’s Terrestrial Ecology Program campaign, the Arctic-Boreal Vulnerability Experiment (ABoVE). The short name for this collection is ABLVIS2.

Searching the Collection

[26]:
ablvis2_collections = maap.searchCollection(
    short_name='ABLVIS2',
    version='1',
    cmr_host='cmr.earthdata.nasa.gov'
)
ablvis2_collections
[26]:
[{'concept-id': 'C1513105984-NSIDC_ECS',
  'revision-id': '43',
  'format': 'application/echo10+xml',
  'Collection': {'ShortName': 'ABLVIS2',
   'VersionId': '1',
   'InsertTime': '2023-08-22T16:58:08.004Z',
   'LastUpdate': '2023-08-22T16:58:08.004Z',
   'LongName': 'Not provided',
   'DataSetId': 'ABoVE LVIS L2 Geolocated Surface Elevation Product V001',
   'Description': "This data set contains surface elevation data over Alaska and Western Canada measured by the NASA Land, Vegetation, and Ice Sensor (LVIS), an airborne lidar scanning laser altimeter. The data were collected as part of NASA's Terrestrial Ecology Program campaign, the Arctic-Boreal Vulnerability Experiment (ABoVE).",
   'DOI': {'DOI': '10.5067/IA5WAX7K3YGY'},
   'StandardProduct': 'false',
   'RevisionDate': '2023-05-31T00:00:00.000Z',
   'SuggestedUsage': 'Scientific Research',
   'ProcessingCenter': 'NASA/GSFC/SED/ESD/LRSL',
   'ProcessingLevelId': 'Level 2',
   'ProcessingLevelDescription': 'Derived geophysical variables',
   'ArchiveCenter': 'NASA NSIDC DAAC',
   'CollectionState': 'PLANNED',
   'RestrictionComment': ' These data are freely, openly, and fully accessible, provided that you are logged into your NASA Earthdata profile (https://urs.earthdata.nasa.gov/).',
   'UseConstraints': {'LicenseText': ' These data are freely, openly, and fully available to use without restrictions, provided that you cite the data according to the recommended citation at https://nsidc.org/about/use_copyright.html. For more information on the NASA EOSDIS Data Use Policy, see https://earthdata.nasa.gov/earth-observation-data/data-use-policy.'},
   'DataFormat': 'ASCII',
   'SpatialKeywords': {'Keyword': ['CANADA', 'ALASKA']},
   'Temporal': {'EndsAtPresentFlag': 'false',
    'RangeDateTime': {'BeginningDateTime': '2017-06-29T00:00:00.000Z',
     'EndingDateTime': '2017-07-17T23:59:59.999Z'}},
   'Contacts': {'Contact': [{'Role': 'ARCHIVER',
      'OrganizationName': 'NASA NSIDC DAAC',
      'OrganizationAddresses': {'Address': {'StreetAddress': 'National Snow and Ice Data Center CIRES, 449 UCB University of Colorado',
        'City': 'Boulder',
        'StateProvince': 'CO',
        'PostalCode': '80309-0449',
        'Country': 'USA'}},
      'OrganizationPhones': {'Phone': {'Number': '1 303 492 6199',
        'Type': 'Telephone'}},
      'OrganizationEmails': {'Email': 'nsidc@nsidc.org'}},
     {'Role': 'DISTRIBUTOR',
      'OrganizationName': 'NASA NSIDC DAAC',
      'OrganizationAddresses': {'Address': {'StreetAddress': 'National Snow and Ice Data Center CIRES, 449 UCB University of Colorado',
        'City': 'Boulder',
        'StateProvince': 'CO',
        'PostalCode': '80309-0449',
        'Country': 'USA'}},
      'OrganizationPhones': {'Phone': {'Number': '1 303 492 6199',
        'Type': 'Telephone'}},
      'OrganizationEmails': {'Email': 'nsidc@nsidc.org'}},
     {'Role': 'PROCESSOR', 'OrganizationName': 'NASA/GSFC/SED/ESD/LRSL'},
     {'Role': 'ORIGINATOR', 'OrganizationName': 'NASA/GSFC/SED/ESD/LRSL'},
     {'Role': 'TECHNICAL CONTACT',
      'ContactPersons': {'ContactPerson': [{'FirstName': 'J.',
         'MiddleName': 'Bryan',
         'LastName': 'Blair',
         'JobPosition': 'TECHNICAL CONTACT'},
        {'FirstName': 'Michelle',
         'LastName': 'Hofton',
         'JobPosition': 'TECHNICAL CONTACT'},
        {'FirstName': 'NSIDC',
         'MiddleName': 'User',
         'LastName': 'Services',
         'JobPosition': 'TECHNICAL CONTACT'},
        {'FirstName': 'J.',
         'MiddleName': 'Bryan',
         'LastName': 'Blair',
         'JobPosition': 'TECHNICAL CONTACT'},
        {'FirstName': 'Michelle',
         'LastName': 'Hofton',
         'JobPosition': 'TECHNICAL CONTACT'}]}}]},
   'ScienceKeywords': {'ScienceKeyword': {'CategoryKeyword': 'EARTH SCIENCE',
     'TopicKeyword': 'LAND SURFACE',
     'TermKeyword': 'TOPOGRAPHY',
     'VariableLevel1Keyword': {'Value': 'TERRAIN ELEVATION'}}},
   'Platforms': {'Platform': [{'ShortName': 'AIRCRAFT',
      'LongName': 'Not provided',
      'Type': 'Aircraft',
      'Instruments': {'Instrument': [{'ShortName': 'ALTIMETERS',
         'Technique': 'instrument',
         'NumberOfSensors': '1',
         'Sensors': {'Sensor': {'ShortName': 'ALTIMETERS'}}},
        {'ShortName': 'LASERS',
         'LongName': 'Light Amplification by Stimulated Emission of Radiation',
         'Technique': 'instrument',
         'NumberOfSensors': '1',
         'Sensors': {'Sensor': {'ShortName': 'LASERS',
           'LongName': 'Light Amplification by Stimulated Emission of Radiation'}}}]}},
     {'ShortName': 'B-200',
      'LongName': 'Beechcraft King Air B-200',
      'Type': 'Propeller',
      'Instruments': {'Instrument': {'ShortName': 'LVIS',
        'LongName': 'Land, Vegetation, and Ice Sensor',
        'Technique': 'instrument',
        'NumberOfSensors': '1',
        'Sensors': {'Sensor': {'ShortName': 'LVIS',
          'LongName': 'Land, Vegetation, and Ice Sensor'}}}}},
     {'ShortName': 'C-130',
      'LongName': 'Lockheed C-130 Hercules',
      'Type': 'Propeller',
      'Instruments': {'Instrument': {'ShortName': 'LVIS',
        'LongName': 'Land, Vegetation, and Ice Sensor',
        'Technique': 'instrument',
        'NumberOfSensors': '1',
        'Sensors': {'Sensor': {'ShortName': 'LVIS',
          'LongName': 'Land, Vegetation, and Ice Sensor'}}}}},
     {'ShortName': 'DC-8',
      'LongName': 'Douglas DC-8',
      'Type': 'Aircraft',
      'Characteristics': {'Characteristic': {'Name': 'AircraftID',
        'Description': 'The identifier of the airplane used by the FAA to uniquely identify each aircraft',
        'DataType': 'STRING',
        'Unit': 'Not Applicable',
        'Value': 'N817NA'}},
      'Instruments': {'Instrument': {'ShortName': 'LVIS',
        'LongName': 'Land, Vegetation, and Ice Sensor',
        'Technique': 'instrument',
        'NumberOfSensors': '1',
        'Sensors': {'Sensor': {'ShortName': 'LVIS',
          'LongName': 'Land, Vegetation, and Ice Sensor'}}}}},
     {'ShortName': 'G-V',
      'LongName': 'Gulfstream V',
      'Type': 'Jet',
      'Instruments': {'Instrument': {'ShortName': 'LVIS',
        'LongName': 'Land, Vegetation, and Ice Sensor',
        'Technique': 'instrument',
        'NumberOfSensors': '1',
        'Sensors': {'Sensor': {'ShortName': 'LVIS',
          'LongName': 'Land, Vegetation, and Ice Sensor'}}}}},
     {'ShortName': 'HU-25C',
      'LongName': 'Dassault HU-25C Guardian',
      'Type': 'Jet',
      'Instruments': {'Instrument': {'ShortName': 'LVIS',
        'LongName': 'Land, Vegetation, and Ice Sensor',
        'Technique': 'instrument',
        'NumberOfSensors': '1',
        'Sensors': {'Sensor': {'ShortName': 'LVIS',
          'LongName': 'Land, Vegetation, and Ice Sensor'}}}}},
     {'ShortName': 'P-3B',
      'LongName': 'Lockheed P-3B Orion',
      'Type': 'Propeller',
      'Instruments': {'Instrument': {'ShortName': 'LVIS',
        'LongName': 'Land, Vegetation, and Ice Sensor',
        'Technique': 'instrument',
        'NumberOfSensors': '1',
        'Sensors': {'Sensor': {'ShortName': 'LVIS',
          'LongName': 'Land, Vegetation, and Ice Sensor'}}}}},
     {'ShortName': 'RQ-4',
      'LongName': 'Northrop Grumman RQ-4 Global Hawk',
      'Type': 'Uncrewed Aerial Vehicles',
      'Instruments': {'Instrument': {'ShortName': 'LVIS',
        'LongName': 'Land, Vegetation, and Ice Sensor',
        'Technique': 'instrument',
        'NumberOfSensors': '1',
        'Sensors': {'Sensor': {'ShortName': 'LVIS',
          'LongName': 'Land, Vegetation, and Ice Sensor'}}}}}]},
   'AdditionalAttributes': {'AdditionalAttribute': [{'Name': 'AircraftID',
      'DataType': 'STRING',
      'Description': 'The identifier of the airplane used by the FAA to uniquely identify each aircraft'},
     {'Name': 'SIPSMetGenVersion',
      'DataType': 'STRING',
      'Description': 'The version of the SIPSMetGen software used to produce the metadata file for this granule'},
     {'Name': 'ThemeID',
      'DataType': 'STRING',
      'Description': 'The identifier of the theme under which data are logically grouped'},
     {'Name': 'identifier_product_doi',
      'DataType': 'STRING',
      'Description': 'Digital object identifier that uniquely identifies this data product'},
     {'Name': 'identifier_product_doi_authority',
      'DataType': 'STRING',
      'Description': 'URL of the digital object identifier resolving authority'}]},
   'Campaigns': {'Campaign': {'ShortName': 'ABoVE',
     'LongName': 'Arctic-Boreal Vulnerability Experiment (ABoVE) NASA field campaign',
     'StartDate': '2017-06-29T00:00:00.000Z',
     'EndDate': '2017-07-17T00:00:00.000Z'}},
   'SpatialInfo': {'SpatialCoverageType': 'HORIZONTAL'},
   'OnlineAccessURLs': {'OnlineAccessURL': [{'URL': 'https://n5eil01u.ecs.nsidc.org/ICEBRIDGE/ABLVIS2.001/',
      'URLDescription': 'Direct download via HTTPS protocol.'},
     {'URL': 'https://search.earthdata.nasa.gov/search?q=ABLVIS2+V001',
      'URLDescription': "NASA's newest search and order tool for subsetting, reprojecting, and reformatting data."},
     {'URL': 'https://nsidc.org/icebridge/portal/map',
      'URLDescription': 'Tool to visualize, search, and download IceBridge data.'},
     {'URL': 'https://nsidc.org/data/data-access-tool/ABLVIS2/versions/1/',
      'URLDescription': 'Search and filter data files using a map-based interface'}]},
   'OnlineResources': {'OnlineResource': [{'URL': 'https://doi.org/10.5067/IA5WAX7K3YGY',
      'Description': 'Provides access to data, documentation, tools, citation information, support, and other resources.',
      'Type': 'CollectionURL : DATA SET LANDING PAGE'},
     {'URL': 'https://doi.org/10.5067/IA5WAX7K3YGY',
      'Description': "Includes a user's guide, supplemental documents like ATBDs and academic papers, How Tos, FAQs, etc.",
      'Type': 'VIEW RELATED INFORMATION : GENERAL DOCUMENTATION'}]},
   'Spatial': {'SpatialCoverageType': 'HORIZONTAL',
    'HorizontalSpatialDomain': {'Geometry': {'CoordinateSystem': 'CARTESIAN',
      'BoundingRectangle': {'WestBoundingCoordinate': '-158.0',
       'NorthBoundingCoordinate': '72.0',
       'EastBoundingCoordinate': '-104.0',
       'SouthBoundingCoordinate': '48.0'}}},
    'GranuleSpatialRepresentation': 'GEODETIC'}}}]

Searching and Downloading a Granule

We follow the same steps as above.

[27]:
COLLECTION_ID = ablvis2_collections[0]['concept-id']

results = maap.searchGranule(
    concept_id=COLLECTION_ID,
    cmr_host="cmr.earthdata.nasa.gov"
)
pprint(f'Got {len(results)} results')


#Validating download
filename = results[0].getData(dataDir)
print(filename)
'Got 20 results'
./data/LVIS2_ABoVE2017_0629_R1803_056233.TXT

Validating the Dataset

Since the output for this data product is also downloaded as a text file, we will follow the same steps as decribed above for the LVISF2 data product.

[28]:
#Testing the downloaded TXT file
import numpy as np
data = np.genfromtxt(filename)
print(data)
[[1.95793304e+09 3.99310900e+06 5.62334890e+04 ... 1.00000000e+00
  1.00000000e+00 1.00000000e+00]
 [1.95793304e+09 3.99311000e+06 5.62334890e+04 ... 1.00000000e+00
  1.00000000e+00 1.00000000e+00]
 [1.95793304e+09 3.99311100e+06 5.62334890e+04 ... 1.00000000e+00
  1.00000000e+00 1.00000000e+00]
 ...
 [1.95793306e+09 5.43227700e+06 5.65932850e+04 ... 1.00000000e+00
  1.00000000e+00 1.00000000e+00]
 [1.95793306e+09 5.43227900e+06 5.65932850e+04 ... 1.00000000e+00
  1.00000000e+00 1.00000000e+00]
 [1.95793306e+09 5.43228200e+06 5.65932860e+04 ... 1.00000000e+00
  1.00000000e+00 1.00000000e+00]]

As observed from the output of the above cell, the data values are accessible from the downloaded product. Hence, validating the downloaded file.

Accessing the AfriSAR LVIS L1B Geolocated Return Energy Waveforms V001

About the Dataset

The AfriSAR LVIS L1B Geolocated Return Energy Waveforms V001 dataset contains return energy waveform data over Gabon, Africa. The measurements were taken by the NASA Land, Vegetation, and Ice Sensor (LVIS), an airborne lidar scanning laser altimeter. The data were collected as part of a NASA campaign, in collaboration with the European Space Agency (ESA) mission AfriSAR. This collection has AFLVIS1B as it’s short name.

Searching the Collection

[29]:
aflvis1b_collections = maap.searchCollection(
    short_name='AFLVIS1B',
    version='1',
    cmr_host='cmr.earthdata.nasa.gov'
)
aflvis1b_collections
[29]:
[{'concept-id': 'C1549378019-NSIDC_ECS',
  'revision-id': '43',
  'format': 'application/echo10+xml',
  'Collection': {'ShortName': 'AFLVIS1B',
   'VersionId': '1',
   'InsertTime': '2023-08-22T16:12:12.094Z',
   'LastUpdate': '2023-08-22T16:12:12.094Z',
   'LongName': 'Not provided',
   'DataSetId': 'AfriSAR LVIS L1B Geolocated Return Energy Waveforms V001',
   'Description': 'This data set contains return energy waveform data over Gabon, Africa. The measurements were taken by the NASA Land, Vegetation, and Ice Sensor (LVIS), an airborne lidar scanning laser altimeter. The data were collected as part of a NASA campaign, in collaboration with the European Space Agency (ESA) mission AfriSAR.',
   'DOI': {'DOI': '10.5067/ED5IYGVTB50Z'},
   'StandardProduct': 'false',
   'RevisionDate': '2023-05-31T00:00:00.000Z',
   'SuggestedUsage': 'Scientific Research',
   'ProcessingCenter': 'NASA/GSFC/SED/ESD/LRSL',
   'ProcessingLevelId': 'Level 1B',
   'ProcessingLevelDescription': 'Sensor units',
   'ArchiveCenter': 'NASA NSIDC DAAC',
   'CollectionState': 'PLANNED',
   'RestrictionComment': ' These data are freely, openly, and fully accessible, provided that you are logged into your NASA Earthdata profile (https://urs.earthdata.nasa.gov/).',
   'UseConstraints': {'LicenseText': ' These data are freely, openly, and fully available to use without restrictions, provided that you cite the data according to the recommended citation at https://nsidc.org/about/use_copyright.html. For more information on the NASA EOSDIS Data Use Policy, see https://earthdata.nasa.gov/earth-observation-data/data-use-policy.'},
   'DataFormat': 'HDF5',
   'SpatialKeywords': {'Keyword': 'GABON'},
   'Temporal': {'EndsAtPresentFlag': 'false',
    'RangeDateTime': {'BeginningDateTime': '2016-02-20T00:00:00.000Z',
     'EndingDateTime': '2016-03-08T23:59:59.999Z'}},
   'Contacts': {'Contact': [{'Role': 'ARCHIVER',
      'OrganizationName': 'NASA NSIDC DAAC',
      'OrganizationAddresses': {'Address': {'StreetAddress': 'National Snow and Ice Data Center CIRES, 449 UCB University of Colorado',
        'City': 'Boulder',
        'StateProvince': 'CO',
        'PostalCode': '80309-0449',
        'Country': 'USA'}},
      'OrganizationPhones': {'Phone': {'Number': '1 303 492 6199',
        'Type': 'Telephone'}},
      'OrganizationEmails': {'Email': 'nsidc@nsidc.org'}},
     {'Role': 'DISTRIBUTOR',
      'OrganizationName': 'NASA NSIDC DAAC',
      'OrganizationAddresses': {'Address': {'StreetAddress': 'National Snow and Ice Data Center CIRES, 449 UCB University of Colorado',
        'City': 'Boulder',
        'StateProvince': 'CO',
        'PostalCode': '80309-0449',
        'Country': 'USA'}},
      'OrganizationPhones': {'Phone': {'Number': '1 303 492 6199',
        'Type': 'Telephone'}},
      'OrganizationEmails': {'Email': 'nsidc@nsidc.org'}},
     {'Role': 'PROCESSOR', 'OrganizationName': 'NASA/GSFC/SED/ESD/LRSL'},
     {'Role': 'ORIGINATOR', 'OrganizationName': 'NASA/GSFC/SED/ESD/LRSL'},
     {'Role': 'TECHNICAL CONTACT',
      'ContactPersons': {'ContactPerson': [{'FirstName': 'J.',
         'MiddleName': 'Bryan',
         'LastName': 'Blair',
         'JobPosition': 'TECHNICAL CONTACT'},
        {'FirstName': 'Michelle',
         'LastName': 'Hofton',
         'JobPosition': 'TECHNICAL CONTACT'},
        {'FirstName': 'NSIDC',
         'MiddleName': 'User',
         'LastName': 'Services',
         'JobPosition': 'TECHNICAL CONTACT'},
        {'FirstName': 'J.',
         'MiddleName': 'Bryan',
         'LastName': 'Blair',
         'JobPosition': 'TECHNICAL CONTACT'},
        {'FirstName': 'Michelle',
         'LastName': 'Hofton',
         'JobPosition': 'TECHNICAL CONTACT'}]}}]},
   'ScienceKeywords': {'ScienceKeyword': {'CategoryKeyword': 'EARTH SCIENCE',
     'TopicKeyword': 'SPECTRAL/ENGINEERING',
     'TermKeyword': 'INFRARED WAVELENGTHS',
     'VariableLevel1Keyword': {'Value': 'SENSOR COUNTS'}}},
   'Platforms': {'Platform': [{'ShortName': 'AIRCRAFT',
      'LongName': 'Not provided',
      'Type': 'Aircraft',
      'Instruments': {'Instrument': [{'ShortName': 'ALTIMETERS',
         'Technique': 'instrument',
         'NumberOfSensors': '1',
         'Sensors': {'Sensor': {'ShortName': 'ALTIMETERS'}}},
        {'ShortName': 'LASERS',
         'LongName': 'Light Amplification by Stimulated Emission of Radiation',
         'Technique': 'instrument',
         'NumberOfSensors': '1',
         'Sensors': {'Sensor': {'ShortName': 'LASERS',
           'LongName': 'Light Amplification by Stimulated Emission of Radiation'}}}]}},
     {'ShortName': 'B-200',
      'LongName': 'Beechcraft King Air B-200',
      'Type': 'Propeller',
      'Instruments': {'Instrument': {'ShortName': 'LVIS',
        'LongName': 'Land, Vegetation, and Ice Sensor',
        'Technique': 'instrument',
        'NumberOfSensors': '1',
        'Sensors': {'Sensor': {'ShortName': 'LVIS',
          'LongName': 'Land, Vegetation, and Ice Sensor'}}}}},
     {'ShortName': 'C-130',
      'LongName': 'Lockheed C-130 Hercules',
      'Type': 'Propeller',
      'Instruments': {'Instrument': {'ShortName': 'LVIS',
        'LongName': 'Land, Vegetation, and Ice Sensor',
        'Technique': 'instrument',
        'NumberOfSensors': '1',
        'Sensors': {'Sensor': {'ShortName': 'LVIS',
          'LongName': 'Land, Vegetation, and Ice Sensor'}}}}},
     {'ShortName': 'DC-8',
      'LongName': 'Douglas DC-8',
      'Type': 'Aircraft',
      'Characteristics': {'Characteristic': {'Name': 'AircraftID',
        'Description': 'The identifier of the airplane used by the FAA to uniquely identify each aircraft',
        'DataType': 'STRING',
        'Unit': 'Not Applicable',
        'Value': 'N817NA'}},
      'Instruments': {'Instrument': {'ShortName': 'LVIS',
        'LongName': 'Land, Vegetation, and Ice Sensor',
        'Technique': 'instrument',
        'NumberOfSensors': '1',
        'Sensors': {'Sensor': {'ShortName': 'LVIS',
          'LongName': 'Land, Vegetation, and Ice Sensor'}}}}},
     {'ShortName': 'G-V',
      'LongName': 'Gulfstream V',
      'Type': 'Jet',
      'Instruments': {'Instrument': {'ShortName': 'LVIS',
        'LongName': 'Land, Vegetation, and Ice Sensor',
        'Technique': 'instrument',
        'NumberOfSensors': '1',
        'Sensors': {'Sensor': {'ShortName': 'LVIS',
          'LongName': 'Land, Vegetation, and Ice Sensor'}}}}},
     {'ShortName': 'HU-25C',
      'LongName': 'Dassault HU-25C Guardian',
      'Type': 'Jet',
      'Instruments': {'Instrument': {'ShortName': 'LVIS',
        'LongName': 'Land, Vegetation, and Ice Sensor',
        'Technique': 'instrument',
        'NumberOfSensors': '1',
        'Sensors': {'Sensor': {'ShortName': 'LVIS',
          'LongName': 'Land, Vegetation, and Ice Sensor'}}}}},
     {'ShortName': 'P-3B',
      'LongName': 'Lockheed P-3B Orion',
      'Type': 'Propeller',
      'Instruments': {'Instrument': {'ShortName': 'LVIS',
        'LongName': 'Land, Vegetation, and Ice Sensor',
        'Technique': 'instrument',
        'NumberOfSensors': '1',
        'Sensors': {'Sensor': {'ShortName': 'LVIS',
          'LongName': 'Land, Vegetation, and Ice Sensor'}}}}},
     {'ShortName': 'RQ-4',
      'LongName': 'Northrop Grumman RQ-4 Global Hawk',
      'Type': 'Uncrewed Aerial Vehicles',
      'Instruments': {'Instrument': {'ShortName': 'LVIS',
        'LongName': 'Land, Vegetation, and Ice Sensor',
        'Technique': 'instrument',
        'NumberOfSensors': '1',
        'Sensors': {'Sensor': {'ShortName': 'LVIS',
          'LongName': 'Land, Vegetation, and Ice Sensor'}}}}}]},
   'AdditionalAttributes': {'AdditionalAttribute': [{'Name': 'AircraftID',
      'DataType': 'STRING',
      'Description': 'The identifier of the airplane used by the FAA to uniquely identify each aircraft'},
     {'Name': 'SIPSMetGenVersion',
      'DataType': 'STRING',
      'Description': 'The version of the SIPSMetGen software used to produce the metadata file for this granule'},
     {'Name': 'ThemeID',
      'DataType': 'STRING',
      'Description': 'The identifier of the theme under which data are logically grouped'},
     {'Name': 'identifier_product_doi',
      'DataType': 'STRING',
      'Description': 'Digital object identifier that uniquely identifies this data product'},
     {'Name': 'identifier_product_doi_authority',
      'DataType': 'STRING',
      'Description': 'URL of the digital object identifier resolving authority'}]},
   'Campaigns': {'Campaign': {'ShortName': 'AfriSAR',
     'LongName': 'NASA campaign in collaboration with European Space Agency (ESA) in Gabon, Africa ',
     'StartDate': '2016-02-02T00:00:00.000Z',
     'EndDate': '2016-03-08T00:00:00.000Z'}},
   'SpatialInfo': {'SpatialCoverageType': 'HORIZONTAL'},
   'OnlineAccessURLs': {'OnlineAccessURL': [{'URL': 'https://n5eil01u.ecs.nsidc.org/ICEBRIDGE/AFLVIS1B.001',
      'URLDescription': 'Direct download via HTTPS protocol.'},
     {'URL': 'https://search.earthdata.nasa.gov/search?q=AFLVIS1B+V001',
      'URLDescription': "NASA's newest search and order tool for subsetting, reprojecting, and reformatting data."},
     {'URL': 'https://nsidc.org/data/data-access-tool/AFLVIS1B/versions/1/',
      'URLDescription': 'Search and filter data files using a map-based interface'}]},
   'OnlineResources': {'OnlineResource': [{'URL': 'https://doi.org/10.5067/ED5IYGVTB50Z',
      'Description': 'Provides access to data, documentation, tools, citation information, support, and other resources.',
      'Type': 'CollectionURL : DATA SET LANDING PAGE'},
     {'URL': 'https://doi.org/10.5067/ED5IYGVTB50Z',
      'Description': "Includes a user's guide, supplemental documents like ATBDs and academic papers, How Tos, FAQs, etc.",
      'Type': 'VIEW RELATED INFORMATION : GENERAL DOCUMENTATION'}]},
   'Spatial': {'SpatialCoverageType': 'HORIZONTAL',
    'HorizontalSpatialDomain': {'Geometry': {'CoordinateSystem': 'CARTESIAN',
      'BoundingRectangle': {'WestBoundingCoordinate': '8.0',
       'NorthBoundingCoordinate': '1.0',
       'EastBoundingCoordinate': '12.0',
       'SouthBoundingCoordinate': '-2.0'}}},
    'GranuleSpatialRepresentation': 'GEODETIC'}}}]

Searching and Downloading a Granule

We will be following the same steps as described above for the other data products.

[31]:
COLLECTION_ID = aflvis1b_collections[0]['concept-id']

results = maap.searchGranule(
    concept_id=COLLECTION_ID,
    cmr_host="cmr.earthdata.nasa.gov"
)
pprint(f'Got {len(results)} results')


#Validating download
filename = results[0].getData(dataDir)
print(filename)
'Got 20 results'
./data/LVIS1B_Gabon2016_0220_R1808_038024.h5

Validating the Product

We observe that the downloaded product is stored as a .h5 file similar to the ABLVIS1B and LVISF1B data products discussed above. So, we will be using the h5py package to validate the dowloaded product.

[32]:
#Testing the HDF5 files
import h5py
with h5py.File(filename, "r") as f:
    print("Keys: %s" % f.keys())
    # get first object name/key; may or may NOT be a group
    a_group_key = list(f.keys())[0]

    # get the object type for a_group_key: usually group or dataset
    print(type(f[a_group_key]))

    # If a_group_key is a group name,
    # this gets the object names in the group and returns as a list
    data = list(f[a_group_key])

    # If a_group_key is a dataset name,
    # this gets the dataset values and returns as a list
    data = list(f[a_group_key])
    # preferred methods to get dataset values:
    ds_obj = f[a_group_key]      # returns as a h5py dataset object
    ds_arr = f[a_group_key][()]  # returns as a numpy array

    print(ds_arr)
Keys: <KeysViewHDF5 ['AZIMUTH', 'INCIDENTANGLE', 'LAT0', 'LAT1023', 'LFID', 'LON0', 'LON1023', 'RANGE', 'RXWAVE', 'SHOTNUMBER', 'SIGMEAN', 'TIME', 'TXWAVE', 'Z0', 'Z1023', 'ancillary_data']>
<class 'h5py._hl.dataset.Dataset'>
[170.88405 171.3952  179.33963 ... 178.35054 178.84067 179.31787]

As observed from the output of the above cell, the data values are retrieved from the downloaded product. Hence, validating the downloaded file.

References

  1. Blair, J. B. and M. Hofton. (2020). LVIS Facility L1B Geolocated Return Energy Waveforms, Version 1 [Data Set]. Boulder, Colorado USA. NASA National Snow and Ice Data Center Distributed Active Archive Center. https://doi.org/10.5067/XQJ8PN8FTIDG. Date Accessed 08-17-2023.

  2. Blair, J. B. and M. Hofton. (2018). ABoVE LVIS L1B Geolocated Return Energy Waveforms, Version 1 [Data Set]. Boulder, Colorado USA. NASA National Snow and Ice Data Center Distributed Active Archive Center. https://doi.org/10.5067/UMRAWS57QAFU. Date Accessed 08-17-2023.

  3. Blair, J. B. and M. Hofton. (2020). LVIS Facility L2 Geolocated Surface Elevation and Canopy Height Product, Version 1 [Data Set]. Boulder, Colorado USA. NASA National Snow and Ice Data Center Distributed Active Archive Center. https://doi.org/10.5067/VP7J20HJQISD. Date Accessed 08-17-2023.

  4. Blair, J. B. and M. Hofton. (2018). ABoVE LVIS L2 Geolocated Surface Elevation Product, Version 1 [Data Set]. Boulder, Colorado USA. NASA National Snow and Ice Data Center Distributed Active Archive Center. https://doi.org/10.5067/IA5WAX7K3YGY. Date Accessed 08-17-2023.

  5. Blair, J. B. and M. Hofton. (2018). AfriSAR LVIS L1B Geolocated Return Energy Waveforms, Version 1 [Data Set]. Boulder, Colorado USA. NASA National Snow and Ice Data Center Distributed Active Archive Center. https://doi.org/10.5067/ED5IYGVTB50Z. Date Accessed 08-17-2023.