Search in sources :

Example 6 with NitfParserInputFlowImpl

use of org.codice.imaging.nitf.fluent.impl.NitfParserInputFlowImpl in project alliance by codice.

the class ImageInputTransformerTest method testExpltb.

@Test
public void testExpltb() throws IOException, NitfFormatException {
    File nitfFile = File.createTempFile("nitf-", ".ntf");
    try {
        Map<NitfAttribute, NitfValue> treMap = createNitfWithExpltb(nitfFile);
        try (InputStream inputStream = new FileInputStream(nitfFile)) {
            Metacard metacard = metacardFactory.createMetacard("expltbTest");
            NitfSegmentsFlow nitfSegmentsFlow = new NitfParserInputFlowImpl().inputStream(inputStream).headerOnly();
            headerTransformer.transform(nitfSegmentsFlow, metacard);
            transformer.transform(nitfSegmentsFlow, metacard);
            assertAttributesMap(metacard, treMap);
        }
    } finally {
        nitfFile.delete();
    }
}
Also used : Metacard(ddf.catalog.data.Metacard) FileInputStream(java.io.FileInputStream) InputStream(java.io.InputStream) NitfSegmentsFlow(org.codice.imaging.nitf.fluent.NitfSegmentsFlow) NitfAttribute(org.codice.alliance.transformer.nitf.common.NitfAttribute) NitfParserInputFlowImpl(org.codice.imaging.nitf.fluent.impl.NitfParserInputFlowImpl) File(java.io.File) FileInputStream(java.io.FileInputStream) TreUtilityTest(org.codice.alliance.transformer.nitf.TreUtilityTest) Test(org.junit.Test)

Example 7 with NitfParserInputFlowImpl

use of org.codice.imaging.nitf.fluent.impl.NitfParserInputFlowImpl in project alliance by codice.

the class ImageInputTransformerTest method testNitfParsing.

@Test
public void testNitfParsing() throws Exception {
    NitfSegmentsFlow nitfSegmentsFlow = new NitfParserInputFlowImpl().inputStream(getInputStream(GEO_NITF)).allData();
    Metacard metacard = metacardFactory.createMetacard("101");
    nitfSegmentsFlow = headerTransformer.transform(nitfSegmentsFlow, metacard);
    metacard = transformer.transform(nitfSegmentsFlow, metacard);
    assertNotNull(metacard);
    assertThat(metacard.getMetacardType().getName(), is("isr.image"));
    assertThat(metacard.getTitle(), is("Checks an uncompressed 1024x1024 8 bit mono image with GEOcentric data. Airfield"));
    String wkt = metacard.getLocation();
    assertTrue(wkt.matches("^POLYGON \\(\\(85 32.98\\d*, 85.00\\d* 32.98\\d*, 85.00\\d* 32.98\\d*, 85 32.98\\d*, 85 32.98\\d*\\)\\)"));
    Map<NitfAttribute, NitfValue> map = initAttributesToBeAsserted();
    assertAttributesMap(metacard, map);
    validateDates(metacard, NitfTestCommons.createNitfDateTime(1997, 12, 17, 10, 26, 30), NitfTestCommons.createNitfDateTime(1996, 12, 17, 10, 26, 30));
}
Also used : Metacard(ddf.catalog.data.Metacard) NitfSegmentsFlow(org.codice.imaging.nitf.fluent.NitfSegmentsFlow) NitfAttribute(org.codice.alliance.transformer.nitf.common.NitfAttribute) NitfParserInputFlowImpl(org.codice.imaging.nitf.fluent.impl.NitfParserInputFlowImpl) TreUtilityTest(org.codice.alliance.transformer.nitf.TreUtilityTest) Test(org.junit.Test)

Example 8 with NitfParserInputFlowImpl

use of org.codice.imaging.nitf.fluent.impl.NitfParserInputFlowImpl in project alliance by codice.

the class CatalogOutputAdapter method getNitfSegmentsFlow.

NitfSegmentsFlow getNitfSegmentsFlow(InputStream resourceInputStream) throws NitfFormatException, IOException {
    notNull(resourceInputStream, "resourceInputStream must be non-null");
    NitfSegmentsFlow nitfSegmentsFlow;
    try (TemporaryFileBackedOutputStream tfbos = createTemporaryFileBackedOutputStream()) {
        IOUtils.copyLarge(resourceInputStream, tfbos);
        try (InputStream is = tfbos.asByteSource().openBufferedStream()) {
            nitfSegmentsFlow = new NitfParserInputFlowImpl().inputStream(is).allData();
        }
    }
    return nitfSegmentsFlow;
}
Also used : TemporaryFileBackedOutputStream(org.codice.ddf.platform.util.TemporaryFileBackedOutputStream) BufferedInputStream(java.io.BufferedInputStream) ByteArrayInputStream(java.io.ByteArrayInputStream) FileInputStream(java.io.FileInputStream) InputStream(java.io.InputStream) NitfSegmentsFlow(org.codice.imaging.nitf.fluent.NitfSegmentsFlow) NitfParserInputFlowImpl(org.codice.imaging.nitf.fluent.impl.NitfParserInputFlowImpl)

Example 9 with NitfParserInputFlowImpl

use of org.codice.imaging.nitf.fluent.impl.NitfParserInputFlowImpl in project alliance by codice.

the class CatalogOutputAdapterTest method testGrayscale.

@Test
public void testGrayscale() throws MimeTypeParseException, NitfFormatException, IOException, NoSuchMethodException, IllegalAccessException, InvocationTargetException, InstantiationException {
    int originalWidth = 200;
    int originalHeight = 100;
    int chipWidth = 160;
    int chipHeight = 80;
    NitfSegmentsFlow nitfSegmentsFlow = createGenericNitfSegmentFlow(originalWidth, originalHeight);
    BufferedImage chipImage = new BufferedImage(chipWidth, chipHeight, BufferedImage.TYPE_BYTE_GRAY);
    BinaryContent binaryContent = catalogOutputAdapter.getNitfBinaryContent(chipImage, nitfSegmentsFlow, 0, 0);
    NitfSegmentsFlow chipNitfSegmentFlow = new NitfParserInputFlowImpl().inputStream(binaryContent.getInputStream()).allData();
    chipNitfSegmentFlow.forEachImageSegment(imageSegment1 -> {
        assertThat(imageSegment1.getPixelValueType(), is(PixelValueType.INTEGER));
        assertThat(imageSegment1.getImageRepresentation(), is(ImageRepresentation.MONOCHROME));
        assertThat(imageSegment1.getActualBitsPerPixelPerBand(), is(8));
        assertThat(imageSegment1.getNumberOfBitsPerPixelPerBand(), is(8));
        assertThat(imageSegment1.getImageBand(1).getImageRepresentation(), is("M"));
    });
}
Also used : NitfSegmentsFlow(org.codice.imaging.nitf.fluent.NitfSegmentsFlow) NitfParserInputFlowImpl(org.codice.imaging.nitf.fluent.impl.NitfParserInputFlowImpl) BinaryContent(ddf.catalog.data.BinaryContent) BufferedImage(java.awt.image.BufferedImage) Test(org.junit.Test)

Example 10 with NitfParserInputFlowImpl

use of org.codice.imaging.nitf.fluent.impl.NitfParserInputFlowImpl in project alliance by codice.

the class CatalogOutputAdapterTest method testGetNitfBinaryContentBlockedChip.

@Test
public void testGetNitfBinaryContentBlockedChip() throws MimeTypeParseException, NitfFormatException, IOException, NoSuchMethodException, IllegalAccessException, InvocationTargetException, InstantiationException {
    // 200000N0200000E 200000N0400000E
    // 000000N0200000E 000000N0400000E
    int originalWidth = 2048;
    int originalHeight = 2048;
    int chipX = 0;
    int chipY = 0;
    int chipWidth = 2048;
    int chipHeight = 2048;
    BufferedImage chipImage = new BufferedImage(chipWidth, chipHeight, BufferedImage.TYPE_3BYTE_BGR);
    FileSecurityMetadata fileSecurityMetadata = createFileSecurityMetadata();
    DateTime dateTime = DateTimeImpl.getNitfDateTimeForNow();
    DataSource dataSource = mock(DataSource.class);
    NitfHeader nitfHeader = getNitfHeader(fileSecurityMetadata, dateTime);
    ImageCoordinates imageCoordinates = getImageCoordinates();
    SecurityMetadata imageSecurityMetadata = getImageSecurityMetadata();
    ImageSegment imageSegment = getImageSegment(originalWidth, originalHeight, dateTime, imageCoordinates, imageSecurityMetadata);
    when(dataSource.getNitfHeader()).thenReturn(nitfHeader);
    when(dataSource.getImageSegments()).thenReturn(Collections.singletonList(imageSegment));
    Constructor<NitfSegmentsFlowImpl> constructor;
    constructor = NitfSegmentsFlowImpl.class.getDeclaredConstructor(DataSource.class, Runnable.class);
    constructor.setAccessible(true);
    NitfSegmentsFlow nitfSegmentsFlow = constructor.newInstance(dataSource, (Runnable) () -> {
    });
    BinaryContent binaryContent = catalogOutputAdapter.getNitfBinaryContent(chipImage, nitfSegmentsFlow, chipX, chipY);
    NitfSegmentsFlow chipNitfSegmentFlow = new NitfParserInputFlowImpl().inputStream(binaryContent.getInputStream()).allData();
    assertThat(chipNitfSegmentFlow, notNullValue());
    chipNitfSegmentFlow.fileHeader(nh -> {
        assertThat(nh.getFileType(), is(FileType.NITF_TWO_ONE));
        assertThat(nh.getFileTitle(), is("FileTitle"));
        assertThat(nh.getStandardType(), is("BF01"));
        assertThat(nh.getOriginatingStationId(), is("U21SOO90"));
        assertThat(nh.getFileBackgroundColour().getRed(), is((byte) 0));
        assertThat(nh.getFileBackgroundColour().getGreen(), is((byte) 0));
        assertThat(nh.getFileBackgroundColour().getBlue(), is((byte) 0));
        assertThat(nh.getFileDateTime(), notNullValue());
        assertThat(nh.getOriginatorsName(), is("W.TEMPEL"));
        assertThat(nh.getOriginatorsPhoneNumber(), is("44 1480 84 5611"));
        assertThat(nh.getFileSecurityMetadata().getSecurityClassification(), is(SecurityClassification.UNCLASSIFIED));
        assertThat(nh.getFileSecurityMetadata().getSecurityClassificationSystem(), is("AB"));
        assertThat(nh.getFileSecurityMetadata().getCodewords(), is("ABCDEFGHIJK"));
        assertThat(nh.getFileSecurityMetadata().getControlAndHandling(), is("AB"));
        assertThat(nh.getFileSecurityMetadata().getReleaseInstructions(), is("01234567890123456789"));
        assertThat(nh.getFileSecurityMetadata().getDeclassificationType(), is("DD"));
        assertThat(nh.getFileSecurityMetadata().getDeclassificationDate(), is("20160101"));
        assertThat(nh.getFileSecurityMetadata().getDeclassificationExemption(), is("abcd"));
        assertThat(nh.getFileSecurityMetadata().getDowngrade(), is("S"));
        assertThat(nh.getFileSecurityMetadata().getDowngradeDate(), is("20160202"));
        assertThat(nh.getFileSecurityMetadata().getClassificationText(), is("classtext"));
        assertThat(nh.getFileSecurityMetadata().getClassificationAuthorityType(), is("O"));
        assertThat(nh.getFileSecurityMetadata().getClassificationAuthority(), is("MyAuthority"));
        assertThat(nh.getFileSecurityMetadata().getClassificationReason(), is("A"));
        assertThat(nh.getFileSecurityMetadata().getSecuritySourceDate(), is("20160303"));
        assertThat(nh.getFileSecurityMetadata().getSecurityControlNumber(), is("012345678901234"));
        assertThat(nh.getFileSecurityMetadata().getFileCopyNumber(), is("99999"));
        assertThat(nh.getFileSecurityMetadata().getFileNumberOfCopies(), is("99999"));
    });
    chipNitfSegmentFlow.forEachImageSegment(imageSegment1 -> {
        assertThat(imageSegment1.getImageCoordinates().getCoordinate00().getLongitude(), closeTo(20, 0.01));
        assertThat(imageSegment1.getImageCoordinates().getCoordinate00().getLatitude(), closeTo(20, 0.01));
        assertThat(imageSegment1.getImageCoordinates().getCoordinate0MaxCol().getLongitude(), closeTo(40, 0.01));
        assertThat(imageSegment1.getImageCoordinates().getCoordinate0MaxCol().getLatitude(), closeTo(20, 0.01));
        assertThat(imageSegment1.getImageCoordinates().getCoordinateMaxRowMaxCol().getLongitude(), closeTo(40, 0.01));
        assertThat(imageSegment1.getImageCoordinates().getCoordinateMaxRowMaxCol().getLatitude(), closeTo(0, 0.01));
        assertThat(imageSegment1.getImageCoordinates().getCoordinateMaxRow0().getLongitude(), closeTo(20, 0.01));
        assertThat(imageSegment1.getImageCoordinates().getCoordinateMaxRow0().getLatitude(), closeTo(0, 0.01));
        assertThat(imageSegment1.getNumberOfColumns(), is((long) chipWidth));
        assertThat(imageSegment1.getNumberOfRows(), is((long) chipHeight));
        assertThat(imageSegment1.getImageCategory(), is(ImageCategory.UNKNOWN));
        assertThat(imageSegment1.getImageComments(), is(Collections.singletonList("MyComment")));
        assertThat(imageSegment1.getIdentifier(), is("0123456789"));
        assertThat(imageSegment1.getImageIdentifier2(), is("abc"));
        assertThat(imageSegment1.getImageMagnification(), is("1.0 "));
        try {
            assertThat(imageSegment1.getImageTargetId().textValue(), is(new TargetIdImpl("                 ").textValue()));
        } catch (NitfFormatException e) {
            fail(e.getMessage());
        }
        assertThat(imageSegment1.getImageSource(), is(""));
        assertThat(imageSegment1.getImageDateTime().getSourceString(), is(dateTime.getSourceString()));
        assertThat(imageSegment1.getImageRepresentation(), is(ImageRepresentation.RGBTRUECOLOUR));
    });
}
Also used : ImageSegment(org.codice.imaging.nitf.core.image.ImageSegment) TargetIdImpl(org.codice.imaging.nitf.core.image.impl.TargetIdImpl) NitfFormatException(org.codice.imaging.nitf.core.common.NitfFormatException) NitfSegmentsFlow(org.codice.imaging.nitf.fluent.NitfSegmentsFlow) NitfParserInputFlowImpl(org.codice.imaging.nitf.fluent.impl.NitfParserInputFlowImpl) BinaryContent(ddf.catalog.data.BinaryContent) FileSecurityMetadata(org.codice.imaging.nitf.core.security.FileSecurityMetadata) BufferedImage(java.awt.image.BufferedImage) DateTime(org.codice.imaging.nitf.core.common.DateTime) DataSource(org.codice.imaging.nitf.core.DataSource) NitfSegmentsFlowImpl(org.codice.imaging.nitf.fluent.impl.NitfSegmentsFlowImpl) NitfHeader(org.codice.imaging.nitf.core.header.NitfHeader) ImageCoordinates(org.codice.imaging.nitf.core.image.ImageCoordinates) SecurityMetadata(org.codice.imaging.nitf.core.security.SecurityMetadata) FileSecurityMetadata(org.codice.imaging.nitf.core.security.FileSecurityMetadata) Test(org.junit.Test)

Aggregations

NitfParserInputFlowImpl (org.codice.imaging.nitf.fluent.impl.NitfParserInputFlowImpl)23 NitfSegmentsFlow (org.codice.imaging.nitf.fluent.NitfSegmentsFlow)22 Test (org.junit.Test)20 File (java.io.File)13 Metacard (ddf.catalog.data.Metacard)12 InputStream (java.io.InputStream)12 FileInputStream (java.io.FileInputStream)10 TreUtilityTest (org.codice.alliance.transformer.nitf.TreUtilityTest)10 BufferedImage (java.awt.image.BufferedImage)6 BinaryContent (ddf.catalog.data.BinaryContent)5 NitfAttribute (org.codice.alliance.transformer.nitf.common.NitfAttribute)5 ImageSegment (org.codice.imaging.nitf.core.image.ImageSegment)4 DateTime (org.codice.imaging.nitf.core.common.DateTime)3 NitfFormatException (org.codice.imaging.nitf.core.common.NitfFormatException)3 NitfHeader (org.codice.imaging.nitf.core.header.NitfHeader)3 FileSecurityMetadata (org.codice.imaging.nitf.core.security.FileSecurityMetadata)3 J2KImageWriteParam (com.github.jaiimageio.jpeg2000.J2KImageWriteParam)1 J2KImageReaderSpi (com.github.jaiimageio.jpeg2000.impl.J2KImageReaderSpi)1 J2KImageWriter (com.github.jaiimageio.jpeg2000.impl.J2KImageWriter)1 J2KImageWriterSpi (com.github.jaiimageio.jpeg2000.impl.J2KImageWriterSpi)1