Isis 3.0
Back | Home
ImageOverlapSet.h
Go to the documentation of this file.
1 #ifndef ImageOverlapSet_h
2 #define ImageOverlapSet_h
3 
26 #include <vector>
27 #include <string>
28 
29 #include <QList>
30 #include <QThread>
31 #include <QMutex>
32 
33 #include "geos/geom/MultiPolygon.h"
34 #include "geos/geom/LinearRing.h"
35 #include "geos/util/GEOSException.h"
36 
37 #include "ImageOverlap.h"
38 #include "IException.h"
39 #include "PvlGroup.h"
40 
41 namespace Isis {
42 
43  // Forward declarations
44  class SerialNumberList;
45 
100  class ImageOverlapSet : private QThread {
101  public:
102  ImageOverlapSet(bool continueOnError = false);
103  virtual ~ImageOverlapSet();
104 
105  void FindImageOverlaps(SerialNumberList &boundaries);
106  void FindImageOverlaps(std::vector<QString> sns,
107  std::vector<geos::geom::MultiPolygon *> polygons);
108  void FindImageOverlaps(SerialNumberList &boundaries, QString outputFile);
109  void ReadImageOverlaps(const QString &filename);
110  void WriteImageOverlaps(const QString &filename);
111 
117  int Size() {
118  return p_lonLatOverlaps.size();
119  }
120 
129  const ImageOverlap *operator[](int index) {
130  return p_lonLatOverlaps[index];
131  };
132 
133  std::vector<ImageOverlap *> operator[](QString serialNumber);
134 
136  const std::vector<PvlGroup> &Errors() {
137  return p_errorLog;
138  }
139  protected:
140  void FindAllOverlaps(SerialNumberList *snlist = NULL);
141  void AddSerialNumbers(ImageOverlap *to, ImageOverlap *from);
142 
144  std::vector<PvlGroup> p_errorLog;
145 
146  private:
148  void run() {
149  FindAllOverlaps(p_snlist);
150  }
151 
152  void DespikeLonLatOverlaps();
153 
154  QList<ImageOverlap *> p_lonLatOverlaps;
155 
156  ImageOverlap *CreateNewOverlap(QString serialNumber,
157  geos::geom::MultiPolygon *lonLatPolygon);
158 
159  bool SetPolygon(geos::geom::Geometry *poly, int position, ImageOverlap *sncopy = NULL, bool insert = false);
160  void HandleError(IException &e, SerialNumberList *snlist, QString msg = "", int overlap1 = -1, int overlap2 = -1);
161  void HandleError(geos::util::GEOSException *exc, SerialNumberList *snlist, QString msg = "", int overlap1 = -1, int overlap2 = -1);
162  void HandleError(SerialNumberList *snlist, QString msg, int overlap1 = -1, int overlap2 = -1);
163 
164  bool p_continueAfterError;
165  bool p_threadedCalculate;
166  int p_writtenSoFar;
167  int p_calculatedSoFar;
168 
170  SerialNumberList *p_snlist;
171 
179  QMutex p_calculatePolygonMutex;
180  QMutex p_lonLatOverlapsMutex;
181  };
182 };
183 
184 #endif
std::vector< PvlGroup > p_errorLog
This is a list of detailed* errors including all known information.
Definition: ImageOverlapSet.h:144
void ReadImageOverlaps(const QString &filename)
Create polygons of overlap from the file specified.
Definition: ImageOverlapSet.cpp:328
ImageOverlapSet(bool continueOnError=false)
Create FindImageOverlaps object.
Definition: ImageOverlapSet.cpp:36
virtual ~ImageOverlapSet()
Delete this object.
Definition: ImageOverlapSet.cpp:52
int Size()
Returns the total number of latitude and longitude overlaps.
Definition: ImageOverlapSet.h:117
void WriteImageOverlaps(const QString &filename)
Write polygons of overlap to the file specified.
Definition: ImageOverlapSet.cpp:446
This class is used to find the overlaps between all the images in a list of serial numbers...
Definition: ImageOverlapSet.h:100
void AddSerialNumbers(ImageOverlap *to, ImageOverlap *from)
Add the serial numbers from the second overlap to the first.
Definition: ImageOverlapSet.cpp:824
void FindAllOverlaps(SerialNumberList *snlist=NULL)
Find the overlaps between all the existing ImageOverlap Objects.
Definition: ImageOverlapSet.cpp:540
const std::vector< PvlGroup > & Errors()
Return the a list of errors encountered.
Definition: ImageOverlapSet.h:136
Isis exception class.
Definition: IException.h:99
Definition: BoxcarCachingAlgorithm.h:29
Individual overlap container.
Definition: ImageOverlap.h:56
void FindImageOverlaps(SerialNumberList &boundaries)
Create polygons of overlap from the images specified in the serial number list.
Definition: ImageOverlapSet.cpp:71
Serial Number list generator.
Definition: SerialNumberList.h:78
const ImageOverlap * operator[](int index)
Returns the images which overlap at a given loverlap.
Definition: ImageOverlapSet.h:129

U.S. Department of the Interior | U.S. Geological Survey
ISIS | Privacy & Disclaimers | Astrogeology Research Program
To contact us, please post comments and questions on the ISIS Support Center
File Modified: 07/12/2023 23:20:17