asfadmin / Discovery-asf_search

BSD 3-Clause "New" or "Revised" License
131 stars 45 forks source link

Returning Wrong Frame using Stack from Prodcut #84

Closed NKakar closed 2 years ago

NKakar commented 2 years ago

Hello Everyone, I am trying to search and create stack using the stack_from_product but, I am getting wrong frames in the stack.

I used the following to search my data from the frame number 118

search_results = asf.search( platform=asf.SENTINEL1, processingLevel=asf.SLC, beamMode=asf.IW, flightDirection=asf.ASCENDING, relativeOrbit=173, #path frame=118,

maxResults=20,

)

The results is like the following: we can see both the frame number and path is correct.

{'beamModeType': 'IW', 'browse': [], 'bytes': '4667648688', 'centerLat': '37.3913', 'centerLon': '71.0762', 'faradayRotation': None, 'fileID': 'S1A_IW_SLC__1SDV_20151117T131342_20151117T131409_008645_00C48E_D516-SLC', 'fileName': 'S1A_IW_SLC__1SDV_20151117T131342_20151117T131409_008645_00C48E_D516.zip', 'flightDirection': 'ASCENDING', 'frameNumber': '118', 'granuleType': 'SENTINEL_1A_FRAME', 'groupID': 'S1A_IWDV_0118_0123_008645_173', 'insarStackId': None, 'md5sum': 'fb1541f7040d93a66a1ec54cb3f72b63', 'offNadirAngle': None, 'orbit': '8645', 'pathNumber': '173', 'platform': 'Sentinel-1A', .....

**After running the stack_from_product as following: baseline_results = asf.baseline_search.stack_from_product(reference=search_results[-1])

I get in the stack other frames also such is 116, 117, 118, 121... I have only requested 118 as above in the search**

"properties": { "beamModeType": "IW", "browse": [], "bytes": "2492173707", "centerLat": "36.8931", "centerLon": "71.1898", "faradayRotation": null, "fileID": "S1A_IW_SLC__1SSV_20141029T131328_20141029T131355_003045_0037AD_275D-SLC", "fileName": "S1A_IW_SLC__1SSV_20141029T131328_20141029T131355_003045_0037AD_275D.zip", "flightDirection": "ASCENDING", "frameNumber": "116", "granuleType": "SENTINEL_1A_FRAME", .......................... "temporalBaseline": -385, ..............

Can anyone help me or explain why is that happening?

Best, Najib

glshort commented 2 years ago

Sentinel-1 has, in the past, suffered from inconsistent framing. For this reason, when we build a Sentinel-1 stack, we actually use the centroid of the reference frame to determine which other frames in that path should be included in the stack. If we were to stack strictly based on the frame number, many stacks would be missing scenes that are, in fact, viable for interferometry.

The next release of asf_search will include a new ASFSearchOptions class as well as a function that will allow one to gather the stacking search parameters without actually performing a stack search. Using those new features, it should be pretty straightforward to gather the parameters and then refine them as needed, such as enforcing a strict frame number constraint on the stack.

Until then, an alternate solution is to simply post-filter the results to exclude any unwanted frames.

NKakar commented 2 years ago

Thank you very much for the reply. I was able to solve it using the filters for the frame numbers. I was able to give a list of frame such as e.g. 117,118 and 119. It would get me only three frames or in list of two. This is solving the issue at the moment and avoid the far frames with few bursts included.

such as here (stack = search(stack_params, host=host, cmr_token=cmr_token, cmr_provider=cmr_provider, asfFrame=frame), frame** is a list of frames [117,118,119] in this case.

Best regards,

Najib