Downloading sar
import sys
sys.path.append("../")
# import the Access Swesarr Class from the access_swesarr submodule
from swesarr_pytools.access_swesarr import AccessSAR
import pprint
# Optional import for data
from datetime import date
The following cells demonstrate how to view metadata and search for flights within a specific time range.
data_meta: Provides key-value pairs that map flight paths to their corresponding dates.
flight_name : Gives a complete list of flight paths
flight_dates: Give a complete list of flight dates
swesarr_object = AccessSAR() # instantiates an object of the Access Swesarr Class
swesarr_metadata = swesarr_object.data_meta # The meta data can be retrieve by simply calling the data_meta
pprint.pprint(f"Flight meta key value pair: {swesarr_metadata}")
("Flight meta key value pair: {'GRMCT1_13801_19005_010_191106_225_XX_01/': "
"datetime.date(2019, 11, 6), 'GRMCT1_13802_19004_013_191105_225_XX_01/': "
"datetime.date(2019, 11, 5), 'GRMCT1_13802_19005_016_191106_225_XX_01/': "
"datetime.date(2019, 11, 6), 'GRMCT1_13803_19004_019_191105_225_XX_01/': "
"datetime.date(2019, 11, 5), 'GRMCT2_13802_20006_012_200210_225_XX_01/': "
"datetime.date(2020, 2, 10), 'GRMCT2_13802_20008_011_200212_225_XX_01/': "
"datetime.date(2020, 2, 12), 'GRMCT2_13802_20009_004_200212_225_XX_01/': "
"datetime.date(2020, 2, 12), 'GRMCT2_13804_20007_022_200211_225_XX_01/': "
"datetime.date(2020, 2, 11), 'GRMCT2_13804_20008_015_200212_225_XX_01/': "
"datetime.date(2020, 2, 12), 'GRMCT2_13804_20009_008_200212_225_XX_01/': "
"datetime.date(2020, 2, 12), 'GRMCT2_13806_20007_026_200211_225_XX_01/': "
"datetime.date(2020, 2, 11), 'GRMCT2_13806_20008_019_200212_225_XX_01/': "
"datetime.date(2020, 2, 12), 'GRMCT2_31601_20006_011_200210_225_XX_01/': "
"datetime.date(2020, 2, 10), 'GRMCT2_31801_20007_016_200211_225_XX_01/': "
"datetime.date(2020, 2, 11), 'GRMCT2_31801_20008_009_200212_225_XX_01/': "
"datetime.date(2020, 2, 12), 'GRMCT2_31803_20007_020_200211_225_XX_01/': "
"datetime.date(2020, 2, 11), 'GRMCT2_31803_20008_013_200212_225_XX_01/': "
"datetime.date(2020, 2, 12), 'GRMCT2_31803_20009_006_200212_225_XX_01/': "
"datetime.date(2020, 2, 12), 'GRMCT2_31805_20008_017_200212_225_XX_01/': "
"datetime.date(2020, 2, 12), 'GRMCT2_31901_20009_002_200212_225_XX_01/': "
"datetime.date(2020, 2, 12), 'GRMCT2_31905_20007_024_200211_225_XX_01/': "
"datetime.date(2020, 2, 11), 'GRMNT1_09302_20006_009_200210_225_XX_01/': "
"datetime.date(2020, 2, 10), 'GRMNT1_09401_19005_006_191106_225_XX_01/': "
"datetime.date(2019, 11, 6), 'GRMNT1_09401_20006_005_200210_225_XX_01/': "
"datetime.date(2020, 2, 10), 'GRMNT1_09401_20007_007_200211_225_XX_01/': "
"datetime.date(2020, 2, 11), 'GRMNT1_09402_19004_009_191105_225_XX_01/': "
"datetime.date(2019, 11, 5), 'GRMNT1_09402_19005_012_191106_225_XX_01/': "
"datetime.date(2019, 11, 6), 'GRMNT1_09402_20007_010_200211_225_XX_01/': "
"datetime.date(2020, 2, 11), 'GRMNT1_09402_20008_027_200212_225_XX_01/': "
"datetime.date(2020, 2, 12), 'GRMNT1_09403_19004_015_191105_225_XX_01/': "
"datetime.date(2019, 11, 5), 'GRMNT1_09403_19005_018_191106_225_XX_01/': "
"datetime.date(2019, 11, 6), 'GRMNT1_09403_20007_014_200211_225_XX_01/': "
"datetime.date(2020, 2, 11), 'GRMNT1_09403_20008_031_200212_225_XX_01/': "
"datetime.date(2020, 2, 12), 'GRMNT1_09501_20008_023_200212_225_XX_01/': "
"datetime.date(2020, 2, 12), 'GRMNT1_09502_20007_010_200211_225_XX_01/': "
"datetime.date(2020, 2, 11), 'GRMST1_27302_20006_007_200210_225_XX_01/': "
"datetime.date(2020, 2, 10), 'GRMST1_27401_19003_007_191104_225_XX_01/': "
"datetime.date(2019, 11, 4), 'GRMST1_27401_19004_005_191105_225_XX_01/': "
"datetime.date(2019, 11, 5), 'GRMST1_27401_19005_008_191106_225_XX_01/': "
"datetime.date(2019, 11, 6), 'GRMST1_27401_20007_005_200211_225_XX_01/': "
"datetime.date(2020, 2, 11), 'GRMST1_27401_20008_021_200212_225_XX_01/': "
"datetime.date(2020, 2, 12), 'GRMST1_27402_19004_011_191105_225_XX_01/': "
"datetime.date(2019, 11, 5), 'GRMST1_27402_19005_014_191106_225_XX_01/': "
"datetime.date(2019, 11, 6), 'GRMST1_27402_20008_025_200212_225_XX_01/': "
"datetime.date(2020, 2, 12), 'GRMST1_27403_19004_017_191105_225_XX_01/': "
"datetime.date(2019, 11, 5), 'GRMST1_27403_20007_012_200211_225_XX_01/': "
"datetime.date(2020, 2, 11), 'GRMST1_27403_20008_029_200212_225_XX_01/': "
"datetime.date(2020, 2, 12), 'GRMST1_27501_20006_003_200210_225_XX_01/': "
"datetime.date(2020, 2, 10), 'GRMST1_27502_20007_009_200211_225_XX_01/': "
'datetime.date(2020, 2, 11)}')
flight_paths = swesarr_object.flight_names
pprint.pprint(f"Flight Paths: {flight_paths}")
("Flight Paths: ['GRMCT1_13801_19005_010_191106_225_XX_01/', "
"'GRMCT1_13802_19004_013_191105_225_XX_01/', "
"'GRMCT1_13802_19005_016_191106_225_XX_01/', "
"'GRMCT1_13803_19004_019_191105_225_XX_01/', "
"'GRMCT2_13802_20006_012_200210_225_XX_01/', "
"'GRMCT2_13802_20008_011_200212_225_XX_01/', "
"'GRMCT2_13802_20009_004_200212_225_XX_01/', "
"'GRMCT2_13804_20007_022_200211_225_XX_01/', "
"'GRMCT2_13804_20008_015_200212_225_XX_01/', "
"'GRMCT2_13804_20009_008_200212_225_XX_01/', "
"'GRMCT2_13806_20007_026_200211_225_XX_01/', "
"'GRMCT2_13806_20008_019_200212_225_XX_01/', "
"'GRMCT2_31601_20006_011_200210_225_XX_01/', "
"'GRMCT2_31801_20007_016_200211_225_XX_01/', "
"'GRMCT2_31801_20008_009_200212_225_XX_01/', "
"'GRMCT2_31803_20007_020_200211_225_XX_01/', "
"'GRMCT2_31803_20008_013_200212_225_XX_01/', "
"'GRMCT2_31803_20009_006_200212_225_XX_01/', "
"'GRMCT2_31805_20008_017_200212_225_XX_01/', "
"'GRMCT2_31901_20009_002_200212_225_XX_01/', "
"'GRMCT2_31905_20007_024_200211_225_XX_01/', "
"'GRMNT1_09302_20006_009_200210_225_XX_01/', "
"'GRMNT1_09401_19005_006_191106_225_XX_01/', "
"'GRMNT1_09401_20006_005_200210_225_XX_01/', "
"'GRMNT1_09401_20007_007_200211_225_XX_01/', "
"'GRMNT1_09402_19004_009_191105_225_XX_01/', "
"'GRMNT1_09402_19005_012_191106_225_XX_01/', "
"'GRMNT1_09402_20007_010_200211_225_XX_01/', "
"'GRMNT1_09402_20008_027_200212_225_XX_01/', "
"'GRMNT1_09403_19004_015_191105_225_XX_01/', "
"'GRMNT1_09403_19005_018_191106_225_XX_01/', "
"'GRMNT1_09403_20007_014_200211_225_XX_01/', "
"'GRMNT1_09403_20008_031_200212_225_XX_01/', "
"'GRMNT1_09501_20008_023_200212_225_XX_01/', "
"'GRMNT1_09502_20007_010_200211_225_XX_01/', "
"'GRMST1_27302_20006_007_200210_225_XX_01/', "
"'GRMST1_27401_19003_007_191104_225_XX_01/', "
"'GRMST1_27401_19004_005_191105_225_XX_01/', "
"'GRMST1_27401_19005_008_191106_225_XX_01/', "
"'GRMST1_27401_20007_005_200211_225_XX_01/', "
"'GRMST1_27401_20008_021_200212_225_XX_01/', "
"'GRMST1_27402_19004_011_191105_225_XX_01/', "
"'GRMST1_27402_19005_014_191106_225_XX_01/', "
"'GRMST1_27402_20008_025_200212_225_XX_01/', "
"'GRMST1_27403_19004_017_191105_225_XX_01/', "
"'GRMST1_27403_20007_012_200211_225_XX_01/', "
"'GRMST1_27403_20008_029_200212_225_XX_01/', "
"'GRMST1_27501_20006_003_200210_225_XX_01/', "
"'GRMST1_27502_20007_009_200211_225_XX_01/']")
#Retrieve flight date
flight_dates = swesarr_object.flight_dates
pprint.pprint(f"Flight Dates: {flight_dates}")
('Flight Dates: [datetime.date(2019, 11, 6), datetime.date(2019, 11, 5), '
'datetime.date(2019, 11, 6), datetime.date(2019, 11, 5), datetime.date(2020, '
'2, 10), datetime.date(2020, 2, 12), datetime.date(2020, 2, 12), '
'datetime.date(2020, 2, 11), datetime.date(2020, 2, 12), datetime.date(2020, '
'2, 12), datetime.date(2020, 2, 11), datetime.date(2020, 2, 12), '
'datetime.date(2020, 2, 10), datetime.date(2020, 2, 11), datetime.date(2020, '
'2, 12), datetime.date(2020, 2, 11), datetime.date(2020, 2, 12), '
'datetime.date(2020, 2, 12), datetime.date(2020, 2, 12), datetime.date(2020, '
'2, 12), datetime.date(2020, 2, 11), datetime.date(2020, 2, 10), '
'datetime.date(2019, 11, 6), datetime.date(2020, 2, 10), datetime.date(2020, '
'2, 11), datetime.date(2019, 11, 5), datetime.date(2019, 11, 6), '
'datetime.date(2020, 2, 11), datetime.date(2020, 2, 12), datetime.date(2019, '
'11, 5), datetime.date(2019, 11, 6), datetime.date(2020, 2, 11), '
'datetime.date(2020, 2, 12), datetime.date(2020, 2, 12), datetime.date(2020, '
'2, 11), datetime.date(2020, 2, 10), datetime.date(2019, 11, 4), '
'datetime.date(2019, 11, 5), datetime.date(2019, 11, 6), datetime.date(2020, '
'2, 11), datetime.date(2020, 2, 12), datetime.date(2019, 11, 5), '
'datetime.date(2019, 11, 6), datetime.date(2020, 2, 12), datetime.date(2019, '
'11, 5), datetime.date(2020, 2, 11), datetime.date(2020, 2, 12), '
'datetime.date(2020, 2, 10), datetime.date(2020, 2, 11)]')
Searching for dates within a range
To search within a specific date range, use the available_date_within_range method by specifying a start and end date. You can enter the dates as string using the standard American date format or use the datetime library's date format. The method returns a list of all flight paths available within the specified range.
Example, specifying date python datetime object
available_dates = swesarr_object.available_date_within_range(start_date=date(2019, 11, 5),
end_date=date(2019, 11, 6))
pprint.pprint(f"Available flight: {available_dates}")
('Available flight: [datetime.date(2019, 11, 6), datetime.date(2019, 11, 5), '
'datetime.date(2019, 11, 6), datetime.date(2019, 11, 5), datetime.date(2019, '
'11, 6), datetime.date(2019, 11, 5), datetime.date(2019, 11, 6), '
'datetime.date(2019, 11, 5), datetime.date(2019, 11, 6), datetime.date(2019, '
'11, 5), datetime.date(2019, 11, 6), datetime.date(2019, 11, 5), '
'datetime.date(2019, 11, 6), datetime.date(2019, 11, 5)]')
Example, specifying date as string
available_dates_string = swesarr_object.available_date_within_range(start_date="11/5/19",
end_date="11/6/19")
pprint.pprint(f"Available flight: {available_dates_string}")
('Available flight: [datetime.date(2019, 11, 6), datetime.date(2019, 11, 5), '
'datetime.date(2019, 11, 6), datetime.date(2019, 11, 5), datetime.date(2019, '
'11, 6), datetime.date(2019, 11, 5), datetime.date(2019, 11, 6), '
'datetime.date(2019, 11, 5), datetime.date(2019, 11, 6), datetime.date(2019, '
'11, 5), datetime.date(2019, 11, 6), datetime.date(2019, 11, 5), '
'datetime.date(2019, 11, 6), datetime.date(2019, 11, 5)]')
Data Download¶
The AccessSwesarr class also provides functionality to download SWESARR data, either for all frequency bands of a specified flight path or for a single frequency from a selected flight line. The download_data function allows users to specify a flight path and either retrieve all associated frequency bands in one go or download data for a specific frequency. This flexibility makes it convenient for users to access the SWESARR data they need based on their particular analytics requirements.
You will need to provide a destination folder in addition to the fight path of choice. See example help below.
In the following example, we will download the GRMCT1_13801_19005_010_191106_225_XX_01 flight path (To see available flight paths see the access meta function above).
We also specify a folder where we want to store the data. Optional arguments include dem options, the download associated dem if send to true, additionally the band option is used to specify a specific band, See function help for additional information
help(swesarr_object.download_data)
Help on method download_data in module access_swesarr:
download_data(flight_path: str, folder_name: str, band: str = 'all', dem: bool = False) -> None method of access_swesarr.AccessSAR instance
Downloads data for a specified flight path.
This method downloads the associated data into the specified folder. It also
allows for filtering by band and includes an option to download DEM (Digital
Elevation Model) data.
:param flight_path: str
The name of the flight path to be downloaded
:param folder_name: str
The name of the folder where the downloaded data will be stored
:param band: str, optional
Specifies the band to download (e.g., "X", "KuLo", "KuHi"). Defaults to "all",
which downloads all available bands
:param dem: bool, optional
If True, the Digital Elevation Model (DEM) data is downloaded along with the
band data. Defaults to False
:return: None
swesarr_object.download_data(flight_path="GRMCT1_13801_19005_010_191106_225_XX_01",
folder_name="./swesarr_pytool/resources/swesarr_data/",
dem=False,
band="all")
ACCESS_SWESARR - 2024-10-07 19:37:29,524 - INFO - Downloaded: https://glihtdata.gsfc.nasa.gov/files/radar/SWESARR/prerelease/GRMCT1_13801_19005_010_191106_225_XX_01/GRMCT1_13801_19005_010_191106_09225VH_XX_01.tif ACCESS_SWESARR - 2024-10-07 19:37:56,273 - INFO - Downloaded: https://glihtdata.gsfc.nasa.gov/files/radar/SWESARR/prerelease/GRMCT1_13801_19005_010_191106_225_XX_01/GRMCT1_13801_19005_010_191106_09225VV_XX_01.tif ACCESS_SWESARR - 2024-10-07 19:38:18,782 - INFO - Downloaded: https://glihtdata.gsfc.nasa.gov/files/radar/SWESARR/prerelease/GRMCT1_13801_19005_010_191106_225_XX_01/GRMCT1_13801_19005_010_191106_13225VH_XX_01.tif ACCESS_SWESARR - 2024-10-07 19:38:40,089 - INFO - Downloaded: https://glihtdata.gsfc.nasa.gov/files/radar/SWESARR/prerelease/GRMCT1_13801_19005_010_191106_225_XX_01/GRMCT1_13801_19005_010_191106_13225VV_XX_01.tif ACCESS_SWESARR - 2024-10-07 19:39:07,938 - INFO - Downloaded: https://glihtdata.gsfc.nasa.gov/files/radar/SWESARR/prerelease/GRMCT1_13801_19005_010_191106_225_XX_01/GRMCT1_13801_19005_010_191106_17225VH_XX_01.tif ACCESS_SWESARR - 2024-10-07 19:39:30,818 - INFO - Downloaded: https://glihtdata.gsfc.nasa.gov/files/radar/SWESARR/prerelease/GRMCT1_13801_19005_010_191106_225_XX_01/GRMCT1_13801_19005_010_191106_17225VV_XX_01.tif
Additionally the download_all_data function can be called to download all flight path. See help below
help(swesarr_object.download_data)
Help on method download_data in module swesarr_pytools.access_swesarr:
download_data(flight_path: str, folder_name: str, band: str = 'all', dem: bool = False) -> None method of swesarr_pytools.access_swesarr.AccessSwesarr instance
Downloads data for a specified flight path.
This method downloads the associated data into the specified folder. It also
allows for filtering by band and includes an option to download DEM (Digital
Elevation Model) data.
:param flight_path: str
The name of the flight path to be downloaded
:param folder_name: str
The name of the folder where the downloaded data will be stored
:param band: str, optional
Specifies the band to download (e.g., "X", "KuLo", "KuHi"). Defaults to "all",
which downloads all available bands
:param dem: bool, optional
If True, the Digital Elevation Model (DEM) data is downloaded along with the
band data. Defaults to False
:return: None
help(swesarr_object.download_all_data)
Help on method download_all_data in module swesarr_pytools.access_swesarr:
download_all_data(folder_name: str, band: str = 'all', dem: bool = False) -> None method of swesarr_pytools.access_swesarr.AccessSwesarr instance
Downloads data for all flights.
This method iterates over all flight paths generated in `self.flight_names` list
and downloads the associated data into the specified folder. It also
allows for filtering by band and includes an option to download DEM (Digital
Elevation Model) data.
:param folder_name: str
The name of the folder where the downloaded data will be stored
:param band: str, optional
Specifies the band to download (e.g., "X", "KuLo", "KuHi"). Defaults to "all",
which downloads all available bands
:param dem: bool, optional
If True, the Digital Elevation Model (DEM) data is downloaded along with the
band data. Defaults to False
:return: None