sarkit.sicd.NitfWriter
- class NitfWriter(file, metadata, jbp_override=None)
Write a SICD NITF
A NitfWriter object can be used as a context manager in a
withstatement.- Parameters:
- file
file object SICD NITF file to write
- metadata
NitfMetadata SICD NITF metadata to write (copied on construction)
- jbp_override
jbpy.JbporNone, optional Jbp (NITF) object to use. If not provided, one will be created using
jbp_from_nitf_metadata.
- file
Methods
close()Flush to disk and close any opened file descriptors.
write_image(array)Write pixel data to a NITF file
See also
Examples
Construct a SICD metadata object…
>>> import lxml.etree >>> import sarkit.sicd as sksicd >>> sicd_xml = lxml.etree.parse("data/example-sicd-1.4.0.xml") >>> sec = sksicd.NitfSecurityFields(clas="U") >>> meta = sksicd.NitfMetadata( ... xmltree=sicd_xml, ... file_header_part=sksicd.NitfFileHeaderPart(ostaid="my station", security=sec), ... im_subheader_part=sksicd.NitfImSubheaderPart(isorce="my sensor", security=sec), ... de_subheader_part=sksicd.NitfDeSubheaderPart(security=sec), ... )
… and associated complex image array.
>>> import numpy as np >>> img_to_write = np.zeros( ... ( ... sksicd.XmlHelper(sicd_xml).load("{*}ImageData/{*}NumRows"), ... sksicd.XmlHelper(sicd_xml).load("{*}ImageData/{*}NumCols"), ... ), ... dtype=sksicd.PIXEL_TYPES[sicd_xml.findtext("{*}ImageData/{*}PixelType")]["dtype"], ... )
Write the SICD NITF to a file
>>> from tempfile import NamedTemporaryFile >>> outfile = NamedTemporaryFile() >>> with sksicd.NitfWriter(outfile, meta) as w: ... w.write_image(img_to_write)