def remove_products_from_xml(self): """Remove the specified products from the XML file The file is read into memory, processed, and written back out with out the specified products. """ # Create and load the metadata object espa_metadata = Metadata(xml_filename=self._xml_filename) # Search for and remove the items for band in espa_metadata.xml_object.bands.band: if band.attrib['product'] in products_to_remove: # Business logic to always keep the radsat_qa band if bt, # or toa, or sr output was chosen if (band.attrib['name'] == '' and (options['include_sr'] or options['include_sr_toa'] or options['include_sr_thermal'])): continue else: self.remove_band_from_xml(band) # Validate the XML espa_metadata.validate() # Write it to the XML file espa_metadata.write(xml_filename=self._xml_filename)
def main(inputxmlfile, outputxmlfile, hdffile): mm = Metadata(xml_filename=inputxmlfile) mm.parse() hls_product = 'hls' if hdffile == 'one': for band in mm.xml_object.bands.iterchildren(): if band.get('name') == 'sr_band1': band.set('name', 'band01') band.set('product', hls_product) elif band.get('name') == 'sr_band2': band.set('name', 'blue') band.set('product', hls_product) elif band.get('name') == 'sr_band3': band.set('name', 'green') band.set('product', hls_product) elif band.get('name') == 'sr_band4': band.set('name', 'red') band.set('product', hls_product) elif band.get('name') == 'sr_band5': band.set('name', 'band05') band.set('product', hls_product) elif band.get('name') == 'sr_band6': band.set('name', 'band06') band.set('product', hls_product) elif band.get('name') == 'sr_band7': band.set('name', 'band07') band.set('product', hls_product) elif band.get('name') == 'sr_band8': band.set('name', 'band08') band.set('product', hls_product) elif hdffile == 'two': for band in mm.xml_object.bands.iterchildren(): if band.get('name') == 'sr_band8a': band.set('name', 'band8a') band.set('product', hls_product) elif band.get('name') == 'sr_band9': band.set('name', 'band09') band.set('product', hls_product) elif band.get('name') == 'sr_band10': band.set('name', 'band10') band.set('product', hls_product) elif band.get('name') == 'sr_band11': band.set('name', 'band11') band.set('product', hls_product) elif band.get('name') == 'sr_band12': band.set('name', 'band12') band.set('product', hls_product) elif band.get('name') == 'sr_aerosol': band.set('name', 'CLOUD') band.set('product', hls_product) for band in mm.xml_object.bands.iterchildren(): if band.get('product') != hls_product: print((band.get('name'))) mm.xml_object.bands.remove(band) mm.write(xml_filename=outputxmlfile)
class TestMetadata(unittest.TestCase): """Test a few things, and expand on it someday""" def setUp(self): xml_filename = 'unittests/test.xml' self.mm = Metadata(xml_filename=xml_filename) self.mm.parse() def tearDown(self): pass def test_find_version(self): self.assertEqual(self.mm.xml_object.get('version'), '2.0') def test_find_corners(self): self.assertEqual(self.mm.xml_object.global_metadata.corner[0] .attrib['location'], 'UL') self.assertEqual(self.mm.xml_object.global_metadata.corner[1] .attrib['location'], 'LR') def test_find_band_names(self): self.assertEqual(self.mm.xml_object.bands.band[0].get('name'), 'band1') self.assertEqual(self.mm.xml_object.bands.band[1].get('name'), 'band2') self.assertEqual(self.mm.xml_object.bands.band[2].get('name'), 'band3') self.assertEqual(self.mm.xml_object.bands.band[3].get('name'), 'band4') self.assertEqual(self.mm.xml_object.bands.band[4].get('name'), 'band5') self.assertEqual(self.mm.xml_object.bands.band[5].get('name'), 'band6') def test_write_success(self): # Also tests for successful validation self.mm.write(xml_filename='walnuts_pass.xml') self.assertTrue(os.path.exists('walnuts_pass.xml') == 1) os.unlink('walnuts_pass.xml') def test_validation_fail(self): myE = objectify.ElementMaker(annotate=False, namespace=None, nsmap=None) self.mm.xml_object.animals = myE.root() self.mm.xml_object.animals.tiger = myE.frog('white') self.mm.xml_object.animals.frog = myE.frog('green') with self.assertRaises(XMLError): self.mm.validate()
def main(inputxmlfile, outputxmlfile,): mm = Metadata(xml_filename=inputxmlfile) mm.parse() hls_product = 'hls' for band in mm.xml_object.bands.iterchildren(): if band.get('name') == 'sr_band1': band.set('name', 'band01') band.set('product', hls_product) elif band.get('name') == 'sr_band2': band.set('name', 'band02-blue') band.set('product', hls_product) elif band.get('name') == 'sr_band3': band.set('name', 'band03-green') band.set('product', hls_product) elif band.get('name') == 'sr_band4': band.set('name', 'band04-red') band.set('product', hls_product) elif band.get('name') == 'sr_band5': band.set('name', 'band05') band.set('product', hls_product) elif band.get('name') == 'sr_band6': band.set('name', 'band06') band.set('product', hls_product) elif band.get('name') == 'sr_band7': band.set('name', 'band07') band.set('product', hls_product) elif band.get('name') == 'radsat_qa': band.set('name', 'bandQA') band.set('product', hls_product) elif band.get('name') == 'toa_band9': band.set('name', 'band09') band.set('product', hls_product) elif band.get('name') == 'bt_band10': band.set('name', 'band10') band.set('product', hls_product) elif band.get('name') == 'bt_band11': band.set('name', 'band11') band.set('product', hls_product) elif band.get('name') == 'sr_aerosol': band.set('name', 'CLOUD') band.set('product', hls_product) for band in mm.xml_object.bands.iterchildren(): if band.get('product') != hls_product: mm.xml_object.bands.remove(band) mm.write(xml_filename=outputxmlfile)
class TestMetadata(unittest.TestCase): """Test a few things, and expand on it someday""" def setUp(self): xml_filename = 'unittests/test.xml' self.mm = Metadata(xml_filename=xml_filename) self.mm.parse() def tearDown(self): pass def test_find_version(self): self.assertEqual(self.mm.xml_object.get('version'), '2.0') def test_find_corners(self): self.assertEqual( self.mm.xml_object.global_metadata.corner[0].attrib['location'], 'UL') self.assertEqual( self.mm.xml_object.global_metadata.corner[1].attrib['location'], 'LR') def test_find_band_names(self): self.assertEqual(self.mm.xml_object.bands.band[0].get('name'), 'band1') self.assertEqual(self.mm.xml_object.bands.band[1].get('name'), 'band2') self.assertEqual(self.mm.xml_object.bands.band[2].get('name'), 'band3') self.assertEqual(self.mm.xml_object.bands.band[3].get('name'), 'band4') self.assertEqual(self.mm.xml_object.bands.band[4].get('name'), 'band5') self.assertEqual(self.mm.xml_object.bands.band[5].get('name'), 'band6') def test_write_success(self): # Also tests for successful validation self.mm.write(xml_filename='walnuts_pass.xml') self.assertTrue(os.path.exists('walnuts_pass.xml') == 1) os.unlink('walnuts_pass.xml') def test_validation_fail(self): myE = objectify.ElementMaker(annotate=False, namespace=None, nsmap=None) self.mm.xml_object.animals = myE.root() self.mm.xml_object.animals.tiger = myE.frog('white') self.mm.xml_object.animals.frog = myE.frog('green') with self.assertRaises(XMLError): self.mm.validate()