?? nitfheader.java
字號:
// **********************************************************************// // <copyright>// // BBN Technologies// 10 Moulton Street// Cambridge, MA 02138// (617) 873-8000// // Copyright (C) BBNT Solutions LLC. All rights reserved.// // </copyright>// **********************************************************************// // $Source: /cvs/distapps/openmap/src/openmap/com/bbn/openmap/layer/nitf/NitfHeader.java,v $// $RCSfile: NitfHeader.java,v $// $Revision: 1.2.2.1 $// $Date: 2004/10/14 18:27:12 $// $Author: dietrick $// // **********************************************************************/* * The meat of this code is based on source code provided by * The MITRE Corporation, through the browse application source * code. Many thanks to Nancy Markuson who provided BBN with the * software, and to Theron Tock, who wrote the software, and * Daniel Scholten, who revised it - (c) 1994 The MITRE * Corporation for those parts, and used with permission. */package com.bbn.openmap.layer.nitf;import java.io.File;import java.io.IOException;import java.io.FileNotFoundException;import com.bbn.openmap.io.*;/** * The NitfHeader reads the header information in a NITF (National * Imagery Transmission Format) and makes the section location * information available. */public class NitfHeader { public final static int NITF_IMAGE_DES_SIZE = 16; public final static int NITF_SYMBOLS_DES_SIZE = 10; public final static int NITF_LABELS_DES_SIZE = 7; public final static int NITF_TEXT_DES_SIZE = 9; public final static int NITF_DATAEXT_DES_SIZE = 13; public final static int NITF_RESEXT_DES_SIZE = 11; public final static int NITF_USERDEF_SIZE = 19; /** File type and Version */ public String FHDR;// [9] /** Compliance Level */ public String CLEVEL;// [2] /** System Type */ public String STYPE;// [3] /** Originating Station ID */ public String OSTAID;// [10] /** File Date and Time */ public String FDT;// [14] /** File Title */ public String FTITLE;//[80] /** File Security Classification */ public String FSCLAS;// [1] /** File Codewords */ public String FSCODE;// [40] /** File Control and Handling */ public String FSCTLH;// [40] /** File Releasing Instructions */ public String FSREL;// [40] /** File Classification Authority */ public String FSCAUT;// [20] /** File Security Control Number */ public String FSCTLN;// [20] /** File Security Downgrade */ public String FSDWNG;// [6] /** File Downgrading Event */ public String FSDEVT;// [40] /** Message Copy Number */ public String FSCOP;// [5] /** Message Number of Copies */ public String FSCPYS;// [5] /** Encryption */ public String ENCRYP;// [1] /** Originator's Name */ public String ONAME;// [27] /** Originator's Phone Number */ public String OPHONE;// [18] /** File Length */ public String FL;// [12] /** NITF File Header Length */ public String HL;// [6] public NitfHeaderAmounts nha; public NitfUserDef nud; public NitfHeader() { nha = new NitfHeaderAmounts(); nud = new NitfUserDef(); } static public class NitfHeaderAmounts { /** Number of Images */ public String NUMI;// [3] /** Number of Symbols */ public String NUMS;// [3] /** Number of Labels */ public String NUML;// [3] /** Number of Text Files */ public String NUMT;// [3] /** Number of Data Extensions */ public String NUMDES;// [3] /** Number of Reserved Extensions */ public String NUMRES;// [3] } static public class NitfImageDescription { public String LISH;// [6] public String LI;// [10] } static public class NitfSymbolsDescription { public String LSSH;// [4] public String LS;// [6] } static public class NitfLabelDescription { public String LLSH;// [4] public String LL;// [3] } static public class NitfTextDescription { public String LTSH;// [4] public String LT;// [5] } static public class NitfDataExtDescription { public String LDSH;// [4] public String LD;// [9] } static public class NitfResExtDescription { public String LRSH;// [4] public String LR;// [7] } static public class NitfUserDef { public String UDHDL;// [5] public String UDHOFL;// [3] public String RETAG;// [6] public String REL;// [5] } /** * Reads the header part of the file. Will seek automatically to * the beginning of the file. * * @param binFile BinaryFile, opened on the NITF file. */ public boolean read(BinaryFile binFile) { try { binFile.seek(0); FHDR = binFile.readFixedLengthString(9); if (!FHDR.startsWith("NITF")) return false; /* Not an NITF file */ CLEVEL = binFile.readFixedLengthString(2); STYPE = binFile.readFixedLengthString(4); OSTAID = binFile.readFixedLengthString(10); FDT = binFile.readFixedLengthString(14); FTITLE = binFile.readFixedLengthString(80); FSCLAS = binFile.readFixedLengthString(1); FSCODE = binFile.readFixedLengthString(40); FSCTLH = binFile.readFixedLengthString(40); FSREL = binFile.readFixedLengthString(40); FSCAUT = binFile.readFixedLengthString(20); FSCTLN = binFile.readFixedLengthString(20); FSDWNG = binFile.readFixedLengthString(6); if (FSDWNG.startsWith("999998")) FSDEVT = binFile.readFixedLengthString(40); FSCOP = binFile.readFixedLengthString(5); FSCPYS = binFile.readFixedLengthString(5); ENCRYP = binFile.readFixedLengthString(1); ONAME = binFile.readFixedLengthString(27); OPHONE = binFile.readFixedLengthString(18); FL = binFile.readFixedLengthString(12); HL = binFile.readFixedLengthString(6); nha = readSectionInfo(binFile); nud.UDHDL = binFile.readFixedLengthString(5);// [5] nud.UDHOFL = binFile.readFixedLengthString(3);// [3] nud.RETAG = binFile.readFixedLengthString(6);// [6] nud.REL = binFile.readFixedLengthString(5);// [5] } catch (IOException e) { System.err.println("NitfHeader: File IO Error while reading header information:"); System.err.println(e); return false; } catch (FormatException f) { System.err.println("NitfHeader: File IO Format error while reading header information:"); System.err.println(f); return false; } return true; } protected NitfHeaderAmounts readSectionInfo(BinaryFile binFile) { try { nha.NUMI = binFile.readFixedLengthString(3); binFile.seek(binFile.getFilePointer() + (Integer.parseInt(nha.NUMI) * NITF_IMAGE_DES_SIZE)); nha.NUMS = binFile.readFixedLengthString(3); binFile.seek(binFile.getFilePointer() + (Integer.parseInt(nha.NUMS) * NITF_SYMBOLS_DES_SIZE)); nha.NUML = binFile.readFixedLengthString(3); binFile.seek(binFile.getFilePointer() + (Integer.parseInt(nha.NUML) * NITF_LABELS_DES_SIZE)); nha.NUMT = binFile.readFixedLengthString(3); binFile.seek(binFile.getFilePointer() + (Integer.parseInt(nha.NUMT) * NITF_TEXT_DES_SIZE)); nha.NUMDES = binFile.readFixedLengthString(3); binFile.seek(binFile.getFilePointer() + (Integer.parseInt(nha.NUMDES) * NITF_DATAEXT_DES_SIZE)); nha.NUMRES = binFile.readFixedLengthString(3); } catch (IOException e) { System.err.println("NitfHeader: File IO Error while reading header information:"); System.err.println(e); return null; } catch (FormatException f) { System.err.println("NitfHeader: File IO Format error while reading header information:"); System.err.println(f); return null; } return nha; } public String toString() { StringBuffer s = new StringBuffer(); s.append("\n\nNITF Information about " + FTITLE + "\n"); s.append("-------------------\n"); s.append("File Type: " + FHDR + "\n"); s.append("Compliance Level: " + CLEVEL + "\n"); s.append("System Type: " + STYPE + "\n"); s.append("Originating Station: " + OSTAID + "\n"); s.append("File Date and Time: " + FDT + "\n"); s.append("Originator's Name: " + ONAME + "\n"); s.append("File Length: " + FL + "\n\n"); s.append(nha.NUMI + " image\n"); s.append(nha.NUMS + " symbol\n"); s.append(nha.NUML + " label\n"); s.append(nha.NUMT + " text\n"); s.append(nha.NUMDES + " dataext\n"); s.append(nha.NUMRES + " resext\n"); return s.toString(); } public final static void main(String[] args) { if (args.length != 1) { System.out.println("Usage: java NitfHeader <path to NITF file>"); return; } File file = new File(args[0]); BinaryFile binFile = null; try { binFile = new BinaryBufferedFile(file); // binFile = new BinaryFile(file); } catch (FileNotFoundException e) { System.err.println("NitfHeader: file " + args[0] + " not found"); System.exit(1); } catch (IOException ioe) { System.err.println("NitfHeader: File IO Error while handling NITF header:"); System.err.println(ioe); } NitfHeader header = new NitfHeader(); if (header.read(binFile)) { System.out.println(header); } else System.out.println("NitfHeader: NOT read sucessfully!"); }}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -