OSSIM - Open Source Software Image Map  Version 1.9.0 (20180803)
ossimTiffInfo.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: David Burken
8 //
9 // Description: TIFF Info object.
10 //
11 //----------------------------------------------------------------------------
12 // $Id$
13 
14 #ifndef ossimTiffInfo_HEADER
15 #define ossimTiffInfo_HEADER 1
16 
20 #include <ossim/base/ossimIosFwd.h>
21 #include <iosfwd>
22 #include <string>
23 #include <vector>
24 #include <memory>
25 
26 class ossimDpt;
27 class ossimEndian;
28 class ossimKeywordlist;
29 class ossimTieGptSet;
30 
37 {
38 public:
39 
40  enum WordType
41  {
42  TWO_OR_EIGHT = 0,
43  FOUR_OR_EIGHT = 1
44  };
45 
47  ossimTiffInfo();
48 
50  virtual ~ossimTiffInfo();
51 
59  virtual bool open(const ossimFilename& file);
60  virtual bool open( std::shared_ptr<ossim::istream>& str,
61  const std::string& connectionString );
62 
70  virtual std::ostream& print(std::ostream& out) const;
71 
83  virtual std::ostream& print(std::istream& inStr,
84  std::ostream& outStr) const;
85 
98  bool getImageGeometry(ossimKeywordlist& geomKwl,
99  ossim_uint32 entryIndex) const;
100 
118  bool getImageGeometry(std::istream& str,
119  ossimKeywordlist& geomKwl,
120  ossim_uint32 entryIndex) const;
121 
134  bool getImageGeometry(const ossimKeywordlist& gtiffKwl,
135  ossimKeywordlist& geomKwl,
136  ossim_uint32 entryIndex) const;
137 
161  void getImageGeometry(ossim_uint64 geoKeyLength,
162  ossim_uint16* geoKeyBlock,
163  ossim_uint64 geoDoubleLength,
164  ossim_float64* geoDoubleBlock,
165  ossim_uint64 geoAsciiLength,
166  ossim_int8* geoAsciiBlock,
167  ossimKeywordlist& geomKwl) const;
168 
189  std::ostream& printGeoKeys(std::ostream& out,
190  const std::string& prefix,
191  ossim_uint64 geoKeyLength,
192  ossim_uint16* geoKeyBlock,
193  ossim_uint64 geoDoubleLength,
194  ossim_float64* geoDoubleBlock,
195  ossim_uint64 geoAsciiLength,
196  ossim_int8* geoAsciiBlock) const;
197 
205  std::ostream& printRpcs(std::ostream& out,
206  const std::string& prefix,
207  ossim_uint16 type,
208  ossim_uint64 count,
209  ossim_uint8* valueArray) const;
210 
211 private:
212 
214  void readShort(ossim_uint16& s, std::istream& str) const;
215 
217  void readLong(ossim_uint32& l, std::istream& str) const;
218 
220  void readLongLong(ossim_uint64& l, std::istream& str) const;
221 
223  void parsePcsCode(int code);
224 
226  void parseProjGeoCode(int code);
227 
232  double convert2meters(double d) const;
233 
240  bool getOffset(std::streamoff& offset, std::istream& str,
241  ossim_uint16 version) const;
242 
249  bool getValue(ossim_uint64& val, std::istream& str, WordType type,
250  ossim_uint16 version) const;
251 
252  ossim_uint64 getArraySizeInBytes(ossim_uint64 length,
253  ossim_uint16 type) const;
254 
258  ossim_uint16 getTypeByteSize(ossim_uint16 type) const;
259 
263  void eatValue(std::istream& str, ossim_uint16 version) const;
264 
265  void swapBytes(ossim_uint8* v, ossim_uint16 type, ossim_uint64 count) const;
266 
268  template <class T> void getArrayValue(T& v,
269  ossim_uint8* array,
270  ossim_uint64 position) const;
271 
273  const std::string& prefix,
274  ossim_uint64 tagIdx,
275  ossim_uint16 tag,
276  ossim_uint16 type,
277  ossim_uint64 count,
278  ossim_uint64 arraySizeInBytes,
279  ossim_uint8* valueArray) const;
280 
281  std::ostream& printValue(std::ostream& out,
282  ossim_uint16 type,
283  ossim_uint8* valueArray) const;
284 
285  std::ostream& printArray(std::ostream& out,
286  ossim_uint16 type,
287  ossim_uint64 count,
288  ossim_uint8* valueArray) const;
289 
290  std::ostream& printGdalMetadata(std::ostream& out,
291  const std::string& prefix,
292  ossim_uint64 count,
293  ossim_uint8* valueArray) const;
294 
296  std::ostream& printXmpMetadata(std::ostream& out,
297  const std::string& prefix,
298  ossim_uint64 count,
299  ossim_uint8* valueArray) const;
300 
302  std::ostream& printModelType(std::ostream& out,
303  const std::string& prefix,
304  ossim_uint16 code) const;
305 
307  std::ostream& printRasterType(std::ostream& out,
308  const std::string& prefix,
309  ossim_uint16 code) const;
310 
312  std::ostream& printAngularUnits(std::ostream& out,
313  const std::string& prefix,
314  ossim_uint16 code) const;
315 
317  std::ostream& printCoordTrans(std::ostream& out,
318  const std::string& prefix,
319  ossim_uint16 code) const;
320 
322  std::ostream& printLinearUnits(std::ostream& out,
323  const std::string& prefix,
324  const std::string& key,
325  ossim_uint16 code) const;
326 
328  std::ostream& printOrientation(std::ostream& out,
329  const std::string& prefix,
330  ossim_uint16 code) const;
331 
333  void getDirPrefix(ossim_int32 dirIndex, std::string& prefix) const;
334 
343  bool getPixelScale(const ossimString& gtiffPrefix,
344  const ossimKeywordlist& gtiffKwl,
345  ossimDpt& scale) const;
346 
354  bool getTiePoint(const ossimString& gtiffPrefix,
355  const ossimKeywordlist& gtiffKwl,
356  std::vector<ossim_float64>& ties) const;
357 
365  bool getModelTransform(const ossimString& gtiffPrefix,
366  const ossimKeywordlist& gtiffKwl,
367  std::vector<ossim_float64>& xfrm) const;
368 
378  bool getFloats(const ossimString& gtiffPrefix,
379  const ossimString& key,
380  const ossimKeywordlist& gtiffKwl,
381  std::vector<ossim_float64>& floats) const;
382 
389  bool getFloats(const ossimString& line,
390  std::vector<ossim_float64>& floats) const;
391 
404  bool getDatumCode(const ossimString& gtiffPrefix,
405  const ossimKeywordlist& gtiffKwl,
406  ossimString& datumCode) const;
407 
415  bool getDatumCode(ossim_int32 code, ossimString& datumCode) const;
416 
428  bool getPcsCode(const ossimString& gtiffPrefix,
429  const ossimKeywordlist& gtiffKwl,
430  ossimString& pcsCode) const;
431 
440  bool getUnits(const ossimString& gtiffPrefix,
441  const ossimKeywordlist& gtiffKwl,
442  ossimString& units) const;
450  bool getLinearUnits(const ossimString& gtiffPrefix,
451  const ossimKeywordlist& gtiffKwl,
452  ossimString& linearUnits) const;
453 
461  bool getVerticalUnits(const ossimString& gtiffPrefix,
462  const ossimKeywordlist& gtiffKwl,
463  ossimString& verticalUnits) const;
464 
472  bool getAngularUnits(const ossimString& gtiffPrefix,
473  const ossimKeywordlist& gtiffKwl,
474  ossimString& units) const;
475 
476 
484  bool getPixelType(const ossimString& gtiffPrefix,
485  const ossimKeywordlist& gtiffKwl,
486  ossimString& pixelType) const;
487 
495  bool getModelType(const ossimString& gtiffPrefix,
496  const ossimKeywordlist& gtiffKwl,
497  ossimString& modeType) const;
498 
506  bool getOssimProjectionName(const ossimString& gtiffPrefix,
507  const ossimKeywordlist& gtiffKwl,
508  ossimString& ossimProj) const;
509 
516  ossim_uint32 getLines(const ossimString& gtiffPrefix,
517  const ossimKeywordlist& gtiffKwl) const;
518 
525  ossim_uint32 getSamples(const ossimString& gtiffPrefix,
526  const ossimKeywordlist& gtiffKwl) const;
527 
534  bool getStdParallelOne(const ossimString& gtiffPrefix,
535  const ossimKeywordlist& gtiffKwl,
536  ossimString& value) const;
537 
544  bool getStdParallelTwo(const ossimString& gtiffPrefix,
545  const ossimKeywordlist& gtiffKwl,
546  ossimString& value) const;
547 
554  bool getFalseEasting(const ossimString& gtiffPrefix,
555  const ossimKeywordlist& gtiffKwl,
556  ossimString& value) const;
557 
564  bool getFalseNorthing(const ossimString& gtiffPrefix,
565  const ossimKeywordlist& gtiffKwl,
566  ossimString& value) const;
567 
574  bool getFalseEastingNorthing(const ossimString& gtiffPrefix,
575  const ossimKeywordlist& gtiffKwl,
576  ossimDpt& eastingNorthing) const;
577 
584  bool getScaleFactor(const ossimString& gtiffPrefix,
585  const ossimKeywordlist& gtiffKwl,
586  ossim_float64& value) const;
587 
594  bool getOriginLat(const ossimString& gtiffPrefix,
595  const ossimKeywordlist& gtiffKwl,
596  ossim_float64& value) const;
597 
604  bool getCentralMeridian(const ossimString& gtiffPrefix,
605  const ossimKeywordlist& gtiffKwl,
606  ossim_float64& value) const;
607 
615  void getTieSets(const std::vector<ossim_float64>& ties,
616  ossim_uint32 width,
617  ossim_uint32 height,
618  ossimTieGptSet& tieSet) const;
619 
620 
628  bool hasOneBasedTiePoints(const std::vector<ossim_float64>& ties,
629  ossim_uint32 width,
630  ossim_uint32 height) const;
631 
632  std::string m_connectionString;
633  mutable std::shared_ptr<ossim::istream> m_inputStream;
634  //ossimFilename theFile;
636 };
637 
638 #endif /* End of "#ifndef ossimTiffInfo_HEADER" */
virtual bool open(const ossimFilename &file)
open method.
char ossim_int8
Previous DLL import export section.
Represents serializable keyword/value map.
std::string m_connectionString
std::shared_ptr< ossim::istream > m_inputStream
TIFF info class.
Definition: ossimTiffInfo.h:36
unsigned short ossim_uint16
double ossim_float64
unsigned long long ossim_uint64
unsigned int ossim_uint32
Info Base.
Definition: ossimInfoBase.h:32
ossimEndian * m_endian
std::basic_istream< char > istream
Base class for char input streams.
Definition: ossimIosFwd.h:20
storage class for a set of geographic tie points, between master and slave images ...
#define OSSIM_DLL
virtual std::ostream & print(std::ostream &out) const =0
Print method.
unsigned char ossim_uint8
std::basic_ostream< char > ostream
Base class for char output streams.
Definition: ossimIosFwd.h:23
int ossim_int32