From 9acdfcd81a42291fc283f68163cf32ba6eb0bd73 Mon Sep 17 00:00:00 2001 From: Lucy Wang Date: Thu, 5 Sep 2024 12:36:39 -0500 Subject: [PATCH 1/2] Added lookup creator code wbandimpacts.py --- .../src/helpers/creators/wbandimpacts.py | 91 +++++++++++++++++++ 1 file changed, 91 insertions(+) create mode 100644 mdx/granule_metadata_extractor/src/helpers/creators/wbandimpacts.py diff --git a/mdx/granule_metadata_extractor/src/helpers/creators/wbandimpacts.py b/mdx/granule_metadata_extractor/src/helpers/creators/wbandimpacts.py new file mode 100644 index 0000000..e399f01 --- /dev/null +++ b/mdx/granule_metadata_extractor/src/helpers/creators/wbandimpacts.py @@ -0,0 +1,91 @@ +# create lookup zip for wbandimpacts +# for all future collections +from datetime import datetime, timedelta +from utils.mdx import MDX +import cProfile +import time +import math +import re + +from netCDF4 import Dataset +import numpy as np +from math import radians, degrees, sin, cos, asin, acos, sqrt + +short_name = "wbandimpacts" +provider_path = "wbandimpacts__1/" +file_type = "netCDF-3" + +class MDXProcessing(MDX): + + def __init__(self): + super().__init__() + + def process(self, filename, file_obj_stream) -> dict: + """ + Individual collection processing logic for spatial and temporal + metadata extraction + :param filename: name of file to process + :type filename: str + :param file_obj_stream: file object stream to be processed + :type file_obj_stream: botocore.response.StreamingBody + """ + return self.get_nc_metadata(filename, file_obj_stream) + + + def get_nc_metadata(self, filename, file_obj_stream): + """ + Extract temporal and spatial metadata from netCDF-3 files + """ + data = Dataset("in-mem-file", mode='r', memory=file_obj_stream.read()) + + #Raxpol radar range ~ 50 km + radar_range = 50. + #Earth radius ~ 6371 km + radar_lat = float(data['latitude'][0]) + radar_lon = float(data['longitude'][0]) + mlat = radians(radar_lat) + mlon = radians(radar_lon) + plat = mlat + dlon = degrees(acos((cos(radar_range/6371)-sin(mlat)*sin(plat))/cos(mlat)/cos(plat))) + dlat = degrees(radar_range/6371.) + north, south, east, west = [radar_lat+dlat, radar_lat-dlat, + radar_lon+dlon, radar_lon-dlon] + + tkn=data['time_coverage_start'][:] + tkn=tkn[tkn.mask==False] + t0=[x.decode("utf-8") for x in tkn] + t0_str = ''.join(t0) #'2023-01-25T11:46:08Z' + start_time = datetime.strptime(t0_str,'%Y-%m-%dT%H:%M:%SZ') + + + tkn=data['time_coverage_end'][:] + tkn=tkn[tkn.mask==False] + t1=[x.decode("utf-8") for x in tkn] + t1_str = ''.join(t1) #'2023-01-25T11:46:08Z' + end_time = datetime.strptime(t1_str,'%Y-%m-%dT%H:%M:%SZ') + + data.close() + return { + "start": start_time, + "end": end_time, + "north": north, + "south": south, + "east": east, + "west": west, + "format": file_type + } + + + def main(self): + # start_time = time.time() + self.process_collection(short_name, provider_path) + # elapsed_time = time.time() - start_time + # print(f"Elapsed time in seconds: {elapsed_time}") + self.shutdown_ec2() + + +if __name__ == '__main__': + MDXProcessing().main() + # The below can be use to run a profiler and see which functions are + # taking the most time to process + # cProfile.run('MDXProcessing().main()', sort='tottime') From 4718c056247b37fb74174d27ccbf8bc473296b21 Mon Sep 17 00:00:00 2001 From: EC2 Default User Date: Fri, 20 Sep 2024 16:48:33 +0000 Subject: [PATCH 2/2] Updated wbandimpacts.py and created wbandimpacts.zip --- .../src/helpers/creators/wbandimpacts.py | 17 +++++++++++++++++ .../src/helpers/wbandimpacts.zip | Bin 0 -> 323307 bytes 2 files changed, 17 insertions(+) create mode 100644 mdx/granule_metadata_extractor/src/helpers/wbandimpacts.zip diff --git a/mdx/granule_metadata_extractor/src/helpers/creators/wbandimpacts.py b/mdx/granule_metadata_extractor/src/helpers/creators/wbandimpacts.py index e399f01..e1e05ba 100644 --- a/mdx/granule_metadata_extractor/src/helpers/creators/wbandimpacts.py +++ b/mdx/granule_metadata_extractor/src/helpers/creators/wbandimpacts.py @@ -36,6 +36,23 @@ def get_nc_metadata(self, filename, file_obj_stream): """ Extract temporal and spatial metadata from netCDF-3 files """ + #if 'IMPACTS_ACHV_WBAND_RHI_UCONN20230217_014003Z_to_20230217_014205Z_dR50m.nc' in filename: + # start_time = datetime(2100,1,1) + # end_time = datetime(1900,1,1) + # north = -90. + # south = 90. + # east = -180. + # west = 180. + # return { + # "start": start_time, + # "end": end_time, + # "north": north, + # "south": south, + # "east": east, + # "west": west, + # "format": file_type + # } + data = Dataset("in-mem-file", mode='r', memory=file_obj_stream.read()) #Raxpol radar range ~ 50 km diff --git a/mdx/granule_metadata_extractor/src/helpers/wbandimpacts.zip b/mdx/granule_metadata_extractor/src/helpers/wbandimpacts.zip new file mode 100644 index 0000000000000000000000000000000000000000..09731d9e6f4c8512e2433ca72876e21d4407b11e GIT binary patch literal 323307 zcmdVD&(1Z;ao#DL^lUs!0kb7~t$uOpf1PjFY}z0puti9pNZXqa9E*Zwi)@44gfSKf z%)s~H+nD9tgm1-j34{4PS#{3$W>&_j$W3LEZrVa+pI5G^$oTWb6A{1o%OCvk&;LyS z`N4l1|Lw2-$AAA<|K@-G@Xz$$f623d{Px@b^oRfa_8-6d_ILmE#m|2Ji?6=^_&1-v z`ueB8{Pe3IfA!5zKK=DifA;Bbzy7OlzUgoMaO=DIQ+MyXart+jzW?^q`)7SW{ku

hy79aHf)c6^Xu=z|B^44?rokX{agR#H;+gC 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 literal 0 HcmV?d00001