def encode_range_set(self, reference, mime_type): return GML( "rangeSet", GML( "File", GML( "rangeParameters", **{ ns_xlink("arcrole"): "fileReference", ns_xlink("href"): reference, ns_xlink("role"): mime_type }), GML("fileReference", reference), GML("fileStructure"), GML("mimeType", mime_type)))
def encode_range_set(self, reference, mime_type): return GML( "rangeSet", GML( "File", GML( "rangeParameters", **{ns_xlink("arcrole"): "fileReference", ns_xlink("href"): reference, ns_xlink("role"): mime_type} ), GML("fileReference", reference), GML("fileStructure"), GML("mimeType", mime_type), ), )
def encode_range_set(self, reference, mime_type): return GML( "rangeSet", GML( "File", GML( "rangeParameters", **{ ns_xlink("arcrole"): "fileReference", ns_xlink("href"): reference, ns_xlink("role"): "http://www.opengis.net/spec/GMLCOV_geotiff-coverages/1.0/conf/geotiff-coverage" }), GML("fileReference", reference), GML("fileStructure"), GML("mimeType", mime_type)))
def encode_eo_metadata(self, coverage, request=None, subset_polygon=None): metadata_items = [ metadata_location for metadata_location in getattr( coverage, 'metadata_locations', []) if metadata_location.format == "eogml" ] if len(metadata_items) >= 1: with vsi.open(metadata_items[0].path) as f: earth_observation = etree.parse(f).getroot() if subset_polygon: try: feature = earth_observation.xpath("om:featureOfInterest", namespaces=nsmap)[0] feature[0] = self.encode_footprint( coverage.footprint.intersection(subset_polygon), coverage.identifier) except IndexError: pass # no featureOfInterest else: earth_observation = self.encode_earth_observation( coverage.identifier, coverage.begin_time, coverage.end_time, coverage.footprint, subset_polygon=subset_polygon) if not request: lineage = None elif request.method == "GET": lineage = EOWCS( "lineage", EOWCS( "referenceGetCoverage", self.encode_reference( "Reference", request.build_absolute_uri().replace("&", "&"), False)), GML("timePosition", isoformat(now()))) elif request.method == "POST": # TODO: better way to do this href = request.build_absolute_uri().replace("&", "&") lineage = EOWCS( "lineage", EOWCS( "referenceGetCoverage", OWS("ServiceReference", OWS("RequestMessage", etree.parse(request).getroot()), **{ns_xlink("href"): href})), GML("timePosition", isoformat(now()))) return GMLCOV( "metadata", GMLCOV( "Extension", EOWCS("EOMetadata", earth_observation, *[lineage] if lineage is not None else [])))
def encode_eo_metadata(self, coverage, request=None, subset_polygon=None): data_items = list(coverage.data_items.filter( semantic="metadata", format="eogml" )) if len(data_items) >= 1: with open(retrieve(data_items[0])) as f: earth_observation = etree.parse(f).getroot() if subset_polygon: try: feature = earth_observation.xpath( "om:featureOfInterest", namespaces=nsmap )[0] feature[0] = self.encode_footprint( coverage.footprint.intersection(subset_polygon), coverage.identifier ) except IndexError: pass # no featureOfInterest else: earth_observation = self.encode_earth_observation( coverage, subset_polygon=subset_polygon ) if not request: lineage = None elif request.method == "GET": lineage = EOWCS("lineage", EOWCS("referenceGetCoverage", self.encode_reference("Reference", request.build_absolute_uri().replace("&", "&"), False ) ), GML("timePosition", isoformat(now())) ) elif request.method == "POST": # TODO: better way to do this href = request.build_absolute_uri().replace("&", "&") lineage = EOWCS("lineage", EOWCS("referenceGetCoverage", OWS("ServiceReference", OWS("RequestMessage", etree.parse(request).getroot() ), **{ns_xlink("href"): href} ) ), GML("timePosition", isoformat(now())) ) return GMLCOV("metadata", GMLCOV("Extension", EOWCS("EOMetadata", earth_observation, *[lineage] if lineage is not None else [] ) ) )