OSSIM - Open Source Software Image Map  Version 1.9.0 (20180803)
ossimTiledElevationDatabase.cpp
Go to the documentation of this file.
1 //----------------------------------------------------------------------------
2 //
3 // File: ossimTiledElevationDatabase.cpp
4 //
5 // License: LGPL
6 //
7 // See LICENSE.txt file in the top level directory for more details.
8 //
9 // Author: David Burken
10 //
11 // Description: See class desciption in header file.
12 //
13 //----------------------------------------------------------------------------
14 // $Id$
15 
19 #include <ossim/base/ossimDpt.h>
22 #include <ossim/base/ossimString.h>
23 #include <ossim/base/ossimTrace.h>
32 #include <cmath>
33 
34 static ossimTrace traceDebug(ossimString("ossimTiledElevationDatabase:debug"));
35 
36 RTTI_DEF1(ossimTiledElevationDatabase, "ossimTiledElevationDatabase", ossimElevationDatabase);
37 
39  :
42  m_entries(0),
43  m_grid(0),
44  m_referenceProj(0),
45  m_requestedRect(),
46  m_entryListRect(),
47  m_fileWalker(0)
48 {
51 
52  //---
53  // Use the ossimElevSource::theGroundRect to hold the mapped rect expanded to even post
54  // boundaries.
55  //---
57 }
58 
59 // Protected destructor as this is derived from ossimRefenced.
61 {
62  m_referenceProj = 0;
63  m_entries.clear();
64  if ( m_grid )
65  {
66  delete m_grid;
67  m_grid = 0;
68  }
69  if ( m_fileWalker )
70  {
71  delete m_fileWalker;
72  m_fileWalker = 0;
73  }
74 }
75 
76 bool ossimTiledElevationDatabase::open(const ossimString& connectionString)
77 {
78  static const char M[] = "ossimTiledElevationDatabase::open";
79  if(traceDebug())
80  {
82  << M << " entered...\n"
83  << "\nConnection string: " << connectionString << "\n";
84  }
85 
86  bool result = false;
87 
88  close();
89 
90  if ( connectionString.size() )
91  {
92  m_connectionString = connectionString.c_str();
93  result = true;
94  }
95 
96  if ( m_entries.size() ) result = true;
97 
98  if(traceDebug())
99  {
100  ossimNotify(ossimNotifyLevel_DEBUG) << M << " result=" << (result?"true\n":"false\n");
101  }
102 
103  return result;
104 }
105 
107 {
111  m_referenceProj = 0;
112  m_entries.clear();
113  if ( m_grid )
114  {
115  delete m_grid;
116  m_grid = 0;
117  }
118  m_meanSpacing = 0.0;
119  m_geoid = 0;
121 }
122 
124 {
125  static const char M[] = "ossimTiledElevationDatabase::mapRegion";
126  if(traceDebug())
127  {
129  << M << " entered...\n" << "region: " << region << "\n";
130  }
131 
132  if ( m_connectionString.size() )
133  {
134  // Wrap in try catch block as excptions can be thrown under the hood.
135  try
136  {
137  m_requestedRect = region;
138 
140  if ( f.exists() )
141  {
142  if ( !m_fileWalker )
143  {
146 
148 
149  // Must set this so we can stop recursion on directory based images.
151 
152  // This links the file walker back to our "processFile" method.
154  }
155 
156  // Walk the directory:
157  m_fileWalker->walk(f);
158 
159  mapRegion();
160  }
161  else
162  {
164  << M << " ERROR: Connection string does not exists: "
165  << m_connectionString.c_str() << endl;
166  }
167  }
168  catch (const ossimException& e)
169  {
171  << "Caught exception: " << e.what() << endl;
172  m_entries. clear();
173  }
174 
175  // cleanup:
176  if ( m_fileWalker )
177  {
178  delete m_fileWalker;
179  m_fileWalker = 0;
180  }
181 }
182 
183  if(traceDebug())
184  {
185  ossimNotify(ossimNotifyLevel_DEBUG) << M << " exited...\n";
186  }
187 }
188 
190 {
191  static const char M[] = "ossimTiledElevationDatabase::processFile";
192  if(traceDebug())
193  {
195  << M << " entered...\n" << "file: " << file << "\n";
196  }
197 
199  if ( sic->open(file, false) ) // False for do not open overviews.
200  {
201  if ( isDirectoryBasedImage( sic->getImageHandler() ) )
202  {
203  // Tell the walker not to recurse this directory.
205  }
206 
208  if ( ih.valid() && (m_requestedRect.isLonLatNan() == false) )
209  {
211  if ( geom.valid() == false )
212  {
213  std::string errMsg = M;
214  errMsg += " ERROR:\nNo image geometry for image: ";
215  errMsg += ih->getFilename().string();
216  throw ossimException(errMsg);
217  }
218 
220  if ( proj.valid() == false )
221  {
222  std::string errMsg = M;
223  errMsg += " ERROR:\nNo image projection for image: ";
224  errMsg += ih->getFilename().string();
225  throw ossimException(errMsg);
226  }
227 
228  // Get the bounding rect:
229  ossimGrect boundingRect;
230  getBoundingRect(geom, boundingRect);
231 
232  if ( boundingRect.isLonLatNan() )
233  {
234  std::string errMsg = M;
235  errMsg += " ERROR:\nBounding rect has nans for image: ";
236  errMsg += ih->getFilename().string();
237  throw ossimException(errMsg);
238  }
239 
240  if ( boundingRect.intersects(m_requestedRect) )
241  {
242  bool addEntryToList = false;
243 
244  if ( m_entries.size() == 0 ) // First time through.
245  {
246  addEntryToList = true;
247  m_entryListRect = boundingRect;
248  m_referenceProj = proj;
249  m_meanSpacing = (geom->getMetersPerPixel().x + geom->getMetersPerPixel().y) / 2.0;
250  }
251  else
252  {
253  addEntryToList = isCompatible( ih.get(), geom.get(), proj.get() );
254  if ( addEntryToList )
255  {
256  // Expand the rectangle.
257  m_entryListRect.combine(boundingRect);
258  }
259  }
260 
261  if ( addEntryToList )
262  {
263  // If we're keeping it add a cache to the chain.
264  sic->addCache();
265 
266  //---
267  // Create the entry and give to addEntry which checks for duplicates in case
268  // mapRegion was called consecutively.
269  //---
270  ossimTiledElevationEntry entry(boundingRect, sic);
271  addEntry(entry);
272 
273  // Once the requested rect is filled abort the file walk.
275  {
276  m_fileWalker->setAbortFlag(true);
277  }
278  }
279  }
280  }
281  else
282  {
283  std::string errMsg = M;
284  errMsg += " ERROR:\nNo image geometry for image: ";
285  errMsg += ih->getFilename().string();
286  throw ossimException(errMsg);
287  }
288  }
289 
290  if(traceDebug())
291  {
292  // Since ossimFileWalker is threaded output the file so we know which job exited.
293  ossimNotify(ossimNotifyLevel_DEBUG) << M << "\nfile: " << file << "\nexited...\n";
294  }
295 }
296 
298 {
299  bool result = true;
300  std::vector<ossimTiledElevationEntry>::const_iterator i = m_entries.begin();
301  while ( i != m_entries.end() )
302  {
303  if ( (*i).m_sic->getFilename() == entry.m_sic->getFilename() )
304  {
305  result = false; // In list already.
306  break;
307  }
308  ++i;
309  }
310  if ( result )
311  {
312  m_entries.push_back(entry); // Add to list.
313  }
314 }
315 
317 {
318  if ( m_entries.size() )
319  {
320  ossimRefPtr<ossimImageHandler> ih = m_entries[0].m_sic->getImageHandler();
321  if ( ih.valid() )
322  {
324  if ( geom.valid() )
325  {
326  m_referenceProj = geom->getProjection();
327  }
328  // else throw exception ??? (drb)
329  }
330  }
331 }
332 
334 {
335  if ( m_grid )
336  {
337  return (*m_grid)(gpt.lon, gpt.lat);
338  }
339  return ossim::nan();
340 }
341 
343 {
344  double h = getHeightAboveMSL(gpt);
345  if(h != ossim::nan())
346  {
347  h += getOffsetFromEllipsoid(gpt);
348  }
349  return h;
350 }
351 
353 {
354  if ( theGroundRect.isLonLatNan() == false)
355  {
356  return theGroundRect.pointWithin(gpt);
357  }
358  return false;
359 }
360 
361 bool ossimTiledElevationDatabase::loadState(const ossimKeywordlist& kwl, const char* prefix)
362 {
363  static const char M[] = "ossimTiledElevationDatabase::loadState";
364  if(traceDebug())
365  {
367  << M << " entered..." << "\nkwl:\n" << kwl << "\n";
368  }
369  bool result = false;
370  const char* lookup = kwl.find(prefix, "type");
371  if ( lookup )
372  {
373  std::string type = lookup;
374  if ( ( type == "image_directory" ) || ( type == "ossimTiledElevationDatabase" ) )
375  {
376  result = ossimElevationDatabase::loadState(kwl, prefix);
377  }
378  }
379 
380  if(traceDebug())
381  {
382  ossimNotify(ossimNotifyLevel_DEBUG) << M << " result=" << (result?"true\n":"false\n");
383  }
384 
385  return result;
386 }
387 
388 bool ossimTiledElevationDatabase::saveState(ossimKeywordlist& kwl, const char* prefix) const
389 {
390  return ossimElevationDatabase::saveState(kwl, prefix);
391 }
392 
393 // Private method:
395 {
396  bool result = false;
397  if ( ih.valid() )
398  {
399  // Get the image handler name.
400  ossimString imageHandlerName = ih->getClassName();
401  if ( (imageHandlerName == "ossimAdrgTileSource") ||
402  (imageHandlerName == "ossimCibCadrgTileSource") )
403  {
404  result = true;
405  }
406  }
407  return result;
408 }
409 
411  ossimImageGeometry* geom,
412  ossimProjection* proj) const
413 {
414  //---
415  // Check for match of the following against the first entry:
416  // bands
417  // projection
418  // scalar type
419  // scale
420  //---
421  bool result = false;
422 
423  if ( m_entries.size() && ih && geom && proj )
424  {
425  ossimRefPtr<const ossimImageHandler> entry0_ih = m_entries[0].m_sic->getImageHandler();
426 
427  // Check scalar type and bands.
428  if ( (entry0_ih->getOutputScalarType() == ih->getOutputScalarType()) &&
429  (entry0_ih->getNumberOfOutputBands() == ih->getNumberOfOutputBands()) )
430  {
431  // Check the scale.
433  dynamic_cast<const ossimMapProjection*>(proj);
434  if ( mapProj.valid() )
435  {
437  dynamic_cast<const ossimMapProjection*>(m_referenceProj.get());
438 
439  if ( mapProj->isGeographic() )
440  {
441  if ( refMapProj->getDecimalDegreesPerPixel() ==
442  mapProj->getDecimalDegreesPerPixel() )
443  {
444  result = true;
445  }
446  else if ( refMapProj->getMetersPerPixel() ==
447  mapProj->getMetersPerPixel() )
448  {
449  result = true;
450  }
451  }
452  }
453  else // sensor model
454  {
456  {
457  result = true;
458  }
459  }
460  }
461  }
462 
463  return result;
464 }
465 
467  ossimRefPtr<ossimImageGeometry> geom, ossimGrect& boundingRect) const
468 {
469  if ( geom.valid() )
470  {
471  std::vector<ossimGpt> corner(4);
472  if ( geom->getCornerGpts(corner[0], corner[1], corner[2], corner[3]) )
473  {
474  ossimGpt ulGpt(corner[0]);
475  ossimGpt lrGpt(corner[0]);
476  for ( ossim_uint32 i = 1; i < 4; ++i )
477  {
478  if ( corner[i].lon < ulGpt.lon ) ulGpt.lon = corner[i].lon;
479  if ( corner[i].lat > ulGpt.lat ) ulGpt.lat = corner[i].lat;
480  if ( corner[i].lon > lrGpt.lon ) lrGpt.lon = corner[i].lon;
481  if ( corner[i].lat < lrGpt.lat ) lrGpt.lat = corner[i].lat;
482  }
483  boundingRect = ossimGrect(ulGpt, lrGpt);
484  }
485  else
486  {
487  boundingRect.makeNan();
488  }
489  }
490 }
492 {
493  static const char M[] = "ossimTiledElevationDatabase::mapRegion";
494 
495  if ( m_entries.size() && ( m_requestedRect.isLonLatNan() == false ) )
496  {
498  std::vector<ossimTiledElevationEntry>::iterator i = m_entries.begin();
499  while ( i != m_entries.end() )
500  {
501  mosaic->connectMyInputTo( (*i).m_sic.get() );
502  ++i;
503  }
504 
505  // Compute the requested rectangle in view space.
507  if ( geom.valid() )
508  {
509  ossimDpt ulDpt;
510  ossimDpt lrDpt;
511  geom->worldToLocal(m_requestedRect.ul(), ulDpt);
512  geom->worldToLocal(m_requestedRect.lr(), lrDpt);
513 
514  // Expand out to fall on even view coordinates.
515  ulDpt.x = std::floor(ulDpt.x);
516  ulDpt.y = std::floor(ulDpt.y);
517  lrDpt.x = std::ceil(lrDpt.x);
518  lrDpt.y = std::floor(lrDpt.y);
519 
520  // Get new(expanded) corners in ground space.
521  ossimGpt ulGpt;
522  ossimGpt lrGpt;
523  geom->localToWorld(ulDpt, ulGpt);
524  geom->localToWorld(lrDpt, lrGpt);
525  theGroundRect = ossimGrect(ulGpt, lrGpt);
526 
527  // Expanded requested rect in view space.
528  ossimIpt ulIpt = ulDpt;
529  ossimIpt lrIpt = lrDpt;
530  const ossimIrect VIEW_RECT(ulIpt, lrIpt);
531 
532  // Get the data.
533  ossimRefPtr<ossimImageData> data = mosaic->getTile(VIEW_RECT, 0);
534  if ( data.valid() )
535  {
536  // Initialize the grid:
537  const ossimIpt SIZE( data->getWidth(), data->getHeight() );
538  const ossimDpt ORIGIN(ulGpt.lon, lrGpt.lat); // SouthWest corner
539  const ossimDpt SPACING( (lrGpt.lon-ulGpt.lon)/(SIZE.x-1),
540  (ulGpt.lat-lrGpt.lat)/(SIZE.y-1) );
541  if ( !m_grid ) m_grid = new ossimDblGrid();
542  m_grid->initialize(SIZE, ORIGIN, SPACING, ossim::nan());
543 
544  if ( traceDebug() )
545  {
547  << M
548  << "\nrequested view rect: " << VIEW_RECT
549  << "\nexpanded ground rect: " << theGroundRect
550  << "\norigin: " << ORIGIN
551  << "\nsize: " << SIZE
552  << "\nspacing: " << SPACING << std::endl;
553  }
554 
555  // Fill the grid:
556  switch( data->getScalarType() )
557  {
558  case OSSIM_SINT16:
559  {
560  fillGrid(ossim_sint16(0), data);
561  break;
562  }
563  case OSSIM_SINT32:
564  {
565  fillGrid(ossim_sint32(0), data);
566  break;
567  }
568  case OSSIM_FLOAT32:
569  {
570  fillGrid(ossim_float32(0), data);
571  break;
572  }
573  case OSSIM_FLOAT64:
574  {
575  fillGrid(ossim_float64(0), data);
576  break;
577  }
578  case OSSIM_UINT8:
579  case OSSIM_SINT8:
580  case OSSIM_USHORT11:
581  case OSSIM_USHORT12:
582  case OSSIM_USHORT13:
583  case OSSIM_USHORT14:
584  case OSSIM_USHORT15:
585  case OSSIM_UINT16:
586  case OSSIM_UINT32:
590  default:
591  {
592  std::string errMsg = M;
593  errMsg += " ERROR:\nUnhandled scalar type: ";
594  errMsg += data->getScalarTypeAsString().string();
595  throw ossimException(errMsg);
596  }
597  }
598 
599  } // if ( data.valid() )
600 
601  } // if ( geom.valid() )
602 
603  } // if ( m_entries.size() && ...
604 }
605 
606 template <class T> void ossimTiledElevationDatabase::fillGrid(T /* dummyTemplate */,
608 {
609  if ( data.valid() )
610  {
611  // Copy to grid reversing the lines as the ossimDblGrid's origin is the SW corner.
612  const ossim_float64 NP = data->getNullPix(0);
613  const T* buf = static_cast<T*>(data->getBuf(0));
614  if ( buf )
615  {
616  const ossimIpt SIZE( data->getWidth(), data->getHeight() );
617  ossim_int32 bufIdx = (SIZE.y-1) * data->getWidth();
618  ossim_int32 grdY = 0;
619  for (ossim_int32 y = SIZE.y-1; y >= 0; --y)
620  {
621  for (ossim_int32 x = 0; x < SIZE.x; ++ x)
622  {
623  ossim_float64 v = static_cast<ossim_float64>(buf[bufIdx+x]);
624  m_grid->setNode(x, grdY, (v!=NP?v:ossim::nan()) );
625  }
626  bufIdx -= data->getWidth();
627  ++grdY;
628  }
629  }
630  }
631 }
632 
633 // Hidden from use...
635  const ossimTiledElevationDatabase& /* copy_this */)
636 {
637 }
638 
639 // Private container class:
641  : m_rect(),
642  m_sic(0)
643 {}
644 
647  : m_rect(rect),
648  m_sic(sic)
649 {}
650 
652 {
653  ossimKeywordlist kwl;
654  saveState(kwl,0);
655  out << "\nossimTiledElevationDatabase @ "<< (ossim_uint64) this << "\n"
656  << kwl <<ends;
657  return out;
658 }
659 
16 bit unsigned integer (15 bits used)
8 bit signed integer
void clear()
Erases the entire container.
Definition: ossimString.h:432
virtual ossim_uint32 getWidth() const
ossim_uint32 x
virtual const ossimDpt & getDecimalDegreesPerPixel() const
Returns decimal degrees per pixel as an ossimDpt with "x" representing longitude and "y" representing...
ossimTiledElevationDatabase()
default constructor
64 bit floating point
void setFileProcessor(ossimFileProcessorInterface *fpi)
Sets ossimFileProcessorInterfacecallback method to process files.
16 bit unsigned integer
void setRecurseFlag(bool flag)
Sets recurse flag.
Represents serializable keyword/value map.
virtual ~ossimTiledElevationDatabase()
Protected destructor as this is derived from ossimRefenced.
ossimRefPtr< const ossimImageHandler > getImageHandler() const
virtual ossim_uint32 getNumberOfOutputBands() const
Returns the number of bands in a tile returned from this TileSource.
ossim_uint32 y
bool valid() const
Definition: ossimRefPtr.h:75
ossimRefPtr< ossimProjection > m_referenceProj
Projection of the first entry.
const char * find(const char *key) const
void makeNan()
Definition: ossimGrect.h:284
float ossim_float32
double nan()
Method to return ieee floating point double precision NAN.
Definition: ossimCommon.h:135
virtual bool loadState(const ossimKeywordlist &kwl, const char *prefix=0)
double y
Definition: ossimDpt.h:165
ossimFilename getFilename() const
void addEntry(const ossimTiledElevationEntry &entry)
adds entry to the list checking for duplicates.
virtual bool isGeographic() const
16 bit signed integer
void initialize(const ossimIpt &size, const ossimDpt &origin, const ossimDpt &spacing, double null_value=OSSIM_DEFAULT_NULL_PIX_DOUBLE)
virtual ossim_uint32 getHeight() const
16 bit unsigned integer (14 bits used)
virtual ossimString getClassName() const
Definition: ossimObject.cpp:64
16 bit unsigned integer (13 bits used)
bool getCornerGpts(ossimGpt &ul, ossimGpt &ur, ossimGpt &lr, ossimGpt &ll) const
Assigns the ossimGpts with the ground coordinates of the four corresponding image corner points...
virtual ossimRefPtr< ossimImageData > getTile(const ossimIrect &origin, ossim_uint32 resLevel=0)
Elevation source used for working with generic images opened by an ossimImageHandler.
32 bit floating point
Utility class to walk through directories and get a list of files to process.
32 bit unsigned integer
virtual void processFile(const ossimFilename &file)
ProcessFile method.
bool completely_within(const ossimGrect &rect) const
Definition: ossimGrect.cpp:218
void fillGrid(T dummyTemplate, ossimRefPtr< ossimImageData > data)
Templated fill grid method.
virtual ossimRefPtr< ossimImageGeometry > getImageGeometry()
Returns the geometry associated with the full mosaic.
Single image chain class.
OSSIM_DLL ossim_uint32 getNumberOfThreads()
Get the number threads to use from ossimPreferences or ossim::Thread.
double ossim_float64
virtual double getHeightAboveEllipsoid(const ossimGpt &)
Get height above ellipsoid for point.
bool isCompatible(ossimImageHandler *ih, ossimImageGeometry *geom, ossimProjection *proj) const
Check for match of the following against the first entry of: bands, projection, scalar type and scale...
bool pointWithin(const ossimGpt &gpt, bool considerHgt=false) const
METHOD: pointWithin(ossimGpt)
Definition: ossimGrect.h:232
ossimGrect theGroundRect
virtual std::ostream & print(std::ostream &out) const
Outputs theErrorStatus as an ossimErrorCode and an ossimString.
bool exists() const
ossim_float64 lon
Definition: ossimGpt.h:266
virtual ossimRefPtr< ossimImageGeometry > getImageGeometry()
Returns the image geometry object associated with this tile source or NULL if non defined...
virtual const ossimFilename & getFilename() const
Returns the filename.
bool localToWorld(const ossimDpt &local_pt, ossimGpt &world_pt) const
Exposes the 3D projection from image to world coordinates.
signed short ossim_sint16
virtual const char * what() const
Returns the error message.
ossimDblGrid * m_grid
Hold region of elevation.
virtual bool pointHasCoverage(const ossimGpt &gpt) const
Satisfies pure virtual ossimElevSource::pointHasCoverage.
ossimRefPtr< ossimGeoid > m_geoid
std::string::size_type size() const
Definition: ossimString.h:405
32 bit signed integer
virtual ossimDpt getMetersPerPixel() const =0
unsigned long long ossim_uint64
unsigned int ossim_uint32
virtual const ossim_float64 * getNullPix() const
32 bit normalized floating point
ossimDpt getMetersPerPixel() const
Returns the GSD associated with this image in the active projection.
void setNumberOfThreads(ossim_uint32 nThreads)
Sets the max number of threads(jobs) to run at one time.
void mapRegion()
Loads m_requestedRect into m_grid from m_entries.
void getBoundingRect(ossimRefPtr< ossimImageGeometry > geom, ossimGrect &boundingRect) const
Initialize bounding rectangle from image handler.
virtual void close()
close method.
signed int ossim_sint32
virtual ossimString getScalarTypeAsString() const
const ossimGpt & ul() const
Definition: ossimGrect.h:252
bool isDirectoryBasedImage(ossimRefPtr< ossimImageHandler > ih)
RTTI_DEF1(ossimTiledElevationDatabase, "ossimTiledElevationDatabase", ossimElevationDatabase)
virtual ossim_int32 connectMyInputTo(ossimConnectableObject *inputObject, bool makeOutputConnection=true, bool createEventFlag=true)
Will try to connect this objects input to the passed in object.
ossimRefPtr< ossimCacheTileSource > addCache()
Adds a new cache to the current end of the chain.
void initializeDefaultFilterList()
Initializes the filter list with a default set of filtered out file names.
Container class that holds both 2D transform and 3D projection information for an image Only one inst...
void initializeReferenceProjection()
Initializes m_referenceProj from the first entry.
virtual ossimScalarType getScalarType() const
64 bit normalized floating point
const ossimProjection * getProjection() const
Access methods for projection (may be NULL pointer).
16 bit unsigned integer (11 bits used)
ossimGrect combine(const ossimGrect &rect) const
Definition: ossimGrect.h:213
virtual ossimScalarType getOutputScalarType() const
This will be used to query the output pixel type of the tile source.
This class defines an abstract Handler which all image handlers(loaders) should derive from...
virtual double getOffsetFromEllipsoid(const ossimGpt &gpt)
virtual double getHeightAboveMSL(const ossimGpt &gpt)
Get height above MSL for point.
virtual bool saveState(ossimKeywordlist &kwl, const char *prefix=0) const
virtual const void * getBuf() const
double x
Definition: ossimDpt.h:164
virtual bool loadState(const ossimKeywordlist &kwl, const char *prefix=0)
Initialize from keyword list.
bool open(const ossimFilename &file, bool openOverview=true)
open method that takes an image file.
const char * c_str() const
Returns a pointer to a null-terminated array of characters representing the string&#39;s contents...
Definition: ossimString.h:396
bool worldToLocal(const ossimGpt &world_pt, ossimDpt &local_pt) const
Exposes the 3D world-to-local image coordinate reverse projection.
ossim_float64 lat
Definition: ossimGpt.h:265
8 bit unsigned integer
virtual bool open(const ossimString &connectionString)
Open a connection to a database.
virtual bool saveState(ossimKeywordlist &kwl, const char *prefix=0) const
Save the state to a keyword list.
ossimRefPtr< ossimSingleImageChain > m_sic
Hold pointer to single image chain.
void setWaitOnDirFlag(bool flag)
Sets waitOnDir flag.
bool isLonLatNan() const
Definition: ossimGrect.h:290
virtual ossimDpt getMetersPerPixel() const
bool intersects(const ossimGrect &rect) const
Definition: ossimGrect.cpp:266
const ossimGpt & lr() const
Definition: ossimGrect.h:269
std::vector< ossimTiledElevationEntry > m_entries
void walk(const std::vector< ossimFilename > &files)
Takes an array of files.
void setNode(const ossimIpt &p, const double &value)
Definition: ossimDblGrid.h:107
OSSIMDLLEXPORT std::ostream & ossimNotify(ossimNotifyLevel level=ossimNotifyLevel_WARN)
std::basic_ostream< char > ostream
Base class for char output streams.
Definition: ossimIosFwd.h:23
int ossim_int32
const std::string & string() const
Definition: ossimString.h:414
void setAbortFlag(bool flag)
If set to true this stops files walking (aborts).
16 bit unsigned integer (12 bits used)