Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
86 changes: 73 additions & 13 deletions Search and Download.ipynb

Large diffs are not rendered by default.

8 changes: 7 additions & 1 deletion VIIRS_tiled_granules/VIIRS_tiled_granule.py
Original file line number Diff line number Diff line change
Expand Up @@ -143,4 +143,10 @@ def variables(self, grid: str) -> List[str]:
:param grid: The grid name.
"""
with h5py.File(self.filename_absolute, "r") as file:
return list(file[f"HDFEOS/GRIDS/{grid}/Data Fields/"].keys())
return list(file[f"HDFEOS/GRIDS/{grid}/Data Fields/"].keys())

def variable(self, variable: str) -> Raster:
if hasattr(self, variable):
return getattr(self, variable)
else:
raise AttributeError(f"Variable '{variable}' not found in VIIRSTiledGranule.")
1 change: 1 addition & 0 deletions VIIRS_tiled_granules/VIIRS_tiled_granules.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,3 +4,4 @@
from .authenticate import *
from .search_granules import *
from .retrieve_granule import *
from .connection import *
94 changes: 94 additions & 0 deletions VIIRS_tiled_granules/connection.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,94 @@
from typing import Union, List
from datetime import date, datetime

import earthaccess

import rasters as rt
from rasters import SpatialGeometry, RasterGeometry, Raster

from modland import generate_modland_grid

from .constants import *
from .search_granules import search_granules
from .retrieve_granule import retrieve_granule
from .VIIRS_tiled_granule import VIIRSTiledGranule

class VIIRSTiledProductConnection:
def __init__(
self,
concept_ID: str,
download_directory: str = DOWNLOAD_DIRECTORY):
self.concept_ID = concept_ID
self.download_directory = download_directory

def search(
self,
date_UTC: Union[date, datetime, str] = None,
start_date_UTC: Union[date, datetime, str] = None,
end_date_UTC: Union[date, datetime, str] = None,
geometry: SpatialGeometry = None,
tile: str = None,
tile_size = None) -> List[earthaccess.search.DataGranule]:
return search_granules(
concept_ID=self.concept_ID,
date_UTC=date_UTC,
start_date_UTC=start_date_UTC,
end_date_UTC=end_date_UTC,
geometry=geometry,
tile=tile,
tile_size=tile_size
)

def granule(
self,
date_UTC: Union[date, str] = None,
tile: str = None,
download_directory: str = DOWNLOAD_DIRECTORY) -> VIIRSTiledGranule:
return retrieve_granule(
date_UTC=date_UTC,
tile=tile,
download_directory=download_directory
)

def variable(
self,
variable: str,
date_UTC: Union[date, str],
geometry: RasterGeometry = None,
tile: str = None,
tile_size: int = None,
filename: str = None,
resampling: str = None) -> Raster:
if geometry is None and tile_size is None:
raise ValueError("neither geometry nor tile size given")

if geometry is None:
geometry = generate_modland_grid(tile=tile, tile_size=tile_size)

remote_granules = self.search(
date_UTC=date_UTC,
geometry=geometry,
tile=tile,
tile_size=tile_size
)

granules = [
retrieve_granule(remote_granule)
for remote_granule
in remote_granules
]

images = [
granule.variable(variable)
for granule
in granules
]

mosaic = rt.mosaic(
images=images,
geometry=geometry,
resampling=resampling
)

return mosaic

3 changes: 3 additions & 0 deletions VIIRS_tiled_granules/constants.py
Original file line number Diff line number Diff line change
@@ -1 +1,4 @@
CMR_SEARCH_URL = "https://cmr.earthdata.nasa.gov/search/"

DOWNLOAD_DIRECTORY = "~/data/VNP21A1D_002"

2 changes: 1 addition & 1 deletion VIIRS_tiled_granules/version.txt
Original file line number Diff line number Diff line change
@@ -1 +1 @@
1.0.3
1.1.0
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
6 changes: 5 additions & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"

[project]
name = "VIIRS_tiled_granules"
version = "1.0.3"
version = "1.1.0"
description = "Visible Infrared Imaging Radiometer Suite (VIIRS) Sinusoidal Tile Product Search and Download Utility"
readme = "README.md"
authors = [
Expand All @@ -28,8 +28,12 @@ requires-python = ">=3.10"

[project.optional-dependencies]
dev = [
"build",
"pytest>=6.0",
"pytest-cov",
"jupyter",
"pytest",
"twine"
]

[tool.setuptools.package-data]
Expand Down