OSSIM - Open Source Software Image Map  Version 1.9.0 (20180803)
Classes | Public Member Functions | Static Public Attributes | Protected Member Functions | Protected Attributes | List of all members
ossimHlzTool Class Reference

#include <ossimHlzTool.h>

Inheritance diagram for ossimHlzTool:
ossimChipProcTool ossimTool ossimProcessInterface ossimListenerManager ossimObject ossim::JsonInterface ossimReferenced

Classes

class  LsFitPatchProcessorJob
 
class  MaskSource
 
class  NormPatchProcessorJob
 
class  PatchProcessorJob
 

Public Member Functions

 ossimHlzTool ()
 
 ~ossimHlzTool ()
 
virtual void setUsage (ossimArgumentParser &ap)
 Initializes the aurgument parser with expected parameters and options. More...
 
virtual bool initialize (ossimArgumentParser &ap)
 Initial method to be ran prior to execute. More...
 
virtual void initialize (const ossimKeywordlist &kwl)
 This method is responsible for completely setting up the full processing chain according to the specifications given in the kwl passed in. More...
 
virtual bool execute ()
 Performs the actual product write. More...
 
virtual ossimRefPtr< ossimImageDatagetChip (const ossimIrect &img_rect)
 The meat and potatos of this class. More...
 
virtual ossimString getClassName () const
 
- Public Member Functions inherited from ossimChipProcTool
 ossimChipProcTool ()
 default constructor More...
 
virtual ~ossimChipProcTool ()
 virtual destructor More...
 
virtual void clear ()
 Disconnects and clears the dem and image layers. More...
 
virtual void abort ()
 
virtual bool isChipProcessor () const
 Overrides base class implementation to indicate this class supports getChip() calls. More...
 
virtual ossimListenerManagergetManager ()
 
virtual ossimObjectgetObject ()
 
virtual const ossimObjectgetObject () const
 
virtual ossimRefPtr< ossimImageDatagetChip (const ossimGrect &gnd_rect)
 
ossimRefPtr< ossimImageDatagetChip (const ossimDrect &map_bounding_rect, const ossimDpt &gsd)
 
ossimRefPtr< ossimImageDatagetChip ()
 Get chip method that assumes pre-initialized state. More...
 
const ossimFilenamegetProductFilename () const
 
- Public Member Functions inherited from ossimTool
 ossimTool ()
 
virtual ~ossimTool ()
 
virtual void loadJSON (const Json::Value &json_request)
 Reads processing params from JSON object provided. More...
 
virtual void saveJSON (Json::Value &json) const
 Fetch product as JSON object when applicable Always returns true since using exception on error. More...
 
virtual const std::string & getResponse () const
 Fetch product as string (typically JSON) when applicable, otherwise passes back empty string. More...
 
virtual void getKwlTemplate (ossimKeywordlist &kwl)
 Assigns a template keywordlist to string for initializing derived classes. More...
 
void getAPI (std::string &out) const
 Outputs a JSON representation of the Utility's API. More...
 
std::string getAPI () const
 
void getBuildDate (std::string &s) const
 Gets build date. More...
 
void getRevision (std::string &s) const
 Gets revision. More...
 
void getVersion (std::string &s) const
 Gets version. More...
 
void setOutputStream (std::ostream *os)
 Redirects any console output to the supplied stream for logging or JNI application. More...
 
bool helpRequested () const
 Returns true when the initialization detects a "--help" option, so caller can avoid subsequent execute() call. More...
 
- Public Member Functions inherited from ossimObject
 ossimObject ()
 
virtual ~ossimObject ()
 
virtual ossimObjectdup () const
 
virtual ossimString getShortName () const
 
virtual ossimString getLongName () const
 
virtual ossimString getDescription () const
 
virtual RTTItypeid getType () const
 
virtual bool canCastTo (ossimObject *obj) const
 
virtual bool canCastTo (const RTTItypeid &id) const
 
virtual bool canCastTo (const ossimString &parentClassName) const
 
virtual bool saveState (ossimKeywordlist &kwl, const char *prefix=0) const
 
virtual bool loadState (const ossimKeywordlist &kwl, const char *prefix=0)
 
virtual std::ostream & print (std::ostream &out) const
 Generic print method. More...
 
virtual bool isEqualTo (const ossimObject &obj, ossimCompareType compareType=OSSIM_COMPARE_FULL) const
 
virtual void accept (ossimVisitor &visitor)
 
- Public Member Functions inherited from ossimReferenced
 ossimReferenced ()
 
 ossimReferenced (const ossimReferenced &)
 
ossimReferencedoperator= (const ossimReferenced &)
 
void ref () const
 increment the reference count by one, indicating that this object has another pointer which is referencing it. More...
 
void unref () const
 decrement the reference count by one, indicating that a pointer to this object is referencing it. More...
 
void unref_nodelete () const
 decrement the reference count by one, indicating that a pointer to this object is referencing it. More...
 
int referenceCount () const
 
- Public Member Functions inherited from ossim::JsonInterface
 JsonInterface ()
 
virtual ~JsonInterface ()
 
- Public Member Functions inherited from ossimProcessInterface
 ossimProcessInterface ()
 
virtual ~ossimProcessInterface ()
 
bool needsAborting () const
 
bool isAbortRequested () const
 
bool isAborted () const
 
bool isExecuting () const
 
ossimProcessStatus getProcessStatus () const
 
virtual void setProcessStatus (ossimProcessStatus processStatus)
 
virtual double getPercentComplete () const
 
virtual void setPercentComplete (double percentComplete)
 
void enableEvents ()
 
void disableEvents ()
 
void setCurrentMessage (const ossimString &message)
 
virtual std::ostream & print (std::ostream &out) const
 
- Public Member Functions inherited from ossimListenerManager
 ossimListenerManager ()
 
virtual ~ossimListenerManager ()
 
virtual void fireEvent (ossimEvent &event)
 
virtual bool addListener (ossimListener *listener)
 
virtual bool removeListener (ossimListener *listener)
 
virtual bool findListener (ossimListener *listener)
 

Static Public Attributes

static const char * DESCRIPTION
 Used by ossimUtilityFactory. More...
 

Protected Member Functions

virtual void initProcessingChain ()
 Derived classes initialize their custom chains here. More...
 
 ossimHlzTool (const ossimHlzTool &obj)
 Hidden from use copy constructor. More...
 
const ossimHlzTooloperator= (const ossimHlzTool &rhs)
 Hidden from use assignment operator. More...
 
void usage (ossimArgumentParser &ap)
 Initializes arg parser and outputs usage. More...
 
void addArguments (ossimArgumentParser &ap)
 
void loadPcFiles ()
 
void loadMaskFiles ()
 
void writeSlopeImage ()
 
void setProductGSD (const double &meters_per_pixel)
 
bool computeHLZ ()
 
- Protected Member Functions inherited from ossimChipProcTool
void processRemainingArgs (ossimArgumentParser &ap)
 Intended to be called after derived class has picked off its own options from the parser, and arguments remain (such as input and output filenames). More...
 
virtual void finalizeChain ()
 Called after initProcessingChain() to append common items to the processing chain. More...
 
virtual void loadImageFiles ()
 Creates chains for image entries associated with specified keyword. More...
 
virtual void loadDemFiles ()
 Loads all DEM files specified in master KWL into the elev manager's database. More...
 
ossimRefPtr< ossimSingleImageChaincreateInputChain (const ossimFilename &image_file, ossim_uint32 entry_index=0)
 Creates the ossimSingleImageChain from image filename and populates the chain with resampler and product output projection on view-side of resampler's IVT. More...
 
void createOutputProjection ()
 Creates the output or view projection. More...
 
ossimRefPtr< ossimMapProjectionnewIdentityProjection ()
 Sets the single image chain for identity operations view to a ossimImageViewAffineTransform. More...
 
ossimRefPtr< ossimMapProjectionnewUtmProjection ()
 Convenience method to get a utm projection. More...
 
virtual void initializeProjectionGsd ()
 Initializes the projection gsd. More...
 
virtual void initializeAOI ()
 Initializes m_aoiViewRect with the output area of interest as specified in master KWL. More...
 
bool getProjectionOrigin (ossimGpt &gpt)
 Reads the KWL for origin latitude and central meridian. More...
 
ossimRefPtr< ossimImageFileWriternewWriter ()
 Creates a new writer. More...
 
void propagateGeometryToChains ()
 Loops through all chains and sets the output projection. More...
 
ossimRefPtr< ossimImageSourcecombineLayers (std::vector< ossimRefPtr< ossimSingleImageChain > > &layers) const
 When multiple input sources are present, this method instantiates a combiner and adds inputs. More...
 
void computeAdjustedViewFromGrect ()
 Initializes m_aoiViewRect given m_aoiGroundRect. More...
 
void setAoiToInputs ()
 Assigns the AOI to be the bounding rect of the union of all inputs. More...
 
void getBandList (ossim_uint32 image_idx, std::vector< ossim_uint32 > &bandList) const
 Gets the band list if BANDS keyword is set. More...
 
void setReaderProps (ossimImageHandler *ih) const
 Passes reader properties to single image handler if any. More...
 
 ossimChipProcTool (const ossimChipProcTool &obj)
 Hidden from use copy constructor. More...
 
const ossimChipProcTooloperator= (const ossimChipProcTool &)
 Hidden from use assignment operator. More...
 
ossimRefPtr< ossimGeoPolygoncreateClipPolygon () const
 
void findCenterGpt (ossimGpt &gpt)
 Tries to determine the AOI center point based on KWL entries, else returns NaNs in gpt. More...
 
ossimRefPtr< ossimImageSourcemosaicDemSources ()
 Some utilities need to work on DEMs as images. More...
 
- Protected Member Functions inherited from ossimReferenced
virtual ~ossimReferenced ()
 
- Protected Member Functions inherited from ossimListenerManager
 ossimListenerManager (const ossimListenerManager &rhs)
 

Protected Attributes

double m_slopeThreshold
 
double m_roughnessThreshold
 
double m_hlzMinRadius
 
ossimFilename m_slopeFile
 
ossimIpt m_demFilterSize
 
ossimRefPtr< ossimImageDatam_demBuffer
 
ossimRefPtr< ossimImageDatam_outBuffer
 
ossimRefPtr< ossimMemoryImageSourcem_memSource
 
ossim_uint8 m_badLzValue
 
ossim_uint8 m_marginalLzValue
 
ossim_uint8 m_goodLzValue
 
bool m_useLsFitMethod
 
ossimRefPtr< ossimImageSourcem_combinedElevSource
 
std::vector< ossimRefPtr< ossimPointCloudHandler > > m_pcSources
 
std::vector< MaskSourcem_maskSources
 
ossim_uint32 m_numThreads
 
double d_accumT
 
- Protected Attributes inherited from ossimChipProcTool
ossimRefPtr< ossimImageGeometrym_geom
 
ossimIrect m_aoiViewRect
 
ossimGrect m_aoiGroundRect
 
std::vector< ossimRefPtr< ossimSingleImageChain > > m_imgLayers
 
std::vector< ossimFilenamem_demSources
 
ossimRefPtr< ossimImageFileWriterm_writer
 
ossimRefPtr< ossimImageChainm_procChain
 
ossimRefPtr< ossimRectangleCutFilterm_cutRectFilter
 
bool m_projIsIdentity
 
ossimDpt m_gsd
 
bool m_geoScaled
 
ossimFilename m_productFilename
 
ossimScalarType m_productScalarType
 
bool m_needCutRect
 
- Protected Attributes inherited from ossimTool
ossimKeywordlist m_kwl
 
std::ostream * m_consoleStream
 
bool m_helpRequested
 
std::string m_response
 
- Protected Attributes inherited from ossimProcessInterface
double thePercentComplete
 
ossimProcessStatus theProcessStatus
 
ossimString theMessage
 
bool theEventFlag
 
- Protected Attributes inherited from ossimListenerManager
std::list< ossimListener * > theListenerList
 
bool theEnabledFlag
 
std::list< ossimListener * > theDelayedAdd
 
std::list< ossimListener * > theDelayedRemove
 
bool theFireEventFlag
 

Additional Inherited Members

- Public Types inherited from ossimProcessInterface
enum  ossimProcessStatus {
  PROCESS_STATUS_UNKNOWN = 0, PROCESS_STATUS_EXECUTING = 1, PROCESS_STATUS_ABORTED = 2, PROCESS_STATUS_ABORT_REQUEST = 3,
  PROCESS_STATUS_NOT_EXECUTING = 4
}
 

Detailed Description

Class for finding helicopter landing zones (HLZ) on a DEM given the final destination and max range from destination.

Definition at line 35 of file ossimHlzTool.h.

Constructor & Destructor Documentation

◆ ossimHlzTool() [1/2]

ossimHlzTool::ossimHlzTool ( )

Definition at line 49 of file ossimHlzTool.cpp.

50 : m_slopeThreshold(7.0),
52  m_hlzMinRadius(25.0),
53  m_outBuffer(NULL),
54  m_badLzValue(255),
55  m_marginalLzValue(128),
56  m_goodLzValue(64),
57  m_useLsFitMethod(true),
58  m_numThreads(1),
59  d_accumT(0)
60 {
61 }
double m_slopeThreshold
Definition: ossimHlzTool.h:78
ossim_uint8 m_goodLzValue
Definition: ossimHlzTool.h:88
double m_roughnessThreshold
Definition: ossimHlzTool.h:79
bool m_useLsFitMethod
Definition: ossimHlzTool.h:89
ossim_uint8 m_badLzValue
Definition: ossimHlzTool.h:86
double d_accumT
Definition: ossimHlzTool.h:96
ossim_uint32 m_numThreads
Definition: ossimHlzTool.h:95
ossimRefPtr< ossimImageData > m_outBuffer
Definition: ossimHlzTool.h:84
ossim_uint8 m_marginalLzValue
Definition: ossimHlzTool.h:87
double m_hlzMinRadius
Definition: ossimHlzTool.h:80

◆ ~ossimHlzTool()

ossimHlzTool::~ossimHlzTool ( )

Definition at line 63 of file ossimHlzTool.cpp.

64 {
65 }

◆ ossimHlzTool() [2/2]

ossimHlzTool::ossimHlzTool ( const ossimHlzTool obj)
protected

Hidden from use copy constructor.

Member Function Documentation

◆ addArguments()

void ossimHlzTool::addArguments ( ossimArgumentParser ap)
protected

◆ computeHLZ()

bool ossimHlzTool::computeHLZ ( )
protected

Definition at line 421 of file ossimHlzTool.cpp.

References ossimImageDataFactory::create(), d_accumT, ossimImageData::fill(), ossim::getNumberOfThreads(), ossimImageSource::getTile(), ossimIrect::height(), ossimImageData::initialize(), ossimImageDataFactory::instance(), ossimIrect::lr(), ossimChipProcTool::m_aoiViewRect, m_combinedElevSource, m_demBuffer, m_demFilterSize, ossimChipProcTool::m_gsd, m_hlzMinRadius, m_memSource, m_numThreads, m_outBuffer, m_useLsFitMethod, OSSIM_UINT8, ossimNotify(), ossimNotifyLevel_INFO, ossimMemoryImageSource::setImage(), ossimImageData::setImageRectangle(), ossimProcessInterface::setPercentComplete(), ossim::Thread::sleepInMicroSeconds(), ossimIrect::ul(), ossimRefPtr< T >::valid(), ossimIrect::width(), ossimIpt::x, ossimDpt::x, ossimIpt::y, and ossimDpt::y.

Referenced by getChip().

422 {
423 
424  // To help with multithreading, just load entire AOI of DEM into memory:
426  if (!m_demBuffer.valid())
427  return false;
428 
429  // Allocate the output image buffer:
432  ostringstream xmsg;
433  if (!m_outBuffer.valid() || !m_memSource.valid())
434  {
435  xmsg<<"ossimHlzUtil:"<<__LINE__<<" Error encountered allocating output image buffer.";
436  throw(xmsg.str());
437  }
438 
439  // Initialize the image with all points hidden:
442  m_outBuffer->fill(0);
444 
445  d_accumT = 0;
446 
447  // Establish loop limits in input DEM raster coordinate space:
448  ossim_int32 min_x = m_aoiViewRect.ul().x;
449  ossim_int32 min_y = m_aoiViewRect.ul().y;
452  ossimIpt chip_origin;
453  ossim_uint32 numPatches = (max_x-min_x)*(max_y-min_y);
454 
455  // Determine the DEM step size as a fraction of the LZ radius:
456  const double CHIP_STEP_FACTOR = 0.25; // chip position increment as fraction of chip width
457  ossim_int32 dem_step =
458  (ossim_int32) floor(4*CHIP_STEP_FACTOR*m_hlzMinRadius/(m_gsd.x+m_gsd.y));
459  if (dem_step <= 0)
460  dem_step = 1;
461 
462  // Hack: degrading to single thread when slope-image scheme is used. Runs extremely slow in
463  // multithread mode, but much faster as single thread than multithreaded ls-fit
464  if ((m_numThreads == 1) || !m_useLsFitMethod)
465  {
466  // Not threaded (or slope-image scheme):
468  ossim_uint32 chipId = 0;
469  for (chip_origin.y = min_y; chip_origin.y <= max_y; chip_origin.y += dem_step)
470  {
471  for (chip_origin.x = min_x; chip_origin.x <= max_x; chip_origin.x += dem_step)
472  {
473  std::shared_ptr<ossimHlzTool::PatchProcessorJob> job = 0;
474  if (m_useLsFitMethod)
475  job = std::make_shared<ossimHlzTool::LsFitPatchProcessorJob>(this, chip_origin, chipId++);
476  else
477  job = std::make_shared<ossimHlzTool::NormPatchProcessorJob>(this, chip_origin, chipId++);
478  job->start();
479  }
480  setPercentComplete(100*chipId/numPatches);
481  }
482  }
483  else
484  {
485  if (m_numThreads == 0)
487 
488  // Loop over input DEM, creating a thread job for each filter window:
489  std::shared_ptr<ossimJobMultiThreadQueue> jobMtQueue =
490  std::make_shared<ossimJobMultiThreadQueue>(nullptr, m_numThreads);
491  std::shared_ptr<ossimJobQueue> jobQueue = jobMtQueue->getJobQueue();
492 
493  ossimNotify(ossimNotifyLevel_INFO) << "\nPreparing " << numPatches << " jobs..." << endl; // TODO: DEBUG
495  ossim_int32 qsize = 0;
496  ossimIpt chip_origin;
497  ossim_uint32 chipId = 0;
498  for (chip_origin.y = min_y; chip_origin.y <= max_y; ++chip_origin.y)
499  {
500  for (chip_origin.x = min_x; chip_origin.x <= max_x; ++chip_origin.x)
501  {
502  //ossimNotify(ossimNotifyLevel_INFO) << "Submitting " << chipId << endl;
503  std::shared_ptr<ossimHlzTool::PatchProcessorJob> job = 0;
504  if (m_useLsFitMethod)
505  job = std::make_shared<ossimHlzTool::LsFitPatchProcessorJob>(this, chip_origin, chipId++);
506  else
507  job = std::make_shared<ossimHlzTool::NormPatchProcessorJob>(this, chip_origin, chipId++);
508  jobQueue->add(job, false);
509  }
510  qsize = jobQueue->size();
511  setPercentComplete(100*(chipId-qsize)/numPatches);
512  }
513 
514  // Wait until all chips have been processed before proceeding:
515  ossimNotify(ossimNotifyLevel_INFO) << "All jobs queued. Waiting for job threads to finish..." << endl;
516  while (jobMtQueue->hasJobsToProcess() || jobMtQueue->numberOfBusyThreads())
517  {
518  qsize = jobMtQueue->getJobQueue()->size();
519  setPercentComplete(100*(numPatches-qsize)/numPatches);
521  }
522  jobMtQueue = 0;
523  }
524 
525  ossimNotify(ossimNotifyLevel_INFO) << "Finished processing chips." << endl;
526  return true;
527 }
void fill(ossim_uint32 band, ossim_float64 value)
will fill the entire band with the value.
std::basic_ostringstream< char > ostringstream
Class for char output memory streams.
Definition: ossimIosFwd.h:35
virtual void setImageRectangle(const ossimIrect &rect)
bool valid() const
Definition: ossimRefPtr.h:75
double y
Definition: ossimDpt.h:165
ossim_uint32 height() const
Definition: ossimIrect.h:487
bool m_useLsFitMethod
Definition: ossimHlzTool.h:89
void setImage(ossimRefPtr< ossimImageData > image)
virtual void setPercentComplete(double percentComplete)
const ossimIpt & ul() const
Definition: ossimIrect.h:274
ossimRefPtr< ossimMemoryImageSource > m_memSource
Definition: ossimHlzTool.h:85
double d_accumT
Definition: ossimHlzTool.h:96
static void sleepInMicroSeconds(ossim_uint64 micros)
Utility method to allow one to sleep in microseconds.
Definition: Thread.cpp:83
virtual void initialize()
Initialize the data buffer.
OSSIM_DLL ossim_uint32 getNumberOfThreads()
Get the number threads to use from ossimPreferences or ossim::Thread.
ossim_uint32 m_numThreads
Definition: ossimHlzTool.h:95
ossimIpt m_demFilterSize
Definition: ossimHlzTool.h:82
static ossimImageDataFactory * instance()
ossimRefPtr< ossimImageData > m_demBuffer
Definition: ossimHlzTool.h:83
ossimRefPtr< ossimImageSource > m_combinedElevSource
Definition: ossimHlzTool.h:90
unsigned int ossim_uint32
const ossimIpt & lr() const
Definition: ossimIrect.h:276
virtual ossimRefPtr< ossimImageData > create(ossimSource *owner, ossimScalarType scalar, ossim_uint32 bands=1) const
ossim_uint32 width() const
Definition: ossimIrect.h:500
ossimRefPtr< ossimImageData > m_outBuffer
Definition: ossimHlzTool.h:84
double m_hlzMinRadius
Definition: ossimHlzTool.h:80
ossim_int32 y
Definition: ossimIpt.h:142
double x
Definition: ossimDpt.h:164
ossim_int32 x
Definition: ossimIpt.h:141
8 bit unsigned integer
OSSIMDLLEXPORT std::ostream & ossimNotify(ossimNotifyLevel level=ossimNotifyLevel_WARN)
int ossim_int32
virtual ossimRefPtr< ossimImageData > getTile(const ossimIpt &origin, ossim_uint32 resLevel=0)

◆ execute()

bool ossimHlzTool::execute ( )
virtual

Performs the actual product write.

Note
Throws ossimException on error.

Reimplemented from ossimChipProcTool.

Definition at line 412 of file ossimHlzTool.cpp.

References ossimChipProcTool::execute(), ossimChipProcTool::getChip(), ossimChipProcTool::m_aoiViewRect, and ossimTool::m_helpRequested.

413 {
414  if (m_helpRequested)
415  return true;
416 
419 }
ossimRefPtr< ossimImageData > getChip()
Get chip method that assumes pre-initialized state.
bool m_helpRequested
Definition: ossimTool.h:150
virtual bool execute()
Performs the actual product write.

◆ getChip()

ossimRefPtr< ossimImageData > ossimHlzTool::getChip ( const ossimIrect img_rect)
virtual

The meat and potatos of this class.

Performs an execute on specified rect.

Reimplemented from ossimChipProcTool.

Definition at line 392 of file ossimHlzTool.cpp.

References computeHLZ(), ossimImageChain::getTile(), ossimImageGeometry::localToWorld(), ossimChipProcTool::m_aoiGroundRect, ossimChipProcTool::m_aoiViewRect, ossimChipProcTool::m_geom, ossimChipProcTool::m_procChain, ossimImageGeometry::setImageSize(), ossimIrect::size(), and ossimRefPtr< T >::valid().

393 {
394  ostringstream xmsg;
395  if (!m_geom.valid())
396  return 0;
397 
398  m_aoiViewRect = bounding_irect;
401 
402  if (computeHLZ())
403  {
404  // The memory source has been populated, now do the getTile on the full chain to pick up
405  // other filters inserted after the memsource:
406  return m_procChain->getTile( m_aoiViewRect, 0 );
407  }
408  // else:
409  return 0;
410 }
virtual ossimRefPtr< ossimImageData > getTile(const ossimIrect &tileRect, ossim_uint32 resLevel=0)
Within the image chain will pass the head of the list.
ossimRefPtr< ossimImageGeometry > m_geom
std::basic_ostringstream< char > ostringstream
Class for char output memory streams.
Definition: ossimIosFwd.h:35
ossimGrect m_aoiGroundRect
bool valid() const
Definition: ossimRefPtr.h:75
void setImageSize(const ossimIpt &size)
ossimIpt size() const
Definition: ossimIrect.h:510
ossimRefPtr< ossimImageChain > m_procChain
bool localToWorld(const ossimDpt &local_pt, ossimGpt &world_pt) const
Exposes the 3D projection from image to world coordinates.

◆ getClassName()

virtual ossimString ossimHlzTool::getClassName ( ) const
inlinevirtual

Reimplemented from ossimTool.

Definition at line 47 of file ossimHlzTool.h.

47 { return "ossimHlzUtil"; }

◆ initialize() [1/2]

bool ossimHlzTool::initialize ( ossimArgumentParser ap)
virtual

Initial method to be ran prior to execute.

Intended for command-line app usage.

Parameters
apArg parser to initialize from.
Returns
FALSE if –help option requested or no params provided, so that derived classes can
Note
Throws ossimException on error.
A throw with an error message of "usage" is used to get out when a usage is printed.

Reimplemented from ossimChipProcTool.

Definition at line 110 of file ossimHlzTool.cpp.

References ossimChipProcTool::initialize(), ossimTool::m_helpRequested, and ossimArgumentParser::read().

111 {
113  return false;
114  if (m_helpRequested)
115  return true;
116 
117  string ts1;
119  string ts2;
121  string ts3;
123  ossimString key ;
124 
125  vector<ossimString> maskFnames;
126  ap.read("--exclude-regions", maskFnames);
127  for(ossim_uint32 idx=0; idx<maskFnames.size(); ++idx)
128  {
129  key = MASK_EXCLUDE_KW;
130  key += ossimString::toString(idx++);
131  m_kwl.addPair(key.string(), maskFnames[idx] );
132  }
133 
134  if (ap.read("--hlz-coding", sp1, sp2, sp3) || ap.read("--values", sp1, sp2, sp3))
135  {
136  ostringstream value;
137  value<<ts1<<" "<<ts2<<" "<<ts3;
138  m_kwl.addPair( HLZ_CODING_KW, value.str() );
139  }
140 
141  maskFnames.clear();
142  ap.read("--include-regions", maskFnames);
143  for(ossim_uint32 idx=0; idx<maskFnames.size(); ++idx)
144  {
145  key = MASK_INCLUDE_KW;
146  key += ossimString::toString(idx++);
147  m_kwl.addPair(key.string(), maskFnames[idx] );
148  }
149 
150  if ( ap.read("--output-slope", sp1))
151  m_kwl.addPair(SLOPE_OUTPUT_FILE_KW, ts1);
152 
153  vector<ossimString> pcFnames;
154  ap.read("--point-clouds", pcFnames);
155  for(ossim_uint32 idx=0; idx<pcFnames.size(); ++idx)
156  {
157  key = POINT_CLOUD_FILE_KW;
158  key += ossimString::toString(idx++);
159  m_kwl.addPair(key.string(), pcFnames[idx] );
160  }
161 
162  if (ap.read("--min-lz-radius", sp1) || ap.read("--rlz", sp1))
163  m_kwl.addPair(LZ_MIN_RADIUS_KW, ts1);
164 
165  if (ap.read("--max-roughness", sp1) || ap.read("--roughness", sp1))
166  m_kwl.addPair(ROUGHNESS_THRESHOLD_KW, ts1);
167 
168  if (ap.read("--max-slope", sp1) || ap.read("--slope", sp1))
169  m_kwl.addPair(SLOPE_THRESHOLD_KW, ts1);
170 
171  if (ap.read("--threads", sp1))
172  {
173  // Command line mode only
175  }
176 
177  if (ap.read("--use_slope"))
178  {
179  // Command line mode only
180  m_useLsFitMethod = false;
181  }
182 
184  return true;
185 }
virtual bool initialize(ossimArgumentParser &ap)
Initial method to be ran prior to execute.
std::basic_ostringstream< char > ostringstream
Class for char output memory streams.
Definition: ossimIosFwd.h:35
bool m_helpRequested
Definition: ossimTool.h:150
bool read(const std::string &str)
search for an occurance of a string in the argument list, on sucess remove that occurance from the li...
static ossimString toString(bool aValue)
Numeric to string methods.
bool m_useLsFitMethod
Definition: ossimHlzTool.h:89
ossimKeywordlist m_kwl
Definition: ossimTool.h:148
void addPair(const std::string &key, const std::string &value, bool overwrite=true)
ossim_uint32 toUInt32() const
ossim_uint32 m_numThreads
Definition: ossimHlzTool.h:95
unsigned int ossim_uint32
void processRemainingArgs(ossimArgumentParser &ap)
Intended to be called after derived class has picked off its own options from the parser...
const std::string & string() const
Definition: ossimString.h:414

◆ initialize() [2/2]

void ossimHlzTool::initialize ( const ossimKeywordlist kwl)
virtual

This method is responsible for completely setting up the full processing chain according to the specifications given in the kwl passed in.

If the utility is run from a command line, the initialize(ossimArgumentParser) will assign the member master KWL and pass it to this method. Web service calls will fill a KWL and pass it.

This base class implementation should be called by the derived class implementation (assuming the derived class needs to pull some parameters out of the KWL before the chains are set up.

This method will instantiate the output projection and define the output bounding rect and product size in pixels. The processing chain (stored in m_procChain) will be completely initialized and ready for calls to getTile(). Then either getChip() or execute() can be called depending on usage to fetch product.

Note
Throws ossimException on error.

Reimplemented from ossimChipProcTool.

Definition at line 187 of file ossimHlzTool.cpp.

References ossimKeywordlist::addList(), ossimKeywordlist::clear(), ossimKeywordlist::findKey(), and ossimTool::m_kwl.

188 {
189  ossimString value;
190  ostringstream xmsg;
191 
192  // Don't copy KWL if member KWL passed in:
193  if (&kwl != &m_kwl)
194  {
195  // Start with clean options keyword list.
196  m_kwl.clear();
197  m_kwl.addList( kwl, true );
198  }
199 
200  value = m_kwl.findKey(LZ_MIN_RADIUS_KW);
201  if (!value.empty())
202  m_hlzMinRadius = value.toDouble();
203  if (m_hlzMinRadius < 1.0)
204  {
205  xmsg<<"ossimHlzUtil:"<<__LINE__<<" The HLZ minimum radius is too small.";
206  throw(xmsg.str());
207  }
208 
209  value = m_kwl.findKey(ROUGHNESS_THRESHOLD_KW);
210  if (!value.empty())
211  m_roughnessThreshold = value.toDouble();
212 
213  value = m_kwl.findKey(SLOPE_THRESHOLD_KW);
214  if (!value.empty())
215  m_slopeThreshold = value.toDouble();
216 
217  value = m_kwl.findKey(HLZ_CODING_KW);
218  if (!value.empty())
219  {
220  vector<ossimString> values = value.split(" ");
221  if (values.size() == 3)
222  {
223  m_badLzValue = values[0].toUInt8();
224  m_marginalLzValue = values[1].toUInt8();
225  m_goodLzValue = values[2].toUInt8();
226  }
227  else
228  {
229  xmsg<<"ossimHlzUtil:"<<__LINE__<<" Unexpected number of values encountered for keyword <"
230  <<HLZ_CODING_KW<<">.";
231  throw(xmsg.str());
232  }
233  }
234 
236 }
double m_slopeThreshold
Definition: ossimHlzTool.h:78
virtual bool initialize(ossimArgumentParser &ap)
Initial method to be ran prior to execute.
std::basic_ostringstream< char > ostringstream
Class for char output memory streams.
Definition: ossimIosFwd.h:35
ossim_uint8 m_goodLzValue
Definition: ossimHlzTool.h:88
const std::string & findKey(const std::string &key) const
Find methods that take std::string(s).
double m_roughnessThreshold
Definition: ossimHlzTool.h:79
void addList(const ossimKeywordlist &src, bool overwrite=true)
ossim_uint8 m_badLzValue
Definition: ossimHlzTool.h:86
ossimKeywordlist m_kwl
Definition: ossimTool.h:148
void split(std::vector< ossimString > &result, const ossimString &separatorList, bool skipBlankFields=false) const
Splits this string into a vector of strings (fields) using the delimiter list specified.
double toDouble() const
ossim_uint8 m_marginalLzValue
Definition: ossimHlzTool.h:87
double m_hlzMinRadius
Definition: ossimHlzTool.h:80
bool empty() const
Definition: ossimString.h:411

◆ initProcessingChain()

void ossimHlzTool::initProcessingChain ( )
protectedvirtual

Derived classes initialize their custom chains here.

Implements ossimChipProcTool.

Definition at line 238 of file ossimHlzTool.cpp.

References ossimImageChain::add(), ossimChipProcTool::combineLayers(), ossimConnectableObject::connectMyInputTo(), ossimImageDataFactory::create(), ossimSlopeFilter::DEGREES, ossimKeywordlist::findKey(), ossimRefPtr< T >::get(), ossimGrect::hasNans(), ossimIrect::hasNans(), ossimIrect::height(), ossimImageSource::initialize(), ossimImageDataFactory::instance(), loadMaskFiles(), loadPcFiles(), ossimChipProcTool::m_aoiGroundRect, ossimChipProcTool::m_aoiViewRect, m_combinedElevSource, ossimChipProcTool::m_geom, ossimChipProcTool::m_imgLayers, ossimTool::m_kwl, m_memSource, m_outBuffer, ossimChipProcTool::m_procChain, m_slopeFile, m_useLsFitMethod, ossimChipProcTool::mosaicDemSources(), OSSIM_UINT8, ossimMemoryImageSource::setImage(), ossimMemoryImageSource::setImageGeometry(), ossimSlopeFilter::setSlopeType(), ossimRefPtr< T >::valid(), and ossimIrect::width().

239 {
240  ostringstream xmsg;
241 
243  {
244  xmsg<<"ossimHlzUtil:"<<__LINE__<<" Encountered NaNs in AOI."<<ends;
245  throw ossimException(xmsg.str());
246  }
247 
248 
249  // If PC provided as file on command line, Load it. This uses the output ground rect so needs to
250  // be after the initialization of m_geom:
251  loadPcFiles();
252 
253  // If threat-domes spec (or any mask) provided as file on command line, Load it:
254  loadMaskFiles();
255 
256  // In order to use the slope filter to establish terrain quality, the elevation data needs to
257  // be loaded as images, not elevation cells. Need to transfer relevant cells to image chains:
259 
260  // The "chain" for this utility is just the memory source containing the output buffer:
263  if (!m_outBuffer.valid())
264  {
265  xmsg<<"ossimHlzUtil:"<<__LINE__<<" Error encountered allocating output image buffer.";
266  throw(xmsg.str());
267  }
271 
272  // If input image(s) provided, need to combine them with the product:
273  if (m_imgLayers.empty())
274  {
276  }
277  else
278  {
280  combiner->connectMyInputTo(m_memSource.get());
281  m_procChain->add(combiner.get());
282  }
283 
284  if (!m_useLsFitMethod)
285  {
286  // Add the slope computation engine on the elevation source.
287  // Set up processing chain with plane to normal filter, equation combiner, and band selector.
289  slope_filter->connectMyInputTo(m_combinedElevSource.get());
291  m_combinedElevSource = slope_filter.get();
293 
294  m_slopeFile = m_kwl.findKey(SLOPE_OUTPUT_FILE_KW);
295  if (!m_slopeFile.empty())
296  writeSlopeImage();
297  }
298  // Determine number of posts (in one dimension) needed to cover the specified LZ radius:
299  if ((m_gsd.x == 0) || (m_gsd.y == 0) || m_gsd.hasNans())
300  {
301  ostringstream xmsg;
302  xmsg<<"ossimHlzUtil:"<<__LINE__<<" Invalid GSD: "<<m_gsd;
303  throw(xmsg.str());
304  }
305 
306  m_demFilterSize.x = (int) ceil(m_hlzMinRadius/m_gsd.x);
307  m_demFilterSize.y = (int) ceil(m_hlzMinRadius/m_gsd.y);
308  if ((m_demFilterSize.x < 2) || (m_demFilterSize.y < 2))
309  {
310  xmsg<<"ossimHlzUtil:"<<__LINE__<<" The DEM provided does not have sufficient"
311  " resolution to determine HLZs.";
312  throw ossimException(xmsg.str());
313  }
314 }
void writeSlopeImage()
ossimRefPtr< ossimImageGeometry > m_geom
std::basic_ostringstream< char > ostringstream
Class for char output memory streams.
Definition: ossimIosFwd.h:35
Filter class for computing the slope image of the input image connection.
ossimGrect m_aoiGroundRect
const std::string & findKey(const std::string &key) const
Find methods that take std::string(s).
bool valid() const
Definition: ossimRefPtr.h:75
double y
Definition: ossimDpt.h:165
ossim_uint32 height() const
Definition: ossimIrect.h:487
bool m_useLsFitMethod
Definition: ossimHlzTool.h:89
void setImage(ossimRefPtr< ossimImageData > image)
ossimKeywordlist m_kwl
Definition: ossimTool.h:148
ossimRefPtr< ossimImageSource > combineLayers(std::vector< ossimRefPtr< ossimSingleImageChain > > &layers) const
When multiple input sources are present, this method instantiates a combiner and adds inputs...
ossimRefPtr< ossimMemoryImageSource > m_memSource
Definition: ossimHlzTool.h:85
bool hasNans() const
Definition: ossimGrect.h:298
ossimRefPtr< ossimImageChain > m_procChain
ossimIpt m_demFilterSize
Definition: ossimHlzTool.h:82
static ossimImageDataFactory * instance()
void loadMaskFiles()
ossimRefPtr< ossimImageSource > m_combinedElevSource
Definition: ossimHlzTool.h:90
ossimRefPtr< ossimImageSource > mosaicDemSources()
Some utilities need to work on DEMs as images.
std::vector< ossimRefPtr< ossimSingleImageChain > > m_imgLayers
virtual void setImageGeometry(ossimImageGeometry *geom)
Default implementation sets geometry of the first input to the geometry specified.
virtual bool add(ossimConnectableObject *source)
Will return true or false if an image source was added to the chain.
virtual ossim_int32 connectMyInputTo(ossimConnectableObject *inputObject, bool makeOutputConnection=true, bool createEventFlag=true)
Will try to connect this objects input to the passed in object.
virtual ossimRefPtr< ossimImageData > create(ossimSource *owner, ossimScalarType scalar, ossim_uint32 bands=1) const
ossim_uint32 width() const
Definition: ossimIrect.h:500
bool hasNans() const
Definition: ossimDpt.h:67
void setSlopeType(SlopeType t)
ossimRefPtr< ossimImageData > m_outBuffer
Definition: ossimHlzTool.h:84
double m_hlzMinRadius
Definition: ossimHlzTool.h:80
void loadPcFiles()
ossim_int32 y
Definition: ossimIpt.h:142
double x
Definition: ossimDpt.h:164
bool empty() const
Definition: ossimString.h:411
ossimFilename m_slopeFile
Definition: ossimHlzTool.h:81
bool hasNans() const
Definition: ossimIrect.h:337
ossim_int32 x
Definition: ossimIpt.h:141
virtual void initialize()=0
8 bit unsigned integer

◆ loadMaskFiles()

void ossimHlzTool::loadMaskFiles ( )
protected

Definition at line 355 of file ossimHlzTool.cpp.

Referenced by initProcessingChain().

356 {
357  ostringstream xmsg;
358 
359  ossimString key;
360  ossimFilename mask_file;
361 
362  // Exclusion masks:
363  for(ossim_uint32 idx=0; true; ++idx)
364  {
365  key = MASK_EXCLUDE_KW;
366  key += ossimString::toString(idx++);
367  mask_file = m_kwl.find(key.chars());
368  if (mask_file.empty())
369  break;
370 
371  MaskSource mask_image (this, mask_file, true);
372  if (mask_image.image.valid())
373  m_maskSources.push_back(mask_image);
374  }
375 
376  // Inclusion masks:
377  for(ossim_uint32 idx=0; true; ++idx)
378  {
379  key = MASK_INCLUDE_KW;
380  key += ossimString::toString(idx++);
381  mask_file = m_kwl.find(key.chars());
382  if (mask_file.empty())
383  break;
384 
385  // First check if the filename specified is an image file:
386  MaskSource mask_image (this, mask_file, false);
387  if (mask_image.image.valid())
388  m_maskSources.push_back(mask_image);
389  }
390 }
std::basic_ostringstream< char > ostringstream
Class for char output memory streams.
Definition: ossimIosFwd.h:35
const char * find(const char *key) const
static ossimString toString(bool aValue)
Numeric to string methods.
ossimKeywordlist m_kwl
Definition: ossimTool.h:148
unsigned int ossim_uint32
const char * chars() const
For backward compatibility.
Definition: ossimString.h:77
bool empty() const
Definition: ossimString.h:411
std::vector< MaskSource > m_maskSources
Definition: ossimHlzTool.h:92

◆ loadPcFiles()

void ossimHlzTool::loadPcFiles ( )
protected

Definition at line 316 of file ossimHlzTool.cpp.

References ossimPointCloudHandlerRegistry::instance().

Referenced by initProcessingChain().

317 {
318  ostringstream xmsg;
319 
320  ossimString key;
321  ossimFilename pc_file;
323  ossimGrect pc_bbox;
324 
325  for(ossim_uint32 idx=0; true; ++idx)
326  {
327  key = POINT_CLOUD_FILE_KW;
328  key += ossimString::toString(idx++);
329  pc_file = m_kwl.find(key.chars());
330  if (pc_file.empty())
331  break;
332 
333  ossimRefPtr<ossimPointCloudHandler> pc_handler = registry->open(pc_file);
334  if (!pc_handler.valid())
335  {
336  xmsg<<"ossimHlzUtil:"<<__LINE__<<" Error loading point cloud file <"<<pc_file<<">.";
337  throw(xmsg.str());
338  }
339 
340  // Verify that PC bounding rect overlaps the output bounding rect:
341  pc_handler->getBounds(pc_bbox);
342  if (m_aoiGroundRect.intersects(pc_bbox))
343  {
344  m_pcSources.push_back(pc_handler);
345  }
346  else
347  {
349  << "ossimHLZUtil::loadPcFile() WARNING: point-cloud file <" << pc_file << "> "
350  << "does not overlap the output ROI." << endl;
351  }
352  }
353 }
std::basic_ostringstream< char > ostringstream
Class for char output memory streams.
Definition: ossimIosFwd.h:35
ossimGrect m_aoiGroundRect
std::vector< ossimRefPtr< ossimPointCloudHandler > > m_pcSources
Definition: ossimHlzTool.h:91
bool valid() const
Definition: ossimRefPtr.h:75
const char * find(const char *key) const
static ossimString toString(bool aValue)
Numeric to string methods.
ossimKeywordlist m_kwl
Definition: ossimTool.h:148
virtual void getBounds(ossimGrect &bounds) const
virtual ossimPointCloudHandler * open(const ossimFilename &fileName) const
unsigned int ossim_uint32
const char * chars() const
For backward compatibility.
Definition: ossimString.h:77
static ossimPointCloudHandlerRegistry * instance()
bool empty() const
Definition: ossimString.h:411
bool intersects(const ossimGrect &rect) const
Definition: ossimGrect.cpp:266
OSSIMDLLEXPORT std::ostream & ossimNotify(ossimNotifyLevel level=ossimNotifyLevel_WARN)

◆ operator=()

const ossimHlzTool& ossimHlzTool::operator= ( const ossimHlzTool rhs)
protected

Hidden from use assignment operator.

◆ setProductGSD()

void ossimHlzTool::setProductGSD ( const double &  meters_per_pixel)
protected

◆ setUsage()

void ossimHlzTool::setUsage ( ossimArgumentParser ap)
virtual

Initializes the aurgument parser with expected parameters and options.

It does not output anything. To see the usage, the caller will need to do something like:

ap.getApplicationUsage()->write(<ostream>);

This base class has some common arguments to add. The derived class should call this implementation in addition to setting its own arguments.

Reimplemented from ossimChipProcTool.

Definition at line 67 of file ossimHlzTool.cpp.

References ossimApplicationUsage::addCommandLineOption(), ossimArgumentParser::getApplicationName(), ossimArgumentParser::getApplicationUsage(), ossimApplicationUsage::setCommandLineUsage(), and ossimChipProcTool::setUsage().

68 {
69  // Add global usage options.
71 
72  // Set the general usage:
74  ossimString usageString = ap.getApplicationName();
75  usageString += " hlz [options] <output-image>";
76  au->setCommandLineUsage(usageString);
77 
78  // Set the command line options:
79  au->addCommandLineOption("--exclude-regions <file1>[, <file2>...]",
80  "List of raster image(s) representing mask files that defines regions to be excluded from "
81  "HLZ solutions. Any non-zero pixel is excluded Multiple filenames must be comma-separated.");
82  au->addCommandLineOption("--hlz-coding <bad> <marginal> <good>",
83  "Specifies the pixel values (0-255) for the output product corresponding to bad, marginal, "
84  "and good landing zones, respectively. Defaults to bad=255 (null), marginal=128, and "
85  "good=64.");
86  au->addCommandLineOption("--include-regions <file1>[, <file2>...]",
87  "List of raster image(s) representing mask files that defines regions where the HLZs ."
88  "identified must overlap. Any non-zero pixel represents an inclusion zone. Multiple "
89  "filenames must be comma-separated.");
90  au->addCommandLineOption("--output-slope <filename.tif>",
91  "Generates a slope byproduct image (floating point degrees) to the specified filename. "
92  "Only valid if normal-vector method used (i.e., --ls-fit option NOT specified)");
93  au->addCommandLineOption("--point-clouds <file1>[, <file2>...]",
94  "Specifies ancillary point-cloud data file(s) for level-2 search for obstructions. "
95  "Must be comma-separated file names.");
96  au->addCommandLineOption("--min-lz-radius <meters>",
97  "Specifies minimum radius of landing zone. Defaults to 25 m. ");
98  au->addCommandLineOption("--max-roughness <meters>",
99  "Specifies the terrain roughness threshold (meters). This is the maximum deviation from a "
100  "flat plane permitted. Defaults to 0.5 m. Valid only with --ls-fit specified.");
101  au->addCommandLineOption("--max-slope <degrees>",
102  "Threshold for acceptable landing zone terrain slope. Defaults to 7 deg.");
103  au->addCommandLineOption("--threads <n>",
104  "Number of threads. Defaults to use single core. For engineering/debug purposes.");
105  au->addCommandLineOption("--use-slope",
106  "Slope is computed from the normal vector using neighboring posts instead of "
107  "least-squares fit to a plane (prefered). For engineering/debug purposes.");
108 }
std::string getApplicationName() const
return the application name, as specified by argv[0]
void addCommandLineOption(const ossimString &option, const ossimString &explanation)
void setCommandLineUsage(const ossimString &explanation)
ossimApplicationUsage * getApplicationUsage()
virtual void setUsage(ossimArgumentParser &ap)
Initializes the aurgument parser with expected parameters and options.

◆ usage()

void ossimHlzTool::usage ( ossimArgumentParser ap)
protected

Initializes arg parser and outputs usage.

◆ writeSlopeImage()

void ossimHlzTool::writeSlopeImage ( )
protected

Definition at line 529 of file ossimHlzTool.cpp.

References ossimConnectableObject::connectMyInputTo(), ossimImageFileWriter::execute(), ossimRefPtr< T >::get(), ossimChipProcTool::m_aoiViewRect, m_combinedElevSource, m_slopeFile, ossimNotify(), ossimNotifyLevel_INFO, ossimNotifyLevel_WARN, ossimImageFileWriter::setAreaOfInterest(), ossimImageFileWriter::setFilename(), and ossimTiffWriter::setGeotiffFlag().

530 {
531  // Set up the writer:
533  ossimTiffWriter* tif_writer = new ossimTiffWriter();
534  tif_writer->setGeotiffFlag(true);
535  tif_writer->setFilename(m_slopeFile);
536  writer = tif_writer;
539  if (writer->execute())
540  ossimNotify(ossimNotifyLevel_INFO)<<"Wrote slope image to <"<<m_slopeFile<<">."<<endl;
541  else
542  {
543  ossimNotify(ossimNotifyLevel_WARN)<<"ossimHLZUtil::writeSlopeImage() Error encountered "
544  "writing slope image to <"<<m_slopeFile<<">."<<endl;
545  }
546 }
virtual void setGeotiffFlag(bool flag)
ossimRefPtr< ossimImageSource > m_combinedElevSource
Definition: ossimHlzTool.h:90
virtual ossim_int32 connectMyInputTo(ossimConnectableObject *inputObject, bool makeOutputConnection=true, bool createEventFlag=true)
Will try to connect this objects input to the passed in object.
virtual void setFilename(const ossimFilename &file)
virtual void setAreaOfInterest(const ossimIrect &inputRect)
ossimFilename m_slopeFile
Definition: ossimHlzTool.h:81
OSSIMDLLEXPORT std::ostream & ossimNotify(ossimNotifyLevel level=ossimNotifyLevel_WARN)
virtual bool execute()
Calls: writeFile() writeMetaDataFiles()

Member Data Documentation

◆ d_accumT

double ossimHlzTool::d_accumT
protected

Definition at line 96 of file ossimHlzTool.h.

Referenced by computeHLZ().

◆ DESCRIPTION

const char * ossimHlzTool::DESCRIPTION
static
Initial value:
=
"Computes bitmap of helicopter landing zones given ROI and DEM."

Used by ossimUtilityFactory.

Definition at line 50 of file ossimHlzTool.h.

Referenced by ossimToolFactory::getCapabilities().

◆ m_badLzValue

ossim_uint8 ossimHlzTool::m_badLzValue
protected

Definition at line 86 of file ossimHlzTool.h.

◆ m_combinedElevSource

ossimRefPtr<ossimImageSource> ossimHlzTool::m_combinedElevSource
protected

Definition at line 90 of file ossimHlzTool.h.

Referenced by computeHLZ(), initProcessingChain(), and writeSlopeImage().

◆ m_demBuffer

ossimRefPtr<ossimImageData> ossimHlzTool::m_demBuffer
protected

Definition at line 83 of file ossimHlzTool.h.

Referenced by computeHLZ().

◆ m_demFilterSize

ossimIpt ossimHlzTool::m_demFilterSize
protected

◆ m_goodLzValue

ossim_uint8 ossimHlzTool::m_goodLzValue
protected

Definition at line 88 of file ossimHlzTool.h.

◆ m_hlzMinRadius

double ossimHlzTool::m_hlzMinRadius
protected

Definition at line 80 of file ossimHlzTool.h.

Referenced by computeHLZ().

◆ m_marginalLzValue

ossim_uint8 ossimHlzTool::m_marginalLzValue
protected

Definition at line 87 of file ossimHlzTool.h.

◆ m_maskSources

std::vector<MaskSource> ossimHlzTool::m_maskSources
protected

Definition at line 92 of file ossimHlzTool.h.

◆ m_memSource

ossimRefPtr<ossimMemoryImageSource> ossimHlzTool::m_memSource
protected

Definition at line 85 of file ossimHlzTool.h.

Referenced by computeHLZ(), and initProcessingChain().

◆ m_numThreads

ossim_uint32 ossimHlzTool::m_numThreads
protected

Definition at line 95 of file ossimHlzTool.h.

Referenced by computeHLZ().

◆ m_outBuffer

ossimRefPtr<ossimImageData> ossimHlzTool::m_outBuffer
protected

Definition at line 84 of file ossimHlzTool.h.

Referenced by computeHLZ(), and initProcessingChain().

◆ m_pcSources

std::vector< ossimRefPtr<ossimPointCloudHandler> > ossimHlzTool::m_pcSources
protected

Definition at line 91 of file ossimHlzTool.h.

◆ m_roughnessThreshold

double ossimHlzTool::m_roughnessThreshold
protected

Definition at line 79 of file ossimHlzTool.h.

◆ m_slopeFile

ossimFilename ossimHlzTool::m_slopeFile
protected

Definition at line 81 of file ossimHlzTool.h.

Referenced by initProcessingChain(), and writeSlopeImage().

◆ m_slopeThreshold

double ossimHlzTool::m_slopeThreshold
protected

Definition at line 78 of file ossimHlzTool.h.

◆ m_useLsFitMethod

bool ossimHlzTool::m_useLsFitMethod
protected

Definition at line 89 of file ossimHlzTool.h.

Referenced by computeHLZ(), and initProcessingChain().


The documentation for this class was generated from the following files: