def _read_wagl_metadata(p: DatasetAssembler, granule_group: h5py.Group): try: wagl_path, *ancil_paths = [ pth for pth in (_find_h5_paths(granule_group, "SCALAR")) if "METADATA" in pth ] except ValueError: raise ValueError("No nbar metadata found in granule") [wagl_doc] = loads_yaml(granule_group[wagl_path][()]) try: p.processed = get_path(wagl_doc, ("system_information", "time_processed")) except PathAccessError: raise ValueError( f"WAGL dataset contains no time processed. Path {wagl_path}") for i, path in enumerate(ancil_paths, start=2): wagl_doc.setdefault(f"wagl_{i}", {}).update( list(loads_yaml(granule_group[path][()]))[0]["ancillary"]) p.properties["dea:dataset_maturity"] = _determine_maturity( p.datetime, p.processed, wagl_doc) _take_software_versions(p, wagl_doc) p.extend_user_metadata("wagl", wagl_doc)
def _read_gqa_doc(p: DatasetAssembler, doc: Dict): _take_software_versions(p, doc) p.extend_user_metadata("gqa", doc) # TODO: more of the GQA fields? for k, v in _flatten_dict(doc["residual"], separator="_"): p.properties[f"gqa:{k}"] = v
def _read_fmask_doc(p: DatasetAssembler, doc: Dict): for name, value in doc["percent_class_distribution"].items(): # From Josh: fmask cloud cover trumps the L1 cloud cover. if name == "cloud": del p.properties[f"eo:cloud_cover"] p.properties[f"eo:cloud_cover"] = value p.properties[f"fmask:{name}"] = value _take_software_versions(p, doc) p.extend_user_metadata("fmask", doc)
def _apply_wagl_metadata(p: DatasetAssembler, wagl_doc: Dict): source = wagl_doc["source_datasets"] p.datetime = source["acquisition_datetime"] p.platform = source["platform_id"] p.instrument = source["sensor_id"] try: p.processed = get_path(wagl_doc, ("system_information", "time_processed")) except PathAccessError: raise RuntimeError("WAGL dataset contains no processed time.") _take_software_versions(p, wagl_doc) p.extend_user_metadata("wagl", wagl_doc)
def _read_s2cloudless_doc(p: DatasetAssembler, doc: Dict): for name, value in doc["percent_class_distribution"].items(): p.properties[f"s2cloudless:{name}"] = value _take_software_versions(p, doc) p.extend_user_metadata("s2cloudless", doc)