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 with statement.

Parameters:
filefile object

SICD NITF file to write

metadataNitfMetadata

SICD NITF metadata to write (copied on construction)

jbp_overridejbpy.Jbp or None, optional

Jbp (NITF) object to use. If not provided, one will be created using jbp_from_nitf_metadata.

Methods

close()

Flush to disk and close any opened file descriptors.

write_image(array)

Write pixel data to a NITF file

See also

NitfReader

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)