use of org.codice.imaging.nitf.core.image.ImageSegment in project alliance by codice.
the class ImageInputTransformerTest method createNitfWithPiaprd.
private static Map<NitfAttribute, NitfValue> createNitfWithPiaprd(File file) throws NitfFormatException {
String accessId = "THIS IS AN IPA FILE. -END-";
String keyword = "FIRST " + " " + " " + " " + " -END-";
Tre piaprd = TreFactory.getDefault("PIAPRD", TreSource.ImageExtendedSubheaderData);
piaprd.add(new TreEntryImpl("ACCESSID", accessId, "string"));
piaprd.add(new TreEntryImpl("FMCONTROL", "PXX -END-", "string"));
piaprd.add(new TreEntryImpl("SUBDET", "P", "string"));
piaprd.add(new TreEntryImpl("PRODCODE", "YY", "string"));
piaprd.add(new TreEntryImpl("PRODUCERSE", "UNKNOW", "string"));
piaprd.add(new TreEntryImpl("PRODIDNO", "X211 -END-", "string"));
piaprd.add(new TreEntryImpl("PRODSNME", "JUNK FILE.", "string"));
piaprd.add(new TreEntryImpl("PRODUCERCD", "27", "string"));
piaprd.add(new TreEntryImpl("PRODCRTIME", "26081023ZOCT95", "string"));
piaprd.add(new TreEntryImpl("MAPID", "132 -END-", "string"));
piaprd.add(new TreEntryImpl("SECTITLEREP", "01", "UINT"));
TreEntryImpl secTitleEntry = new TreEntryImpl("SECTITLE", null, "string");
TreGroup secTitleGroup = TreFactory.getDefault("SECTITLE", TreSource.ImageExtendedSubheaderData);
secTitleGroup.getEntries().add(0, new TreEntryImpl("SECTITLE", " -END-", "string"));
secTitleGroup.getEntries().add(1, new TreEntryImpl("PPNUM", "32/47", "string"));
secTitleGroup.getEntries().add(2, new TreEntryImpl("TPP", "001", "UINT"));
secTitleEntry.initGroups();
secTitleEntry.addGroup(secTitleGroup);
piaprd.add(secTitleEntry);
piaprd.add(new TreEntryImpl("REQORGREP", "01", "UINT"));
TreEntryImpl reqorgEntry = new TreEntryImpl("REQORG", null, "string");
TreGroup reqorgGroup = TreFactory.getDefault("REQORG", TreSource.ImageExtendedSubheaderData);
reqorgGroup.getEntries().add(0, new TreEntryImpl("REQORG", "FIRST -END-", "string"));
reqorgEntry.initGroups();
reqorgEntry.addGroup(reqorgGroup);
piaprd.add(reqorgEntry);
piaprd.add(new TreEntryImpl("KEYWORDREP", "01", "UINT"));
TreEntryImpl keywordEntry = new TreEntryImpl("KEYWORD", null, "string");
TreGroup keywordGroup = TreFactory.getDefault("KEYWORD", TreSource.ImageExtendedSubheaderData);
keywordGroup.getEntries().add(0, new TreEntryImpl("KEYWORD", keyword, "string"));
keywordEntry.initGroups();
keywordEntry.addGroup(keywordGroup);
piaprd.add(keywordEntry);
piaprd.add(new TreEntryImpl("ASSRPTREP", "01", "UNIT"));
TreEntryImpl assrptEntry = new TreEntryImpl("ASSRPT", null, "string");
TreGroup asserptGroup = TreFactory.getDefault("ASSRPT", TreSource.ImageExtendedSubheaderData);
asserptGroup.getEntries().add(0, new TreEntryImpl("ASSRPT", "FIRST -END-", "string"));
assrptEntry.initGroups();
assrptEntry.addGroup(asserptGroup);
piaprd.add(assrptEntry);
piaprd.add(new TreEntryImpl("ATEXTREP", "01", "UINT"));
TreEntryImpl atextEntry = new TreEntryImpl("ATEXT", null, "string");
TreGroup atextGroup = TreFactory.getDefault("ATEXT", TreSource.ImageExtendedSubheaderData);
atextGroup.getEntries().add(0, new TreEntryImpl("ATEXT", "FIRST " + " " + " " + " " + " -END-", "string"));
atextEntry.initGroups();
atextEntry.addGroup(atextGroup);
piaprd.add(atextEntry);
ImageSegment imageSegment = TreUtilityTest.createImageSegment();
imageSegment.getTREsRawStructure().add(piaprd);
new NitfCreationFlowImpl().fileHeader(() -> TreUtilityTest.createFileHeader()).imageSegment(() -> imageSegment).write(file.getAbsolutePath());
// key value pair of nitf attributes and expected getAttributes
Map<NitfAttribute, NitfValue> assertMap = new HashMap<>();
assertMap.put(PiaprdAttribute.ACCESS_ID_ATTRIBUTE, new NitfValue(accessId));
assertMap.put(IndexedPiaprdAttribute.KEYWORD_ATTRIBUTE, new NitfValue(keyword));
return assertMap;
}
use of org.codice.imaging.nitf.core.image.ImageSegment in project alliance by codice.
the class ImageInputTransformerTest method createNitfWithExpltb.
private static Map<NitfAttribute, NitfValue> createNitfWithExpltb(File file) {
String angleToNorth = "150.001";
String angleToNorthAccuracy = "03.001";
String mode = "LBM";
String primeId = "aaaaaaaaaaaa";
Tre expltb = TreFactory.getDefault("EXPLTB", TreSource.ImageExtendedSubheaderData);
expltb.add(new TreEntryImpl("ANGLE_TO_NORTH", angleToNorth, "float"));
expltb.add(new TreEntryImpl("ANGLE_TO_NORTH_ACCY", angleToNorthAccuracy, "float"));
expltb.add(new TreEntryImpl("SQUINT_ANGLE", "-59.002", "float"));
expltb.add(new TreEntryImpl("SQUINT_ANGLE_ACCY", "44.002", "float"));
expltb.add(new TreEntryImpl("MODE", mode, "string"));
expltb.add(new TreEntryImpl("GRAZE_ANG", "50.00", "float"));
expltb.add(new TreEntryImpl("GRAZE_ANG_ACCY", "00.01", "float"));
expltb.add(new TreEntryImpl("SLOPE_ANG", "24.00", "float"));
expltb.add(new TreEntryImpl("POLAR", "HH", "UINT"));
expltb.add(new TreEntryImpl("NSAMP", "03333", "UINT"));
expltb.add(new TreEntryImpl("SEQ_NUM", "4", "string"));
expltb.add(new TreEntryImpl("PRIME_ID", primeId, "string"));
expltb.add(new TreEntryImpl("PRIME_BE", "bbbbbbbbbbbbbbb", "string"));
expltb.add(new TreEntryImpl("N_SEC", "11", "UINT"));
expltb.add(new TreEntryImpl("IPR", "22", "UINT"));
ImageSegment imageSegment = TreUtilityTest.createImageSegment();
imageSegment.getTREsRawStructure().add(expltb);
new NitfCreationFlowImpl().fileHeader(() -> TreUtilityTest.createFileHeader()).imageSegment(() -> imageSegment).write(file.getAbsolutePath());
// key value pair of nitf attributes and expected getAttributes
Map<NitfAttribute, NitfValue> assertMap = new HashMap<>();
assertMap.put(ExpltbAttribute.ANGLE_TO_NORTH_ATTRIBUTE, new NitfValue(Float.parseFloat(angleToNorth)));
assertMap.put(ExpltbAttribute.ANGLE_TO_NORTH_ACCURACY_ATTRIBUTE, new NitfValue(Float.parseFloat(angleToNorthAccuracy)));
assertMap.put(ExpltbAttribute.MODE_ATTRIBUTE, new NitfValue(mode));
assertMap.put(ExpltbAttribute.PRIME_ID_ATTRIBUTE, new NitfValue(primeId));
return assertMap;
}
use of org.codice.imaging.nitf.core.image.ImageSegment in project alliance by codice.
the class ImageInputTransformerTest method createNitfWithPiatgb.
private static void createNitfWithPiatgb(File file) {
NitfHeader header = NitfHeaderFactory.getDefault(FileType.NITF_TWO_ONE);
Tre piatgb = TreFactory.getDefault("PIATGB", TreSource.ImageExtendedSubheaderData);
piatgb.add(new TreEntryImpl("TGTUTM", "55HFA9359093610", "string"));
piatgb.add(new TreEntryImpl("PIATGAID", "ABCDEFGHIJUVWXY", "string"));
piatgb.add(new TreEntryImpl("PIACTRY", "AS", "string"));
piatgb.add(new TreEntryImpl("PIACAT", "702XX", "string"));
piatgb.add(new TreEntryImpl("TGTGEO", "351655S1490742E", "string"));
piatgb.add(new TreEntryImpl("DATUM", "WGE", "string"));
piatgb.add(new TreEntryImpl("TGTNAME", "Canberra Hill ", "string"));
piatgb.add(new TreEntryImpl("PERCOVER", "57", "UINT"));
piatgb.add(new TreEntryImpl("TGTLAT", "-35.30812 ", "float"));
piatgb.add(new TreEntryImpl("TGTLON", "+149.12447 ", "float"));
ImageSegment imageSegment = ImageSegmentFactory.getDefault(FileType.NITF_TWO_ONE);
imageSegment.addImageBand(TreUtilityTest.createImageBand());
imageSegment.getTREsRawStructure().add(piatgb);
new NitfCreationFlowImpl().fileHeader(() -> header).imageSegment(() -> imageSegment).write(file.getAbsolutePath());
}
use of org.codice.imaging.nitf.core.image.ImageSegment in project alliance by codice.
the class NitfPreStoragePlugin method render.
private BufferedImage render(ContentItem contentItem, Function<Pair<ImageSegment, NitfRenderer>, BufferedImage> imageSegmentFunction) throws IOException, ParseException, NitfFormatException {
final ThreadLocal<BufferedImage> bufferedImage = new ThreadLocal<>();
if (contentItem != null) {
InputStream inputStream = contentItem.getInputStream();
if (inputStream != null) {
try {
NitfRenderer renderer = getNitfRenderer();
new NitfParserInputFlowImpl().inputStream(inputStream).allData().forEachImageSegment(segment -> {
if (bufferedImage.get() == null) {
BufferedImage bi = imageSegmentFunction.apply(new ImmutablePair<>(segment, renderer));
if (bi != null) {
bufferedImage.set(bi);
}
}
}).end();
} finally {
IOUtils.closeQuietly(inputStream);
}
}
}
return bufferedImage.get();
}
use of org.codice.imaging.nitf.core.image.ImageSegment in project alliance by codice.
the class ImagingTest method testImageNitfChipCreationNitf.
@Test
public void testImageNitfChipCreationNitf() throws Exception {
String id = ingestNitfFile(TEST_IMAGE_NITF);
String chippingUrl = SECURE_ROOT + HTTPS_PORT.getPort() + "/chipping/chipping.html?id=" + id + "&source=Alliance";
given().get(chippingUrl).then().assertThat().statusCode(HttpStatus.SC_OK);
final int width = 350;
final int height = 240;
String chippedImageUrl = SERVICE_ROOT + "/catalog/" + id + "?transform=nitf-chip&qualifier=overview&x=" + 300 + "&y=" + 200 + "&w=" + width + "&h=" + height;
InputStream chippedImageStream = given().get(chippedImageUrl).asInputStream();
List<ImageSegment> imageSegments = new LinkedList<>();
try (TemporaryFileBackedOutputStream tfbos = new TemporaryFileBackedOutputStream()) {
IOUtils.copyLarge(chippedImageStream, tfbos);
NitfSegmentsFlow nitfSegmentsFlow = new NitfParserInputFlowImpl().inputStream(tfbos.asByteSource().openBufferedStream()).allData();
nitfSegmentsFlow.forEachImageSegment(imageSegments::add);
}
assertThat(imageSegments, hasSize(1));
assertThat(imageSegments.get(0).getNumberOfColumns(), is((long) width));
assertThat(imageSegments.get(0).getNumberOfRows(), is((long) height));
}
Aggregations