Skip to content

Commit ab2253f

Browse files
committed
add normalizer for NOAA marine heatwaves
1 parent 88c6bf6 commit ab2253f

File tree

1 file changed

+63
-0
lines changed

1 file changed

+63
-0
lines changed
Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
"""Normalizer for the metadata of ESA CCI datasets"""
2+
3+
import re
4+
from datetime import datetime
5+
6+
from dateutil.tz import tzutc
7+
from dateutil.relativedelta import relativedelta
8+
9+
import metanorm.utils as utils
10+
from .base import GeoSPaaSMetadataNormalizer
11+
12+
13+
class MarineHeatWavesMetadataNormalizer(GeoSPaaSMetadataNormalizer):
14+
"""Generate the properties of a GeoSPaaS Dataset for a NOAA marine
15+
heatwaves dataset
16+
"""
17+
18+
def check(self, raw_metadata):
19+
"""Checks that the URL starts with the right prefix"""
20+
return raw_metadata.get('url', '').startswith(
21+
'https://www.star.nesdis.noaa.gov/pub/socd/mecb/crw/data/marine_heatwave/'
22+
'v1.0.1/category/nc')
23+
24+
def get_entry_title(self, raw_metadata):
25+
return 'NOAA marine heatwaves'
26+
27+
@utils.raises((KeyError, AttributeError))
28+
def get_entry_id(self, raw_metadata):
29+
return utils.NC_H5_FILENAME_MATCHER.search(raw_metadata['url']).group(1)
30+
31+
def get_summary(self, raw_metadata):
32+
return ''
33+
34+
time_patterns = (
35+
(
36+
re.compile(r'/noaa-crw_mhw.*' + utils.YEARMONTHDAY_REGEX + r'\.nc$'),
37+
utils.create_datetime,
38+
lambda time: (time, time + relativedelta(days=1))
39+
),
40+
)
41+
42+
@utils.raises(KeyError)
43+
def get_time_coverage_start(self, raw_metadata):
44+
return utils.find_time_coverage(self.time_patterns, raw_metadata['url'])[0]
45+
46+
@utils.raises(KeyError)
47+
def get_time_coverage_end(self, raw_metadata):
48+
return utils.find_time_coverage(self.time_patterns, raw_metadata['url'])[1]
49+
50+
def get_platform(self, raw_metadata):
51+
return utils.get_gcmd_platform('Earth Observation Satellites')
52+
53+
def get_instrument(self, raw_metadata):
54+
return utils.get_gcmd_instrument('Imaging Spectrometers/Radiometers')
55+
56+
def get_location_geometry(self, raw_metadata):
57+
return utils.WORLD_WIDE_COVERAGE_WKT
58+
59+
def get_provider(self, raw_metadata):
60+
return utils.get_gcmd_provider(['DOC/NOAA'])
61+
62+
def get_dataset_parameters(self, raw_metadata):
63+
return []

0 commit comments

Comments
 (0)