Skip to content

Commit

Permalink
Merge branch 'develop' into main
Browse files Browse the repository at this point in the history
  • Loading branch information
savmickael committed Jun 28, 2022
2 parents 06e5632 + 8f6c67f commit 0ed5adf
Show file tree
Hide file tree
Showing 4 changed files with 46 additions and 10 deletions.
6 changes: 6 additions & 0 deletions CHANGELOG.rst
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,12 @@
Changelog
=========

Version 0.8.0
===========

- Support retrieve srtm 1s data from a private ewoc bucket hosted on aws [PR-107]
- Fix bug about missing beam mode in s1 prod id class [PR-106]

Version 0.1.10
===========

Expand Down
39 changes: 35 additions & 4 deletions src/ewoc_dag/bucket/ewoc.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,9 +13,11 @@
import pandas as pd

from ewoc_dag.bucket.eobucket import EOBucket
from ewoc_dag.eo_prd_id.ewoc_prd_id import (EwocArdPrdIdInfo,
EwocS1ArdPrdIdInfo,
EwocTirArdPrdIdInfo)
from ewoc_dag.eo_prd_id.ewoc_prd_id import (
EwocArdPrdIdInfo,
EwocS1ArdPrdIdInfo,
EwocTirArdPrdIdInfo,
)

_logger = logging.getLogger(__name__)

Expand Down Expand Up @@ -80,7 +82,7 @@ def __init__(self, bucket_name: str) -> None:
)

if not self._check_bucket():
raise ValueError(f"EWoC {bucket_name} not correctly intialized!")
raise ValueError(f"EWoC {bucket_name} is not correctly intialized!")

_logger.info(
"EWoC bucket %s is hosted on %s and functional",
Expand Down Expand Up @@ -115,6 +117,34 @@ class EWOCAuxDataBucket(EWOCBucket):
def __init__(self) -> None:
super().__init__("ewoc-aux-data")

def download_srtm1s_tiles(
self, srtm_tile_ids: List[str], out_dirpath: Path = Path(gettempdir())
) -> None:
"""Download srtm 1s (30m) tiles according a S2 tile ID
Args:
srtm_tile_ids (List[str]): List of S2 MGRS tile ID
out_dirpath (Path, optional): Output directry to write SRTM tiles.
Defaults to Path(gettempdir()).
"""
for srtm_tile_id in srtm_tile_ids:
srtm_tile_id_filename = srtm_tile_id + ".SRTMGL1.hgt.zip"
srtm_tile_id_filepath = out_dirpath / srtm_tile_id_filename
srtm_object_key = "srtm30/" + srtm_tile_id_filename
_logger.info(
"Try to download %s to %s", srtm_object_key, srtm_tile_id_filepath
)
self._s3_client.download_file(
Bucket=self._bucket_name,
Key=srtm_object_key,
Filename=str(srtm_tile_id_filepath),
)

with zipfile.ZipFile(srtm_tile_id_filepath, "r") as srtm_zipfile:
srtm_zipfile.extractall(out_dirpath / "srtm1s")

srtm_tile_id_filepath.unlink()

def download_srtm3s_tiles(
self, srtm_tile_ids: List[str], out_dirpath: Path = Path(gettempdir())
) -> None:
Expand Down Expand Up @@ -368,6 +398,7 @@ def upload_ewoc_prd(
)
ewoc_auxdata_bucket = EWOCAuxDataBucket()
ewoc_auxdata_bucket.download_srtm3s_tiles(["srtm_01_16", "srtm_01_21"])
ewoc_auxdata_bucket.download_srtm1s_tiles(["N53E031", "N53E032"])

# ewoc_auxdata_bucket.agera5_to_satio_csv()

Expand Down
2 changes: 1 addition & 1 deletion src/ewoc_dag/eo_prd_id/s1_prd_id.py
Original file line number Diff line number Diff line change
Expand Up @@ -153,7 +153,7 @@ def beam_mode(self):

@beam_mode.setter
def beam_mode(self, value):
allowed_values = ['SM', 'IW', 'EW', 'WV']
allowed_values = ['S1', 'S2', 'S3', 'S4', 'S5', 'S6', 'SM', 'IW', 'EW', 'WV']
if value in allowed_values:
self._beam_mode = value
else:
Expand Down
9 changes: 4 additions & 5 deletions src/ewoc_dag/srtm_dag.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@

logger = logging.getLogger(__name__)

_SRTM_1S_SOURCES = ["esa", "creodias"]
_SRTM_1S_SOURCES = ["esa", "creodias", "ewoc"]


def get_srtm_1s_default_provider() -> str:
Expand Down Expand Up @@ -82,12 +82,11 @@ def get_srtm_tiles(
)
elif srtm_provider == "ewoc":
if resolution == "3s":
logger.info("Use EWoC bucket to retrieve srtm data!")
logger.info("Use EWoC bucket to retrieve srtm 3s data!")
EWOCAuxDataBucket().download_srtm3s_tiles(srtm_tile_ids, out_dir)
else:
raise ValueError(
f"Source SRTM{resolution} not available on EWoC Aux Data bucket!"
)
logger.info("Use EWoC bucket to retrieve srtm 1s data!")
EWOCAuxDataBucket().download_srtm1s_tiles(srtm_tile_ids, out_dir)
elif srtm_provider == "usgs":
logger.info("Use usgs EE to retrieve srtm 1s data!")
raise NotImplementedError
Expand Down

0 comments on commit 0ed5adf

Please sign in to comment.