Search in sources :

Example 21 with NitfSegmentsFlow

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

the class NitfGmtiTransformerTest method testNullMetacard.

@Test(expected = IllegalArgumentException.class)
public void testNullMetacard() throws Exception {
    NitfSegmentsFlow nitfSegmentsFlow = mock(NitfSegmentsFlow.class);
    nitfGmtiTransformer.transform(nitfSegmentsFlow, null);
}
Also used : NitfSegmentsFlow(org.codice.imaging.nitf.fluent.NitfSegmentsFlow) TreUtilityTest(org.codice.alliance.transformer.nitf.TreUtilityTest) Test(org.junit.Test)

Example 22 with NitfSegmentsFlow

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

the class ImageInputTransformerTest method testNitfWithDifferentImageDates.

@Test
public void testNitfWithDifferentImageDates() throws Exception {
    File nitfFile = File.createTempFile("nitf-", ".ntf");
    try {
        final DateTime fileDateTime = NitfTestCommons.createNitfDateTime(2016, 1, 1, 0, 0, 0);
        DateTime[] imageDateTimes = { NitfTestCommons.createNitfDateTime(2001, 1, 1, 0, 0, 0), NitfTestCommons.createNitfDateTime(2002, 1, 1, 0, 0, 0), NitfTestCommons.createNitfDateTime(2003, 1, 1, 0, 0, 0) };
        createNitfWithDifferentImageDateTimes(nitfFile, fileDateTime, imageDateTimes);
        try (InputStream inputStream = new FileInputStream(nitfFile)) {
            Metacard metacard = metacardFactory.createMetacard("differentImageDateTimesTest");
            NitfSegmentsFlow nitfSegmentsFlow = new NitfParserInputFlowImpl().inputStream(inputStream).headerOnly();
            nitfSegmentsFlow = headerTransformer.transform(nitfSegmentsFlow, metacard);
            metacard = transformer.transform(nitfSegmentsFlow, metacard);
            assertNotNull(metacard);
            validateDates(metacard, fileDateTime, imageDateTimes);
        }
    } 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) NitfParserInputFlowImpl(org.codice.imaging.nitf.fluent.impl.NitfParserInputFlowImpl) File(java.io.File) DateTime(org.codice.imaging.nitf.core.common.DateTime) FileInputStream(java.io.FileInputStream) TreUtilityTest(org.codice.alliance.transformer.nitf.TreUtilityTest) Test(org.junit.Test)

Example 23 with NitfSegmentsFlow

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

the class ImageInputTransformerTest method testPiaimc.

@Test
public void testPiaimc() throws IOException, NitfFormatException {
    File nitfFile = File.createTempFile("nitf-", ".ntf");
    try {
        createNitfWithPiaimc(nitfFile);
        try (InputStream inputStream = new FileInputStream(nitfFile)) {
            Metacard metacard = metacardFactory.createMetacard("csexraTest");
            NitfSegmentsFlow nitfSegmentsFlow = new NitfParserInputFlowImpl().inputStream(inputStream).headerOnly();
            transformer.transform(nitfSegmentsFlow, metacard);
            assertThat(metacard.getAttribute(Isr.CLOUD_COVER).getValue(), is(70.0));
        }
    } 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) 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 24 with NitfSegmentsFlow

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

the class ImageInputTransformerTest method testPiatgb.

@Test
public void testPiatgb() throws IOException, NitfFormatException {
    File nitfFile = File.createTempFile("nitf-", ".ntf");
    try {
        createNitfWithPiatgb(nitfFile);
        try (InputStream inputStream = new FileInputStream(nitfFile)) {
            Metacard metacard = metacardFactory.createMetacard("piatgbTest");
            NitfSegmentsFlow nitfSegmentsFlow = new NitfParserInputFlowImpl().inputStream(inputStream).headerOnly();
            transformer.transform(nitfSegmentsFlow, metacard);
            assertThat(metacard.getAttribute(PiatgbAttribute.TARGET_NAME_ATTRIBUTE.getLongName()).getValue(), is("Canberra Hill"));
        }
    } 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) 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 25 with NitfSegmentsFlow

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

the class NitfImageTransformer method handleSegments.

private void handleSegments(NitfSegmentsFlow nitfSegmentsFlow, Metacard metacard) {
    validateArgument(nitfSegmentsFlow, "nitfSegmentsFlow");
    validateArgument(metacard, "metacard");
    List<Polygon> polygonList = new ArrayList<>();
    List<Date> imageDateAndTimeList = new ArrayList<>();
    nitfSegmentsFlow.forEachImageSegment(segment -> handleImageSegmentHeader(metacard, segment, polygonList, imageDateAndTimeList)).forEachGraphicSegment(segment -> handleSegmentHeader(metacard, segment, GraphicAttribute.values())).forEachTextSegment(segment -> handleSegmentHeader(metacard, segment, TextAttribute.values())).forEachSymbolSegment(segment -> handleSegmentHeader(metacard, segment, SymbolAttribute.values())).forEachLabelSegment(segment -> handleSegmentHeader(metacard, segment, LabelAttribute.values())).end();
    // Set GEOGRAPHY from discovered polygons
    if (polygonList.size() == 1) {
        metacard.setAttribute(new AttributeImpl(Core.LOCATION, polygonList.get(0).toText()));
    } else if (polygonList.size() > 1) {
        Polygon[] polyAry = polygonList.toArray(new Polygon[polygonList.size()]);
        MultiPolygon multiPolygon = GEOMETRY_FACTORY.createMultiPolygon(polyAry);
        metacard.setAttribute(new AttributeImpl(Core.LOCATION, multiPolygon.toText()));
    }
    // Set start, effective, and end from discovered imageDateAndTimes
    if (!imageDateAndTimeList.isEmpty()) {
        LOGGER.trace("Discovered imageDateTimes of the image segments: {}", imageDateAndTimeList);
        final Date firstDateAndTime = imageDateAndTimeList.get(0);
        final Date lastDateAndTime = imageDateAndTimeList.get(imageDateAndTimeList.size() - 1);
        LOGGER.trace(SETTING_THE_METACARD_ATTRIBUTE_TO, Metacard.EFFECTIVE, firstDateAndTime);
        metacard.setAttribute(new AttributeImpl(Metacard.EFFECTIVE, firstDateAndTime));
        LOGGER.trace(SETTING_THE_METACARD_ATTRIBUTE_TO, ddf.catalog.data.types.DateTime.START, firstDateAndTime);
        metacard.setAttribute(new AttributeImpl(ddf.catalog.data.types.DateTime.START, firstDateAndTime));
        LOGGER.trace(SETTING_THE_METACARD_ATTRIBUTE_TO, ddf.catalog.data.types.DateTime.END, lastDateAndTime);
        metacard.setAttribute(new AttributeImpl(ddf.catalog.data.types.DateTime.END, lastDateAndTime));
    }
}
Also used : LinearRing(com.vividsolutions.jts.geom.LinearRing) Coordinate(com.vividsolutions.jts.geom.Coordinate) ImageSegment(org.codice.imaging.nitf.core.image.ImageSegment) StringUtils(org.apache.commons.lang.StringUtils) Logger(org.slf4j.Logger) SegmentHandler(org.codice.alliance.transformer.nitf.common.SegmentHandler) Date(java.util.Date) AttributeImpl(ddf.catalog.data.impl.AttributeImpl) LoggerFactory(org.slf4j.LoggerFactory) PrecisionModel(com.vividsolutions.jts.geom.PrecisionModel) NitfAttributeConverters(org.codice.alliance.transformer.nitf.NitfAttributeConverters) ArrayList(java.util.ArrayList) List(java.util.List) ImageCoordinates(org.codice.imaging.nitf.core.image.ImageCoordinates) NitfSegmentsFlow(org.codice.imaging.nitf.fluent.NitfSegmentsFlow) Metacard(ddf.catalog.data.Metacard) GeometryFactory(com.vividsolutions.jts.geom.GeometryFactory) MultiPolygon(com.vividsolutions.jts.geom.MultiPolygon) DataType(ddf.catalog.data.types.constants.core.DataType) Isr(org.codice.alliance.catalog.core.api.types.Isr) ImageCoordinatesRepresentation(org.codice.imaging.nitf.core.image.ImageCoordinatesRepresentation) Core(ddf.catalog.data.types.Core) Polygon(com.vividsolutions.jts.geom.Polygon) MultiPolygon(com.vividsolutions.jts.geom.MultiPolygon) AttributeImpl(ddf.catalog.data.impl.AttributeImpl) ArrayList(java.util.ArrayList) MultiPolygon(com.vividsolutions.jts.geom.MultiPolygon) Polygon(com.vividsolutions.jts.geom.Polygon) Date(java.util.Date)

Aggregations

NitfSegmentsFlow (org.codice.imaging.nitf.fluent.NitfSegmentsFlow)28 Test (org.junit.Test)25 NitfParserInputFlowImpl (org.codice.imaging.nitf.fluent.impl.NitfParserInputFlowImpl)22 File (java.io.File)13 InputStream (java.io.InputStream)13 Metacard (ddf.catalog.data.Metacard)12 TreUtilityTest (org.codice.alliance.transformer.nitf.TreUtilityTest)12 FileInputStream (java.io.FileInputStream)10 BinaryContent (ddf.catalog.data.BinaryContent)5 BufferedImage (java.awt.image.BufferedImage)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 NitfHeader (org.codice.imaging.nitf.core.header.NitfHeader)3 ImageCoordinates (org.codice.imaging.nitf.core.image.ImageCoordinates)3 FileSecurityMetadata (org.codice.imaging.nitf.core.security.FileSecurityMetadata)3 TemporaryFileBackedOutputStream (org.codice.ddf.platform.util.TemporaryFileBackedOutputStream)2 DataSource (org.codice.imaging.nitf.core.DataSource)2 NitfFormatException (org.codice.imaging.nitf.core.common.NitfFormatException)2 TargetIdImpl (org.codice.imaging.nitf.core.image.impl.TargetIdImpl)2