diff --git a/asf_search/ASFProduct.py b/asf_search/ASFProduct.py index 0495e420..0925a514 100644 --- a/asf_search/ASFProduct.py +++ b/asf_search/ASFProduct.py @@ -35,6 +35,12 @@ class ASFProduct: 'platform': {'path': [ 'AdditionalAttributes', ('Name', 'ASF_PLATFORM'), 'Values', 0]}, 'bytes': {'path': [ 'AdditionalAttributes', ('Name', 'BYTES'), 'Values', 0], 'cast': try_round_float}, 'md5sum': {'path': [ 'AdditionalAttributes', ('Name', 'MD5SUM'), 'Values', 0]}, + 'frameNumber': {'path': ['AdditionalAttributes', ('Name', 'CENTER_ESA_FRAME'), 'Values', 0], 'cast': try_parse_int}, # overloaded by S1, ALOS, and ERS + 'granuleType': {'path': [ 'AdditionalAttributes', ('Name', 'GRANULE_TYPE'), 'Values', 0]}, + 'orbit': {'path': [ 'OrbitCalculatedSpatialDomains', 0, 'OrbitNumber'], 'cast': try_parse_int}, + 'polarization': {'path': [ 'AdditionalAttributes', ('Name', 'POLARIZATION'), 'Values', 0]}, + 'processingDate': {'path': [ 'DataGranule', 'ProductionDateTime'], }, + 'sensor': {'path': [ 'Platforms', 0, 'Instruments', 0, 'ShortName'], }, } def __init__(self, args: dict = {}, session: ASFSession = ASFSession()): diff --git a/asf_search/Products/AIRSARProduct.py b/asf_search/Products/AIRSARProduct.py index 528c53e1..4b546cc6 100644 --- a/asf_search/Products/AIRSARProduct.py +++ b/asf_search/Products/AIRSARProduct.py @@ -6,15 +6,10 @@ class AIRSARProduct(ASFProduct): base_properties = { 'frameNumber': {'path': ['AdditionalAttributes', ('Name', 'CENTER_ESA_FRAME'), 'Values', 0], 'cast': try_parse_int}, - 'granuleType': {'path': [ 'AdditionalAttributes', ('Name', 'GRANULE_TYPE'), 'Values', 0]}, 'groupID': {'path': [ 'AdditionalAttributes', ('Name', 'GROUP_ID'), 'Values', 0]}, 'insarStackId': {'path': [ 'AdditionalAttributes', ('Name', 'INSAR_STACK_ID'), 'Values', 0]}, 'md5sum': {'path': [ 'AdditionalAttributes', ('Name', 'MD5SUM'), 'Values', 0]}, 'offNadirAngle': {'path': [ 'AdditionalAttributes', ('Name', 'OFF_NADIR_ANGLE'), 'Values', 0], 'cast': try_parse_float}, - 'orbit': {'path': [ 'OrbitCalculatedSpatialDomains', 0, 'OrbitNumber'], 'cast': try_parse_int}, - 'polarization': {'path': [ 'AdditionalAttributes', ('Name', 'POLARIZATION'), 'Values', 0]}, - 'processingDate': {'path': [ 'DataGranule', 'ProductionDateTime']}, - 'sensor': {'path': [ 'Platforms', 0, 'Instruments', 0, 'ShortName']} } def __init__(self, args: dict = {}, session: ASFSession = ASFSession()): diff --git a/asf_search/Products/ALOSProduct.py b/asf_search/Products/ALOSProduct.py index d71f0775..b6bebcf0 100644 --- a/asf_search/Products/ALOSProduct.py +++ b/asf_search/Products/ALOSProduct.py @@ -9,11 +9,6 @@ class ALOSProduct(ASFProduct): 'faradayRotation': {'path': [ 'AdditionalAttributes', ('Name', 'FARADAY_ROTATION'), 'Values', 0], 'cast': try_parse_float}, 'offNadirAngle': {'path': [ 'AdditionalAttributes', ('Name', 'OFF_NADIR_ANGLE'), 'Values', 0], 'cast': try_parse_float}, 'bytes': {'path': [ 'AdditionalAttributes', ('Name', 'BYTES'), 'Values', 0], 'cast': try_round_float}, - 'granuleType': {'path': [ 'AdditionalAttributes', ('Name', 'GRANULE_TYPE'), 'Values', 0], }, - 'orbit': {'path': [ 'OrbitCalculatedSpatialDomains', 0, 'OrbitNumber'], 'cast': try_parse_int}, - 'polarization': {'path': [ 'AdditionalAttributes', ('Name', 'POLARIZATION'), 'Values', 0]}, - 'processingDate': {'path': [ 'DataGranule', 'ProductionDateTime'], }, - 'sensor': {'path': [ 'Platforms', 0, 'Instruments', 0, 'ShortName'], }, 'insarStackId': {'path': [ 'AdditionalAttributes', ('Name', 'INSAR_STACK_ID'), 'Values', 0]}, } diff --git a/asf_search/Products/ERSProduct.py b/asf_search/Products/ERSProduct.py index 4f4c3601..86f46125 100644 --- a/asf_search/Products/ERSProduct.py +++ b/asf_search/Products/ERSProduct.py @@ -7,25 +7,17 @@ class ERSProduct(ASFProduct): base_properties = { 'bytes': {'path': [ 'AdditionalAttributes', ('Name', 'BYTES'), 'Values', 0], 'cast': try_round_float}, - 'esaFrame': {'path': ['AdditionalAttributes', ('Name', 'CENTER_ESA_FRAME'), 'Values', 0], 'cast': try_parse_int}, - 'frameNumber': {'path': ['AdditionalAttributes', ('Name', 'FRAME_NUMBER'), 'Values', 0], 'cast': try_parse_int}, - 'granuleType': {'path': [ 'AdditionalAttributes', ('Name', 'GRANULE_TYPE'), 'Values', 0]}, + 'esaFrame': {'path': ['AdditionalAttributes', ('Name', 'CENTER_ESA_FRAME'), 'Values', 0]}, + 'frameNumber': {'path': ['AdditionalAttributes', ('Name', 'FRAME_NUMBER'), 'Values', 0]}, 'insarStackId': {'path': [ 'AdditionalAttributes', ('Name', 'INSAR_STACK_ID'), 'Values', 0]}, 'md5sum': {'path': [ 'AdditionalAttributes', ('Name', 'MD5SUM'), 'Values', 0]}, 'offNadirAngle': {'path': [ 'AdditionalAttributes', ('Name', 'OFF_NADIR_ANGLE'), 'Values', 0], 'cast': try_parse_float}, - 'orbit': {'path': [ 'OrbitCalculatedSpatialDomains', 0, 'OrbitNumber'], 'cast': try_parse_int}, - 'polarization': {'path': [ 'AdditionalAttributes', ('Name', 'POLARIZATION'), 'Values', 0]}, - 'processingDate': {'path': [ 'DataGranule', 'ProductionDateTime'], }, - 'sensor': {'path': [ 'Platforms', 0, 'Instruments', 0, 'ShortName'], }, 'beamModeType': {'path': ['AdditionalAttributes', ('Name', 'BEAM_MODE_TYPE'), 'Values', 0]}, } def __init__(self, args: dict = {}, session: ASFSession = ASFSession()): super().__init__(args, session) self.baseline = self.get_baseline_calc_properties() - - self.properties['frameNumber'] = str(self.properties['frameNumber']) - self.properties['esaFrame'] = str(self.properties['esaFrame']) def get_baseline_calc_properties(self) -> dict: insarBaseline = umm_cast(float, umm_get(self.umm, 'AdditionalAttributes', ('Name', 'INSAR_BASELINE'), 'Values', 0)) diff --git a/asf_search/Products/JERSProduct.py b/asf_search/Products/JERSProduct.py index f2e64ea3..883bb3db 100644 --- a/asf_search/Products/JERSProduct.py +++ b/asf_search/Products/JERSProduct.py @@ -7,16 +7,10 @@ class JERSProduct(ASFProduct): base_properties = { 'browse': { 'path': ['RelatedUrls', ('Type', [('GET RELATED VISUALIZATION', 'URL')])]}, - 'frameNumber': {'path': ['AdditionalAttributes', ('Name', 'CENTER_ESA_FRAME'), 'Values', 0], 'cast': try_parse_int}, - 'granuleType': {'path': [ 'AdditionalAttributes', ('Name', 'GRANULE_TYPE'), 'Values', 0]}, 'groupID': {'path': [ 'AdditionalAttributes', ('Name', 'GROUP_ID'), 'Values', 0]}, 'insarStackId': {'path': [ 'AdditionalAttributes', ('Name', 'INSAR_STACK_ID'), 'Values', 0]}, 'md5sum': {'path': [ 'AdditionalAttributes', ('Name', 'MD5SUM'), 'Values', 0]}, 'offNadirAngle': {'path': [ 'AdditionalAttributes', ('Name', 'OFF_NADIR_ANGLE'), 'Values', 0], 'cast': try_parse_float}, - 'orbit': {'path': [ 'OrbitCalculatedSpatialDomains', 0, 'OrbitNumber'], 'cast': try_parse_int}, - 'polarization': {'path': [ 'AdditionalAttributes', ('Name', 'POLARIZATION'), 'Values', 0]}, - 'processingDate': {'path': [ 'DataGranule', 'ProductionDateTime']}, - 'sensor': {'path': [ 'Platforms', 0, 'Instruments', 0, 'ShortName']}, 'beamModeType': {'path': ['AdditionalAttributes', ('Name', 'BEAM_MODE_TYPE'), 'Values', 0]} } diff --git a/asf_search/Products/OPERAS1Product.py b/asf_search/Products/OPERAS1Product.py index 2ebedde6..7ba19327 100644 --- a/asf_search/Products/OPERAS1Product.py +++ b/asf_search/Products/OPERAS1Product.py @@ -11,6 +11,7 @@ class OPERAS1Product(S1Product): 'operaBurstID': {'path': ['AdditionalAttributes', ('Name', 'OPERA_BURST_ID'), 'Values', 0]}, 'validityStartDate': {'path': ['TemporalExtent', 'SingleDateTime']}, 'bytes': {'path': ['DataGranule', 'ArchiveAndDistributionInformation']}, + 'subswath': {'path': ['AdditionalAttributes', ('Name', 'SUBSWATH_NAME'), 'Values', 0]}, } def __init__(self, args: dict = {}, session: ASFSession = ASFSession()): @@ -30,10 +31,19 @@ def __init__(self, args: dict = {}, session: ASFSession = ASFSession()): self.properties['operaBurstID'] = umm_get(self.umm, 'AdditionalAttributes', ('Name', 'OPERA_BURST_ID'), 'Values', 0) self.properties['bytes'] = {entry['Name']: {'bytes': entry['SizeInBytes'], 'format': entry['Format']} for entry in self.properties['bytes']} - self.properties.pop('centerLat') - self.properties.pop('centerLon') + center = self.centroid() + self.properties['centerLat'] = center.y + self.properties['centerLon'] = center.x + self.properties.pop('frameNumber') + if (processingLevel := self.properties['processingLevel']) in ['RTC', 'RTC-STATIC']: + self.properties['bistaticDelayCorrection'] = umm_get(self.umm, 'AdditionalAttributes', ('Name', 'BISTATIC_DELAY_CORRECTION'), 'Values', 0) + if processingLevel == 'RTC': + self.properties['noiseCorrection'] = umm_get(self.umm, 'AdditionalAttributes', ('Name', 'NOISE_CORRECTION'), 'Values', 0) + self.properties['postProcessingFilter'] = umm_get(self.umm, 'AdditionalAttributes', ('Name', 'POST_PROCESSING_FILTER'), 'Values', 0) + + def get_stack_opts(self): return {} diff --git a/asf_search/Products/RadarsatProduct.py b/asf_search/Products/RadarsatProduct.py index 29056758..aaad40d2 100644 --- a/asf_search/Products/RadarsatProduct.py +++ b/asf_search/Products/RadarsatProduct.py @@ -8,13 +8,7 @@ class RadarsatProduct(ASFProduct): 'faradayRotation': {'path': [ 'AdditionalAttributes', ('Name', 'FARADAY_ROTATION'), 'Values', 0], 'cast': try_parse_float}, 'offNadirAngle': {'path': [ 'AdditionalAttributes', ('Name', 'OFF_NADIR_ANGLE'), 'Values', 0], 'cast': try_parse_float}, 'insarStackId': {'path': [ 'AdditionalAttributes', ('Name', 'INSAR_STACK_ID'), 'Values', 0]}, - 'processingDate': {'path': [ 'DataGranule', 'ProductionDateTime'], }, - 'orbit': {'path': [ 'OrbitCalculatedSpatialDomains', 0, 'OrbitNumber'], 'cast': try_parse_int}, - 'polarization': {'path': [ 'AdditionalAttributes', ('Name', 'POLARIZATION'), 'Values', 0]}, 'md5sum': {'path': [ 'AdditionalAttributes', ('Name', 'MD5SUM'), 'Values', 0]}, - 'sensor': {'path': [ 'Platforms', 0, 'Instruments', 0, 'ShortName'], }, - 'granuleType': {'path': [ 'AdditionalAttributes', ('Name', 'GRANULE_TYPE'), 'Values', 0]}, - 'frameNumber': {'path': ['AdditionalAttributes', ('Name', 'CENTER_ESA_FRAME'), 'Values', 0], 'cast': try_parse_int}, 'beamModeType': {'path': ['AdditionalAttributes', ('Name', 'BEAM_MODE_TYPE'), 'Values', 0]} } diff --git a/asf_search/Products/S1Product.py b/asf_search/Products/S1Product.py index d48ab6d6..2186294a 100644 --- a/asf_search/Products/S1Product.py +++ b/asf_search/Products/S1Product.py @@ -6,14 +6,9 @@ class S1Product(ASFProduct): base_properties = { 'frameNumber': {'path': ['AdditionalAttributes', ('Name', 'FRAME_NUMBER'), 'Values', 0], 'cast': try_parse_int}, #Sentinel and ALOS product alt for frameNumber (ESA_FRAME) - 'polarization': {'path': [ 'AdditionalAttributes', ('Name', 'POLARIZATION'), 'Values', 0]}, - 'granuleType': {'path': [ 'AdditionalAttributes', ('Name', 'GRANULE_TYPE'), 'Values', 0], }, 'groupID': {'path': [ 'AdditionalAttributes', ('Name', 'GROUP_ID'), 'Values', 0], }, 'md5sum': {'path': [ 'AdditionalAttributes', ('Name', 'MD5SUM'), 'Values', 0], }, - 'orbit': {'path': [ 'OrbitCalculatedSpatialDomains', 0, 'OrbitNumber'], 'cast': try_parse_int}, 'pgeVersion': {'path': ['PGEVersionClass', 'PGEVersion'], }, - 'processingDate': {'path': [ 'DataGranule', 'ProductionDateTime'], }, - 'sensor': {'path': [ 'Platforms', 0, 'Instruments', 0, 'ShortName'], }, } def __init__(self, args: dict = {}, session: ASFSession = ASFSession()): diff --git a/asf_search/Products/SEASATProduct.py b/asf_search/Products/SEASATProduct.py index 0a0c56ee..70ab10e2 100644 --- a/asf_search/Products/SEASATProduct.py +++ b/asf_search/Products/SEASATProduct.py @@ -6,15 +6,9 @@ class SEASATProduct(ASFProduct): base_properties = { 'bytes': {'path': [ 'AdditionalAttributes', ('Name', 'BYTES'), 'Values', 0], 'cast': try_round_float}, - 'frameNumber': {'path': ['AdditionalAttributes', ('Name', 'CENTER_ESA_FRAME'), 'Values', 0], 'cast': try_parse_int}, - 'granuleType': {'path': [ 'AdditionalAttributes', ('Name', 'GRANULE_TYPE'), 'Values', 0]}, 'insarStackId': {'path': [ 'AdditionalAttributes', ('Name', 'INSAR_STACK_ID'), 'Values', 0]}, 'md5sum': {'path': [ 'AdditionalAttributes', ('Name', 'MD5SUM'), 'Values', 0]}, 'offNadirAngle': {'path': [ 'AdditionalAttributes', ('Name', 'OFF_NADIR_ANGLE'), 'Values', 0], 'cast': try_parse_float}, - 'orbit': {'path': [ 'OrbitCalculatedSpatialDomains', 0, 'OrbitNumber'], 'cast': try_parse_int}, - 'polarization': {'path': [ 'AdditionalAttributes', ('Name', 'POLARIZATION'), 'Values', 0]}, - 'processingDate': {'path': [ 'DataGranule', 'ProductionDateTime']}, - 'sensor': {'path': [ 'Platforms', 0, 'Instruments', 0, 'ShortName']} } def __init__(self, args: dict = {}, session: ASFSession = ASFSession()): diff --git a/asf_search/Products/SIRCProduct.py b/asf_search/Products/SIRCProduct.py index 6910f71b..cb34fcd5 100644 --- a/asf_search/Products/SIRCProduct.py +++ b/asf_search/Products/SIRCProduct.py @@ -5,17 +5,10 @@ class SIRCProduct(ASFProduct): base_properties = { - 'frameNumber': {'path': ['AdditionalAttributes', ('Name', 'CENTER_ESA_FRAME'), 'Values', 0], 'cast': try_parse_int}, - 'polarization': {'path': [ 'AdditionalAttributes', ('Name', 'POLARIZATION'), 'Values', 0]}, - 'granuleType': {'path': [ 'AdditionalAttributes', ('Name', 'GRANULE_TYPE'), 'Values', 0]}, 'groupID': {'path': [ 'AdditionalAttributes', ('Name', 'GROUP_ID'), 'Values', 0]}, 'md5sum': {'path': [ 'AdditionalAttributes', ('Name', 'MD5SUM'), 'Values', 0]}, - 'orbit': {'path': [ 'OrbitCalculatedSpatialDomains', 0, 'OrbitNumber'], 'cast': try_parse_int}, 'pgeVersion': {'path': ['PGEVersionClass', 'PGEVersion'] }, - 'processingDate': {'path': [ 'DataGranule', 'ProductionDateTime']}, - 'sensor': {'path': [ 'Platforms', 0, 'Instruments', 0, 'ShortName']}, 'beamModeType': {'path': ['AdditionalAttributes', ('Name', 'BEAM_MODE_TYPE'), 'Values', 0]}, - 'frameNumber': {'path': ['AdditionalAttributes', ('Name', 'CENTER_ESA_FRAME'), 'Values', 0], 'cast': try_parse_int}, } def __init__(self, args: dict = {}, session: ASFSession = ASFSession()): diff --git a/asf_search/Products/SMAPProduct.py b/asf_search/Products/SMAPProduct.py index 2a9263e2..41447c46 100644 --- a/asf_search/Products/SMAPProduct.py +++ b/asf_search/Products/SMAPProduct.py @@ -5,16 +5,10 @@ class SMAPProduct(ASFProduct): base_properties = { - 'frameNumber': {'path': ['AdditionalAttributes', ('Name', 'CENTER_ESA_FRAME'), 'Values', 0], 'cast': try_parse_int}, - 'granuleType': {'path': [ 'AdditionalAttributes', ('Name', 'GRANULE_TYPE'), 'Values', 0]}, 'groupID': {'path': [ 'AdditionalAttributes', ('Name', 'GROUP_ID'), 'Values', 0]}, 'insarStackId': {'path': [ 'AdditionalAttributes', ('Name', 'INSAR_STACK_ID'), 'Values', 0]}, 'md5sum': {'path': [ 'AdditionalAttributes', ('Name', 'MD5SUM'), 'Values', 0]}, 'offNadirAngle': {'path': [ 'AdditionalAttributes', ('Name', 'OFF_NADIR_ANGLE'), 'Values', 0], 'cast': try_parse_float}, - 'orbit': {'path': [ 'OrbitCalculatedSpatialDomains', 0, 'OrbitNumber'], 'cast': try_parse_int}, - 'polarization': {'path': [ 'AdditionalAttributes', ('Name', 'POLARIZATION'), 'Values', 0]}, - 'processingDate': {'path': [ 'DataGranule', 'ProductionDateTime']}, - 'sensor': {'path': [ 'Platforms', 0, 'Instruments', 0, 'ShortName']} } def __init__(self, args: dict = {}, session: ASFSession = ASFSession()): diff --git a/asf_search/Products/UAVSARProduct.py b/asf_search/Products/UAVSARProduct.py index 805fba17..d1cbbd3f 100644 --- a/asf_search/Products/UAVSARProduct.py +++ b/asf_search/Products/UAVSARProduct.py @@ -5,16 +5,10 @@ class UAVSARProduct(ASFProduct): base_properties = { - 'frameNumber': {'path': ['AdditionalAttributes', ('Name', 'CENTER_ESA_FRAME'), 'Values', 0], 'cast': try_parse_int}, - 'granuleType': {'path': [ 'AdditionalAttributes', ('Name', 'GRANULE_TYPE'), 'Values', 0]}, 'groupID': {'path': [ 'AdditionalAttributes', ('Name', 'GROUP_ID'), 'Values', 0]}, 'insarStackId': {'path': [ 'AdditionalAttributes', ('Name', 'INSAR_STACK_ID'), 'Values', 0]}, 'md5sum': {'path': [ 'AdditionalAttributes', ('Name', 'MD5SUM'), 'Values', 0]}, 'offNadirAngle': {'path': [ 'AdditionalAttributes', ('Name', 'OFF_NADIR_ANGLE'), 'Values', 0], 'cast': try_parse_float}, - 'orbit': {'path': [ 'OrbitCalculatedSpatialDomains', 0, 'OrbitNumber'], 'cast': try_parse_int}, - 'polarization': {'path': [ 'AdditionalAttributes', ('Name', 'POLARIZATION'), 'Values', 0]}, - 'processingDate': {'path': [ 'DataGranule', 'ProductionDateTime']}, - 'sensor': {'path': [ 'Platforms', 0, 'Instruments', 0, 'ShortName']} } def __init__(self, args: dict = {}, session: ASFSession = ASFSession()): diff --git a/asf_search/Products/__init__.py b/asf_search/Products/__init__.py index d4e68375..27674a8b 100644 --- a/asf_search/Products/__init__.py +++ b/asf_search/Products/__init__.py @@ -1,15 +1,13 @@ from .S1Product import S1Product -from .S1BURSTProduct import S1BURSTProduct -from .OPERAS1Product import OPERAS1Product -from .ARIAS1GUNWProduct import ARIAS1GUNWProduct - from .ALOSProduct import ALOSProduct from .RadarsatProduct import RadarsatProduct - from .AIRSARProduct import AIRSARProduct from .ERSProduct import ERSProduct from .JERSProduct import JERSProduct from .UAVSARProduct import UAVSARProduct from .SIRCProduct import SIRCProduct from .SEASATProduct import SEASATProduct -from .SMAPProduct import SMAPProduct \ No newline at end of file +from .SMAPProduct import SMAPProduct +from .S1BURSTProduct import S1BURSTProduct +from .OPERAS1Product import OPERAS1Product +from .ARIAS1GUNWProduct import ARIAS1GUNWProduct