OSSIM - Open Source Software Image Map  Version 1.9.0 (20180803)
ossimDtedDsi.h
Go to the documentation of this file.
1 //*******************************************************************
2 //
3 // License: MIT
4 //
5 // See LICENSE.txt file in the top level directory for more details.
6 //
7 // Author: Ken Melero
8 //
9 // Description: This class gives access to the Data Set Identification
10 // (DSI) of a DTED Level 1 file.
11 //
12 //********************************************************************
13 // $Id: ossimDtedDsi.h 16104 2009-12-17 18:09:59Z gpotts $
14 
15 #ifndef ossimDtedDsi_H
16 #define ossimDtedDsi_H
17 #include <iosfwd>
21 #include <ossim/base/ossimRefPtr.h>
22 #include <ossim/base/ossimIosFwd.h>
23 #include <memory>
24 
25 class ossimProperty;
26 
28 {
29 public:
30  ossimDtedDsi();
31  ossimDtedDsi(std::shared_ptr<ossim::istream>& str, ossim_int64 offset=0);
32 
33  enum
34  {
35  DSI_LENGTH = 648,
36  DSI_SECURITY_CODE = 4,
37  DSI_SECURITY_CONTROL = 5,
38  DSI_SECURITY_HANDLING = 7,
39  DSI_RESERVED_1 = 34,
40  DSI_DMA_SERIES = 60,
41  DSI_RESERVED_2 = 65,
42  DSI_RESERVED_3 = 80,
43  DSI_DATA_EDITION = 88,
44  DSI_MATCH_MERGE_VERSION = 90,
45  DSI_MAINTENANCE_DATE = 91,
46  DSI_MATCH_MERGE_DATE = 95,
47  DSI_MAINTENANCE_CODE = 99,
48  DSI_PRODUCER_CODE = 103,
49  DSI_RESERVED_4 = 111,
50  DSI_PRODUCT_SPEC_STOCK_NUMBER = 127,
51  DSI_PRODUCT_SPEC_NUMBER = 136,
52  DSI_PRODUCT_SPEC_DATE = 138,
53  DSI_VERTICAL_DATUM = 142,
54  DSI_HORIZ_DATUM = 145,
55  DSI_DIGITIZING_SYSTEM = 150,
56  DSI_COMPILATION_DATE = 160,
57  DSI_RESERVED_5 = 164,
58  DSI_LAT_ORIGIN = 186,
59  DSI_LON_ORIGIN = 195,
60  DSI_LAT_SW = 205,
61  DSI_LON_SW = 212,
62  DSI_LAT_NW = 220,
63  DSI_LON_NW = 227,
64  DSI_LAT_NE = 235,
65  DSI_LON_NE = 242,
66  DSI_LAT_SE = 250,
67  DSI_LON_SE = 257,
68  DSI_ORIENTATION = 265,
69  DSI_LAT_INTERVAL = 274,
70  DSI_LON_INTERVAL = 278,
71  DSI_NUM_LAT_LINES = 282,
72  DSI_NUM_LON_LINES = 286,
73  DSI_PARTIAL_CELL_INDICATOR = 290,
74  DSI_RESERVED = 292,
75  FIELD1_SIZE = 3,
76  FIELD2_SIZE = 1,
77  FIELD3_SIZE = 2,
78  FIELD4_SIZE = 27,
79  FIELD5_SIZE = 26,
80  FIELD6_SIZE = 5,
81  FIELD7_SIZE = 15,
82  FIELD8_SIZE = 8,
83  FIELD9_SIZE = 2,
84  FIELD10_SIZE = 1,
85  FIELD11_SIZE = 4,
86  FIELD12_SIZE = 4,
87  FIELD13_SIZE = 4,
88  FIELD14_SIZE = 8,
89  FIELD15_SIZE = 16,
90  FIELD16_SIZE = 9,
91  FIELD17_SIZE = 2,
92  FIELD18_SIZE = 4,
93  FIELD19_SIZE = 3,
94  FIELD20_SIZE = 5,
95  FIELD21_SIZE = 10,
96  FIELD22_SIZE = 4,
97  FIELD23_SIZE = 22,
98  FIELD24_SIZE = 9,
99  FIELD25_SIZE = 10,
100  FIELD26_SIZE = 7,
101  FIELD27_SIZE = 8,
102  FIELD28_SIZE = 7,
103  FIELD29_SIZE = 8,
104  FIELD30_SIZE = 7,
105  FIELD31_SIZE = 8,
106  FIELD32_SIZE = 7,
107  FIELD33_SIZE = 8,
108  FIELD34_SIZE = 9,
109  FIELD35_SIZE = 4,
110  FIELD36_SIZE = 4,
111  FIELD37_SIZE = 4,
112  FIELD38_SIZE = 4,
113  FIELD39_SIZE = 2,
114  FIELD40_SIZE = 101,
115  FIELD41_SIZE = 100,
116  FIELD42_SIZE = 156
117  };
118 
119  // The Recognition Sentinel signifies if the DSI record exists.
120  ossimString recognitionSentinel() const;
121 
122  ossimString securityCode() const;
123  ossimString productLevel() const;
124  ossimString edition() const;
125  ossimString matchMergeVersion() const;
126  ossimString maintanenceDate() const;
127  ossimString matchMergeDate() const;
128  ossimString maintenanceCode() const;
129  ossimString producerCode() const;
130  ossimString productStockSpecNumber() const;
131  ossimString productSpecNumber() const;
132  ossimString productSpecDate() const;
133  ossimString verticalDatum() const;
134  ossimString horizontalDatum() const;
135  ossimString compilationDate() const;
136  ossimString latOrigin() const;
137  ossimString lonOrigin() const;
138  ossimString latSW() const;
139  ossimString lonSW() const;
140  ossimString latNW() const;
141  ossimString lonNW() const;
142  ossimString latNE() const;
143  ossimString lonNE() const;
144  ossimString latSE() const;
145  ossimString lonSE() const;
146 
147  ossimString orientation() const;
148  ossimString latInterval() const;
149  ossimString lonInterval() const;
150  ossim_int32 numLatPoints() const;
151  ossim_int32 numLonLines() const;
152  ossim_int32 cellIndicator() const;
153  ossim_int32 startOffset() const;
154  ossim_int32 stopOffset() const;
155 
157  const ossimDtedDsi& dsi);
158 
169  const std::string& prefix) const;
170 
171  void parse(std::istream& in);
172 
179  ossimRefPtr<ossimProperty> getProperty(const ossimString& name)const;
180 
185  void getPropertyNames(std::vector<ossimString>& propertyNames)const;
186 
187 private:
188  // Do not allow...
189  ossimDtedDsi(const ossimDtedDsi& source);
190  const ossimDtedDsi& operator=(const ossimDtedDsi& rhs);
191 
192 
193  char theRecSen[FIELD1_SIZE+1];
194  char theSecurityCode[FIELD2_SIZE+1];
195  char theField3[FIELD3_SIZE+1];
196  char theField4[FIELD4_SIZE+1];
197  char theProductLevel[FIELD6_SIZE+1];
198  char theField7[FIELD7_SIZE+1];
199  char theField8[FIELD8_SIZE+1];
200  char theEdition[FIELD9_SIZE+1];
201  char theMatchMergeVersion[FIELD10_SIZE+1];
202  char theMaintenanceDate[FIELD11_SIZE+1];
203  char theMatchMergeDate[FIELD12_SIZE+1];
204  char theMaintenanceCode[FIELD13_SIZE+1];
205  char theProducerCode[FIELD14_SIZE+1];
206  char theField15[FIELD15_SIZE+1];
207  char theProductStockSpecNumber[FIELD16_SIZE+1];
208  char theProductSpecNumber[FIELD17_SIZE+1];
209  char theProductSpecDate[FIELD18_SIZE+1];
210  char theVerticalDatum[FIELD19_SIZE+1];
211  char theHorizontalDatum[FIELD20_SIZE+1];
212  char theField21[FIELD21_SIZE+1];
213  char theCompilationDate[FIELD22_SIZE+1];
214  char theField23[FIELD23_SIZE+1];
215  char theLatOrigin[FIELD24_SIZE+1];
216  char theLonOrigin[FIELD25_SIZE+1];
217  char theLatSW[FIELD26_SIZE+1];
218  char theLonSW[FIELD27_SIZE+1];
219  char theLatNW[FIELD28_SIZE+1];
220  char theLonNW[FIELD29_SIZE+1];
221  char theLatNE[FIELD30_SIZE+1];
222  char theLonNE[FIELD31_SIZE+1];
223  char theLatSE[FIELD32_SIZE+1];
224  char theLonSE[FIELD33_SIZE+1];
225  char theOrientation[FIELD34_SIZE+1];
226  char theLatInterval[FIELD35_SIZE+1];
227  char theLonInterval[FIELD36_SIZE+1];
228  char theNumLatPoints[FIELD37_SIZE+1];
229  char theNumLonLines[FIELD38_SIZE+1];
230  char theCellIndicator[FIELD39_SIZE+1];
231  char theField40[FIELD40_SIZE+1];
232  char theField41[FIELD41_SIZE+1];
233  char theField42[FIELD42_SIZE+1];
234 
237 };
238 
239 #endif
ossim_int32 theStopOffset
Definition: ossimDtedDsi.h:236
virtual std::ostream & print(std::ostream &out) const
Outputs theErrorStatus as an ossimErrorCode and an ossimString.
std::basic_istream< char > istream
Base class for char input streams.
Definition: ossimIosFwd.h:20
friend OSSIMDLLEXPORT std::ostream & operator<<(std::ostream &out, const ossimErrorStatusInterface &obj)
#define OSSIM_DLL
long long ossim_int64
ossim_int32 theStartOffset
Definition: ossimDtedDsi.h:235
std::basic_ostream< char > ostream
Base class for char output streams.
Definition: ossimIosFwd.h:23
int ossim_int32