22
33import dateparser
44import asf_search as asf
5+ from asf_search import ASFSearchResults
56from shapely .wkt import dumps as dump_to_wkt
67from shapely import Polygon
78
89def stack_aria_gunw (frame : str ):
10+ reference , aria_groups = get_aria_groups_for_frame (frame )
11+
12+ # track group index on each product, naively choose first granule available
13+ for idx , group in enumerate (aria_groups ):
14+ group_granule_idx = None
15+ for idy , product in enumerate (group ['products' ]):
16+ product .properties ['groupIDX' ] = idx
17+ if group_granule_idx is None :
18+ if product .has_baseline ():
19+ group_granule_idx = idy
20+
21+ group ['group_granule_idx' ] = group_granule_idx
22+
23+
24+
25+ stack = ASFSearchResults ([group ['products' ][group ['group_granule_idx' ]] for group in aria_groups if group ['group_granule_idx' ] is not None ])
26+ target_stack , warnings = asf .baseline .get_baseline_from_stack (reference , stack )
27+ # for product in target_stack:
28+ # group_idx = product.properties.pop('groupIDX')
29+ # aria_groups[group_idx]['perpendicularBaseline'] = product.properties['perpendicularBaseline']
30+ # aria_groups[group_idx]['temporalBaseline'] = product.properties['temporalBaseline']
31+
32+ # for group in aria_groups:
33+ # for idx, product in enumerate(group['products']):
34+ # group['products'][idx] = product.properties['sceneName']
35+ # group['date'] = group['date'].strftime('%Y-%m-%dT%H:%M:%SZ')
36+
37+ return target_stack
38+
39+ def get_aria_groups_for_frame (frame : str ):
940 reference = asf .search (frame = int (frame ), dataset = asf .DATASET .ARIA_S1_GUNW , maxResults = 1 )[0 ]
1041
1142 opts = asf .ASFSearchOptions (
@@ -18,44 +49,17 @@ def stack_aria_gunw(frame: str):
1849 intersectsWith = dump_to_wkt (Polygon (reference .geometry ['coordinates' ][0 ]))
1950 )
2051
21- slc_stack = asf .search (opts = opts )
52+ slc_products = asf .search (opts = opts )
2253
2354 groups = defaultdict (list )
24- for product in slc_stack :
55+ for product in slc_products :
2556 group_id = product .properties ['platform' ] + '_' + str (product .properties ['orbit' ])
2657 groups [group_id ].append (product )
2758 # dateparser.parse(str(value))
28- aria_groups = [
59+ return reference , [
2960 {
3061 'date' : min (dateparser .parse (product .properties ['startTime' ]) for product in group ),
3162 'products' : [product for product in group ],
3263 }
3364 for group in groups .values ()
34- ]
35-
36- # track group index on each product, naively choose first granule available
37- for idx , group in enumerate (aria_groups ):
38- group_granule_idx = None
39- for idy , product in enumerate (group ['products' ]):
40- product .properties ['groupIDX' ] = idx
41- if group_granule_idx is None :
42- if product .has_baseline ():
43- group_granule_idx = idy
44-
45- group ['group_granule_idx' ] = group_granule_idx
46-
47-
48-
49- stack = asf .ASFSearchResults ([group ['products' ][group ['group_granule_idx' ]] for group in aria_groups if group ['group_granule_idx' ] is not None ])
50- target_stack , warnings = asf .baseline .get_baseline_from_stack (reference , stack )
51- for product in target_stack :
52- group_idx = product .properties .pop ('groupIDX' )
53- aria_groups [group_idx ]['perpendicularBaseline' ] = product .properties ['perpendicularBaseline' ]
54- aria_groups [group_idx ]['temporalBaseline' ] = product .properties ['temporalBaseline' ]
55-
56- for group in aria_groups :
57- for idx , product in enumerate (group ['products' ]):
58- group ['products' ][idx ] = product .properties ['sceneName' ]
59- group ['date' ] = group ['date' ].strftime ('%Y-%m-%dT%H:%M:%SZ' )
60-
61- return aria_groups
65+ ]
0 commit comments