stac-extensions/card4l

`processing:lineage`

maawoo opened this issue · 3 comments

Hi @m-mohr,
first of all thanks for the work you put into this extension and other areas of STAC!

I'm currently working on an implementation of the extension for a SAR NRB product(*) and as the title says, I was wondering about the processing:lineage field. Maybe I'm missing something but currently I'm a bit confused about how to put this field into action.

Let's take the product data as an example, where only ResamplingMethod is listed. Here's how I'd provide the information based on my current understanding: 'processing:lineage' = 'ResamplingMethod=bilinear'
I guess this could work, but what if I want to provide additional processing related parameters? Create a long comma-separated string? I think there should be a better solution that is less ambiguous and leaves room for other processing related parameters to be included (not just what CARD4L lists), while also being searchable.

For the source data, multiple parameters are supposed to be provided with processing:lineage and I'd be interested to see how you would implement this in a single string?
How about an object similar to the Speckle Filter Object instead? E.g.:
'processing: ... ' = {'lutApplied': 'false', 'RangeLookBandwidth': 1.23, 'AzimuthLookBandwidth': 4.56}

The bandwidth parameters are actually a bit more complicated as they're provided per swath in the original Sentinel-1 metadata. CARD4L is a bit unclear in this regard as to what is actually required. An average value? All values per swath?

Cheers, Marco

(*) I might be able to provide an example at some point for #3

Hi @maawoo,

nice to hear that other people outside of our project are starting to use this extension. Please note that I'm currently in contact with CEOS to update this extension to the latest draft of the CEOS SAR NRB ARD specification and to then finally release this extension officially. So some (minor) changes in the next weeks are to be expected. I'll hand draft an example soon, but it would be great to also get your real-life example into this repo!

Regarding processing:lineage: This field is meant to be descriptive (human-readable), so you can describe your workflow here for users reading it. The field is not really meant to contain machine-readable information.
There is processing:expression to list a whole processing chain, which would then include processing related parameters, too. There's also the processing-expression link relation type if the processing chain is not JSON-ish (e.g. a Python script).
I'm aware that this is not completely covering the CARD4L target(!) requirements, but I think I can add some card4l: prefixed fields for the XML tags that are not yet directly covered with JSON representations.

I'll follow-up on this.

Alright, I've tried to incorporate some improvements, see commit 7f3de20 for the changes. Does that all make sense and helps? Feedback would be appreciated.

How about an object similar to the Speckle Filter Object instead?

Yes, that is most reasonable.

The bandwidth parameters are actually a bit more complicated as they're provided per swath in the original Sentinel-1 metadata. CARD4L is a bit unclear in this regard as to what is actually required. An average value? All values per swath?

As far as I understand it it is per swath, but it's indeed not clearly stated. I hope this will get clarified in the next revision.

Thanks for the quick response!
I've seen your recent update regarding processing:expression, which is great to provide more extensive processing information. But neither this, nor processing:lineage are suited for providing individual parameters extracted from the source data in my opinion. Your changes in 7f3de20 are a good solution though and I don't see any issues at the moment. Thanks!🙂