Пример #1
0
def serialize_browse_report(browse_report, stream=None, pretty_print=False):
    if not stream:
        stream = StringIO()

    browse_report_elem = Element(ns_rep("browseReport"),
                                 nsmap={"rep": ns_rep.uri},
                                 attrib={"version": "1.3"})

    SubElement(
        browse_report_elem,
        ns_rep("responsibleOrgName")).text = browse_report.responsible_org_name
    SubElement(
        browse_report_elem,
        ns_rep("dateTime")).text = browse_report.date_time.isoformat("T")
    SubElement(browse_report_elem,
               ns_rep("browseType")).text = browse_report.browse_type

    for browse in browse_report:
        browse_report_elem.append(_serialize_browse(browse))

    et = ElementTree(browse_report_elem)
    et.write(stream,
             pretty_print=pretty_print,
             encoding="utf-8",
             xml_declaration=True)

    return stream
Пример #2
0
def decode_grid(grid_elem):
    if grid_elem.tag in (ns_rep("verticalCurtainReferenceGrid"), ns_rep("verticalReferenceGrid")):
        return data.VerticalReferenceGrid(
            **vertical_reference_grid_decoder(grid_elem)
        )
    if grid_elem.tag == ns_rep("verticalRegularGrid"):
        return data.VerticalRegularGrid(
            **vertical_regular_grid_decoder(grid_elem)
        )
    elif grid_elem.tag == ns_rep("verticalCurtainVerticalGrid"):
        return data.VerticalCurtainVerticalGrid(
            **vertical_reference_grid_decoder(grid_elem)
        )
Пример #3
0
def serialize_browse_report(browse_report, stream=None, pretty_print=False):
    if not stream:
        stream = StringIO()

    browse_report_elem = Element(ns_rep("browseReport"),
                                 nsmap={"rep": ns_rep.uri},
                                 attrib={"version": "1.3"})

    SubElement(browse_report_elem, ns_rep("responsibleOrgName")).text = browse_report.responsible_org_name
    SubElement(browse_report_elem, ns_rep("dateTime")).text = browse_report.date_time.isoformat("T")
    SubElement(browse_report_elem, ns_rep("browseType")).text = browse_report.browse_type

    for browse in browse_report:
        browse_report_elem.append(_serialize_browse(browse))

    et = ElementTree(browse_report_elem)
    et.write(stream, pretty_print=pretty_print, encoding="utf-8",
             xml_declaration=True)

    return stream
Пример #4
0
def _serialize_regular_grid_browse(browse):
    georef_elem = Element(ns_rep("regularGrid"))
    SubElement(georef_elem, ns_rep("colNodeNumber")).text = str(browse.col_node_number)
    SubElement(georef_elem, ns_rep("rowNodeNumber")).text = str(browse.row_node_number)
    SubElement(georef_elem, ns_rep("colStep")).text = str(browse.col_step)
    SubElement(georef_elem, ns_rep("rowStep")).text = str(browse.row_step)
    for coord_list in browse.coord_lists:
        SubElement(georef_elem, ns_rep("coordList")).text = coord_list
    return georef_elem
Пример #5
0
def _serialize_browse(browse):
    browse_elem = Element(ns_rep("browse"))
    if browse.browse_identifier:
        SubElement(browse_elem, ns_rep("browseIdentifier")).text = browse.browse_identifier
    SubElement(browse_elem, ns_rep("fileName")).text = browse.file_name
    SubElement(browse_elem, ns_rep("imageType")).text = browse.image_type
    SubElement(browse_elem, ns_rep("referenceSystemIdentifier")).text = browse.reference_system_identifier

    browse_elem.append(GEO_TYPE_TO_XML[browse.geo_type](browse))

    SubElement(browse_elem, ns_rep("startTime")).text = browse.start_time.isoformat("T")
    SubElement(browse_elem, ns_rep("endTime")).text = browse.end_time.isoformat("T")
    return browse_elem
Пример #6
0
def _serialize_regular_grid_browse(browse):
    georef_elem = Element(ns_rep("regularGrid"))
    SubElement(georef_elem,
               ns_rep("colNodeNumber")).text = str(browse.col_node_number)
    SubElement(georef_elem,
               ns_rep("rowNodeNumber")).text = str(browse.row_node_number)
    SubElement(georef_elem, ns_rep("colStep")).text = str(browse.col_step)
    SubElement(georef_elem, ns_rep("rowStep")).text = str(browse.row_step)
    for coord_list in browse.coord_lists:
        SubElement(georef_elem, ns_rep("coordList")).text = coord_list
    return georef_elem
Пример #7
0
def _serialize_browse(browse):
    browse_elem = Element(ns_rep("browse"))
    if browse.browse_identifier:
        SubElement(browse_elem,
                   ns_rep("browseIdentifier")).text = browse.browse_identifier
    SubElement(browse_elem, ns_rep("fileName")).text = browse.file_name
    SubElement(browse_elem, ns_rep("imageType")).text = browse.image_type
    SubElement(browse_elem, ns_rep(
        "referenceSystemIdentifier")).text = browse.reference_system_identifier

    browse_elem.append(GEO_TYPE_TO_XML[browse.geo_type](browse))

    SubElement(browse_elem,
               ns_rep("startTime")).text = browse.start_time.isoformat("T")
    SubElement(browse_elem,
               ns_rep("endTime")).text = browse.end_time.isoformat("T")
    return browse_elem
Пример #8
0
def decode_browse(browse_elem):
    """ Parsing function to return a Browse object from an ElementTree.Element
        node.
    """
    
    # general args
    kwargs = browse_decoder.decode(browse_elem)
    
    browse_identifier = browse_elem.find(ns_rep("browseIdentifier"))
    if browse_identifier is not None:
        kwargs["browse_identifier"] = browse_identifier.text
    
    # allow spaces in reference_system_identifier e.g. "EPSG: 4326"
    # work-around for ESA's Landsat data
    kwargs['reference_system_identifier'] = kwargs['reference_system_identifier'].replace(" ", "")
    
    # check type of geo reference
    rectified_browse = browse_elem.find(ns_rep("rectifiedBrowse"))
    footprint = browse_elem.find(ns_rep("footprint"))
    regular_grid = browse_elem.find(ns_rep("regularGrid"))
    model_in_geotiff = browse_elem.find(ns_rep("modelInGeotiff"))
    vertical_curtain_footprint = browse_elem.find(ns_rep("verticalCurtainFootprint"))
   
    if rectified_browse is not None:
        logger.info("Parsing Rectified Browse.")
        kwargs.update(rectified_decoder.decode(rectified_browse))
        return data.RectifiedBrowse(**kwargs)
    
    elif footprint is not None:
        logger.info("Parsing Footprint Browse.")
        kwargs.update(footprint_decoder.decode(footprint))
        return data.FootprintBrowse(**kwargs)
    
    elif regular_grid is not None:
        logger.info("Parsing Regular Grid Browse.")
        kwargs.update(regular_grid_decoder.decode(regular_grid))
        return data.RegularGridBrowse(**kwargs)
        
    elif model_in_geotiff is not None:
        logger.info("Parsing GeoTIFF Browse.")
        return data.ModelInGeotiffBrowse(**kwargs)
    
    elif vertical_curtain_footprint is not None:
        logger.info("Parsing Vertical Curtain Browse.")
        kwargs.update(
            vertical_curtain_footprint_decoder(vertical_curtain_footprint)
        )
        return data.VerticalCurtainBrowse(**kwargs)
    
    else:
        raise DecodingException("Missing geo-spatial reference type.")
Пример #9
0
def decode_browse_report(browse_report_elem):
    """ Parsing function to return a BrowseReport object from an
        ElementTree.Element node.
    """

    logger.info("Start parsing browse report.")

    try:
        browse_report_elem = browse_report_elem.getroot()
    except AttributeError:
        pass

    expected_tags = ns_bsi("ingestBrowse"), ns_rep("browseReport"), ns_rep_old(
        "browseReport")
    if browse_report_elem.tag not in expected_tags:
        raise DecodingException(
            "Invalid root tag '%s'. Expected one of '%s'." %
            (browse_report_elem.tag, expected_tags))

    if browse_report_elem.find(ns_rep_old("browseType")) is not None:
        ns = ns_rep_old
    else:
        ns = ns_rep

    browse_report_decoder = XMLDecoder(
        {
            "date_time": ("rep:dateTime/text()", getDateTime),
            "browse_type":
            "rep:browseType/text()",
            "responsible_org_name":
            "rep:responsibleOrgName/text()",
            "browses":
            ("rep:browse", lambda browse: decode_browse(browse, ns), "*")
        }, {"rep": ns.uri})

    browse_report = data.BrowseReport(
        **browse_report_decoder.decode(browse_report_elem))

    logger.info("Finished decoding browse report.")

    return browse_report
Пример #10
0
def decode_browse_report(browse_report_elem):
    """ Parsing function to return a BrowseReport object from an
        ElementTree.Element node.
    """

    logger.info("Start parsing browse report.")

    try:
        browse_report_elem = browse_report_elem.getroot()
    except AttributeError:
        pass

    expected_tags = ns_bsi("ingestBrowse"), ns_rep("browseReport"), ns_rep_old("browseReport")
    if browse_report_elem.tag not in expected_tags:
        raise DecodingException("Invalid root tag '%s'. Expected one of '%s'."
                               % (browse_report_elem.tag, expected_tags))

    if browse_report_elem.find(ns_rep_old("browseType")) is not None:
        ns = ns_rep_old
    else:
        ns = ns_rep

    browse_report_decoder = XMLDecoder({
        "date_time": ("rep:dateTime/text()", getDateTime),
        "browse_type": "rep:browseType/text()",
        "responsible_org_name": "rep:responsibleOrgName/text()",
        "browses": ("rep:browse", lambda browse: decode_browse(browse, ns), "*")
    }, {"rep": ns.uri})

    browse_report = data.BrowseReport(
        **browse_report_decoder.decode(browse_report_elem)
    )

    logger.info("Finished decoding browse report.")

    return browse_report
Пример #11
0
def decode_browse_report(browse_report_elem):
    """ Parsing function to return a BrowseReport object from an 
        ElementTree.Element node.
    """
    
    logger.info("Start parsing browse report.")
    
    try:
        browse_report_elem = browse_report_elem.getroot()
    except AttributeError:
        pass
    
    expected_tags = ns_bsi("ingestBrowse"), ns_rep("browseReport")
    if browse_report_elem.tag not in expected_tags:
        raise DecodingException("Invalid root tag '%s'. Expected one of '%s'."
                               % (browse_report_elem.tag, expected_tags))
    
    browse_report = data.BrowseReport(
        **browse_report_decoder.decode(browse_report_elem)
    )
    
    logger.info("Finished decoding browse report.")

    return browse_report
Пример #12
0
def _serialize_model_in_geotiff_browse(browse):
    georef_elem = Element(ns_rep("modelInGeotiff"))
    georef_elem.text = "true"
    return georef_elem
Пример #13
0
def _serialize_footprint_browse(browse):
    georef_elem = Element(ns_rep("footprint"),
                          attrib={"nodeNumber": str(browse.node_number)})
    SubElement(georef_elem, ns_rep("colRowList")).text = browse.col_row_list
    SubElement(georef_elem, ns_rep("coordList")).text = browse.coord_list
    return georef_elem
Пример #14
0
def _serialize_rectified_browse(browse):
    georef_elem = Element(ns_rep("rectifiedBrowse"))
    SubElement(georef_elem, ns_rep("coordList")).text = browse.coord_list
    return georef_elem
Пример #15
0
def _serialize_model_in_geotiff_browse(browse):
    georef_elem = Element(ns_rep("modelInGeotiff"))
    georef_elem.text = "true"
    return georef_elem
Пример #16
0
def _serialize_rectified_browse(browse):
    georef_elem = Element(ns_rep("rectifiedBrowse"))
    SubElement(georef_elem, ns_rep("coordList")).text = browse.coord_list
    return georef_elem
Пример #17
0
def _serialize_footprint_browse(browse):
    georef_elem = Element(ns_rep("footprint"), attrib={"nodeNumber": str(browse.node_number)})
    SubElement(georef_elem, ns_rep("colRowList")).text = browse.col_row_list
    SubElement(georef_elem, ns_rep("coordList")).text = browse.coord_list
    return georef_elem