Search in sources :

Example 1 with ImageCoordinates

use of org.codice.imaging.nitf.core.image.ImageCoordinates in project alliance by codice.

the class NitfImageTransformer method getPolygonForSegment.

private Polygon getPolygonForSegment(ImageSegment segment, GeometryFactory geomFactory) {
    Coordinate[] coords = new Coordinate[5];
    ImageCoordinates imageCoordinates = segment.getImageCoordinates();
    coords[0] = new Coordinate(imageCoordinates.getCoordinate00().getLongitude(), imageCoordinates.getCoordinate00().getLatitude());
    coords[4] = new Coordinate(coords[0]);
    coords[1] = new Coordinate(imageCoordinates.getCoordinate0MaxCol().getLongitude(), imageCoordinates.getCoordinate0MaxCol().getLatitude());
    coords[2] = new Coordinate(imageCoordinates.getCoordinateMaxRowMaxCol().getLongitude(), imageCoordinates.getCoordinateMaxRowMaxCol().getLatitude());
    coords[3] = new Coordinate(imageCoordinates.getCoordinateMaxRow0().getLongitude(), imageCoordinates.getCoordinateMaxRow0().getLatitude());
    LinearRing externalRing = geomFactory.createLinearRing(coords);
    return geomFactory.createPolygon(externalRing, null);
}
Also used : Coordinate(com.vividsolutions.jts.geom.Coordinate) ImageCoordinates(org.codice.imaging.nitf.core.image.ImageCoordinates) LinearRing(com.vividsolutions.jts.geom.LinearRing)

Example 2 with ImageCoordinates

use of org.codice.imaging.nitf.core.image.ImageCoordinates 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)

Example 3 with ImageCoordinates

use of org.codice.imaging.nitf.core.image.ImageCoordinates in project alliance by codice.

the class CatalogOutputAdapterTest method createGenericNitfSegmentFlow.

private NitfSegmentsFlow createGenericNitfSegmentFlow(int originalWidth, int originalHeight) throws NitfFormatException, NoSuchMethodException, InstantiationException, IllegalAccessException, InvocationTargetException {
    DateTime dateTime = DateTimeImpl.getNitfDateTimeForNow();
    FileSecurityMetadata fileSecurityMetadata = createFileSecurityMetadata();
    NitfHeader nitfHeader = getNitfHeader(fileSecurityMetadata, dateTime);
    ImageCoordinates imageCoordinates = getImageCoordinates();
    SecurityMetadata imageSecurityMetadata = getImageSecurityMetadata();
    ImageSegment imageSegment = getImageSegment(originalWidth, originalHeight, dateTime, imageCoordinates, imageSecurityMetadata);
    DataSource dataSource = getDataSource(nitfHeader, Collections.singletonList(imageSegment));
    Constructor<NitfSegmentsFlowImpl> constructor;
    constructor = NitfSegmentsFlowImpl.class.getDeclaredConstructor(DataSource.class, Runnable.class);
    constructor.setAccessible(true);
    return constructor.newInstance(dataSource, (Runnable) () -> {
    });
}
Also used : ImageSegment(org.codice.imaging.nitf.core.image.ImageSegment) 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) FileSecurityMetadata(org.codice.imaging.nitf.core.security.FileSecurityMetadata) DateTime(org.codice.imaging.nitf.core.common.DateTime) DataSource(org.codice.imaging.nitf.core.DataSource)

Example 4 with ImageCoordinates

use of org.codice.imaging.nitf.core.image.ImageCoordinates in project alliance by codice.

the class CatalogOutputAdapterTest method testGetNitfBinaryContent.

@Test
public void testGetNitfBinaryContent() throws MimeTypeParseException, NitfFormatException, IOException, NoSuchMethodException, IllegalAccessException, InvocationTargetException, InstantiationException {
    // 200000N0200000E 200000N0400000E
    // 000000N0200000E 000000N0400000E
    int originalWidth = 200;
    int originalHeight = 100;
    int chipX = 20;
    int chipY = 10;
    int chipWidth = 160;
    int chipHeight = 80;
    // assume original image is 200x100, chip is 20x10/160x80
    BufferedImage chipImage = new BufferedImage(chipWidth, chipHeight, BufferedImage.TYPE_3BYTE_BGR);
    FileSecurityMetadata fileSecurityMetadata = createFileSecurityMetadata();
    DateTime dateTime = DateTimeImpl.getNitfDateTimeForNow();
    NitfHeader nitfHeader = getNitfHeader(fileSecurityMetadata, dateTime);
    ImageCoordinates imageCoordinates = getImageCoordinates();
    SecurityMetadata imageSecurityMetadata = getImageSecurityMetadata();
    ImageSegment imageSegment = getImageSegment(originalWidth, originalHeight, dateTime, imageCoordinates, imageSecurityMetadata);
    DataSource dataSource = getDataSource(nitfHeader, 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(22, 0.01));
        assertThat(imageSegment1.getImageCoordinates().getCoordinate00().getLatitude(), closeTo(18, 0.01));
        assertThat(imageSegment1.getImageCoordinates().getCoordinate0MaxCol().getLongitude(), closeTo(38, 0.01));
        assertThat(imageSegment1.getImageCoordinates().getCoordinate0MaxCol().getLatitude(), closeTo(18, 0.01));
        assertThat(imageSegment1.getImageCoordinates().getCoordinateMaxRowMaxCol().getLongitude(), closeTo(38, 0.01));
        assertThat(imageSegment1.getImageCoordinates().getCoordinateMaxRowMaxCol().getLatitude(), closeTo(2, 0.01));
        assertThat(imageSegment1.getImageCoordinates().getCoordinateMaxRow0().getLongitude(), closeTo(22, 0.01));
        assertThat(imageSegment1.getImageCoordinates().getCoordinateMaxRow0().getLatitude(), closeTo(2, 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

ImageCoordinates (org.codice.imaging.nitf.core.image.ImageCoordinates)4 DataSource (org.codice.imaging.nitf.core.DataSource)3 DateTime (org.codice.imaging.nitf.core.common.DateTime)3 NitfHeader (org.codice.imaging.nitf.core.header.NitfHeader)3 ImageSegment (org.codice.imaging.nitf.core.image.ImageSegment)3 FileSecurityMetadata (org.codice.imaging.nitf.core.security.FileSecurityMetadata)3 SecurityMetadata (org.codice.imaging.nitf.core.security.SecurityMetadata)3 NitfSegmentsFlowImpl (org.codice.imaging.nitf.fluent.impl.NitfSegmentsFlowImpl)3 BinaryContent (ddf.catalog.data.BinaryContent)2 BufferedImage (java.awt.image.BufferedImage)2 NitfFormatException (org.codice.imaging.nitf.core.common.NitfFormatException)2 TargetIdImpl (org.codice.imaging.nitf.core.image.impl.TargetIdImpl)2 NitfSegmentsFlow (org.codice.imaging.nitf.fluent.NitfSegmentsFlow)2 NitfParserInputFlowImpl (org.codice.imaging.nitf.fluent.impl.NitfParserInputFlowImpl)2 Test (org.junit.Test)2 Coordinate (com.vividsolutions.jts.geom.Coordinate)1 LinearRing (com.vividsolutions.jts.geom.LinearRing)1