File failed to load: https://isis.astrogeology.usgs.gov/7.2.0/Object/assets/jax/output/NativeMML/config.js
Isis Developer Reference
ImagePolygon.h
Go to the documentation of this file.
1#ifndef ImagePolygon_h
2#define ImagePolygon_h
8/* SPDX-License-Identifier: CC0-1.0 */
9
10#include <string>
11#include <sstream>
12#include <vector>
13
14#include "IException.h"
15#include "Cube.h"
16#include "Brick.h"
17#include "Blob.h"
18#include "Camera.h"
19#include "Projection.h"
20#include "UniversalGroundMap.h"
21#include "Blob.h"
22#include "geos/geom/Coordinate.h"
23#include "geos/geom/MultiPolygon.h"
24#include "geos/geom/CoordinateSequence.h"
25
26namespace Isis {
27
154
155 public:
156 ImagePolygon();
157 ImagePolygon(Blob &blob);
159
160 void Create(Cube &cube, int sinc = 1, int linc = 1,
161 int ss = 1, int sl = 1, int ns = 0, int nl = 0, int band = 1,
162 bool increasePrecision = false);
163
164 void Create(std::vector<std::vector<double>> polyCoordinates);
165
166 Camera * initCube(Cube &cube, int ss = 1, int sl = 1,
167 int ns = 0, int nl = 0, int band = 1);
168
174 void Emission(double emission) {
175 p_emission = emission;
176 }
182 void Incidence(double incidence) {
183 p_incidence = incidence;
184 }
185
192 void EllipsoidLimb(bool ellip) {
193 p_ellipsoid = ellip;
194 }
195
205 void SubpixelAccuracy(int div) {
206 p_subpixelAccuracy = div;
207 }
208
210 geos::geom::MultiPolygon *Polys() {
211 return p_polygons;
212 };
213
215 std::string polyStr() const {
216 return p_polyStr;
217 };
218
219 double validSampleDim();
220 double validLineDim();
221
223 int getSinc() const {
224 return p_sampinc;
225 }
226
228 int getLinc() const {
229 return p_lineinc;
230 }
231
232 int numVertices() const {
233 return p_pts->size();
234 }
235
236 Blob toBlob() const;
237
238 private:
239 // Please do not add new polygon manipulation methods to this class.
240 // Polygon manipulation should be done in the PolygonTools class.
241 bool SetImage(const double sample, const double line);
242
243 geos::geom::Coordinate FindFirstPoint();
244 void WalkPoly();
245 geos::geom::Coordinate FindNextPoint(geos::geom::Coordinate *currentPoint,
246 geos::geom::Coordinate lastPoint,
247 int recursionDepth = 0);
248
249 double DistanceSquared(const geos::geom::Coordinate *p1, const geos::geom::Coordinate *p2);
250
251 void MoveBackInsideImage(double &sample, double &line, double sinc, double linc);
252 bool InsideImage(double sample, double line);
253 void Fix360Poly();
254 void FixPolePoly(std::vector<geos::geom::Coordinate> *crossingPoints);
255
256 bool IsLimb();
257 geos::geom::Coordinate FindBestPoint(geos::geom::Coordinate *currentPoint,
258 geos::geom::Coordinate newPoint,
259 geos::geom::Coordinate lastPoint);
260 geos::geom::Coordinate FixCornerSkip(geos::geom::Coordinate *currentPoint,
261 geos::geom::Coordinate newPoint);
262
263 void FindSubpixel(std::vector<geos::geom::Coordinate> & points);
264
265 void calcImageBorderCoordinates();
266
267 Cube *p_cube;
268 bool p_isProjected;
269
270 Brick *p_brick;
271
272 geos::geom::CoordinateSequence *p_pts;
273
274 geos::geom::MultiPolygon *p_polygons;
275
276 std::string p_polyStr;
277
278 UniversalGroundMap *p_gMap;
279
280 geos::geom::Coordinate *m_leftCoord;
281 geos::geom::Coordinate *m_rightCoord;
282 geos::geom::Coordinate *m_topCoord;
283 geos::geom::Coordinate *m_botCoord;
284
285 int p_cubeStartSamp;
286 int p_cubeStartLine;
287 int p_cubeSamps;
288 int p_cubeLines;
289
290 int p_sampinc;
291 int p_lineinc;
292
293 double p_emission;
294 double p_incidence;
295 bool p_ellipsoid;
296
297 int p_subpixelAccuracy;
298
299 };
300};
301
302#endif
Definition: Blob.h:51
Buffer for containing a three dimensional section of an image.
Definition: Brick.h:45
Definition: Camera.h:236
IO Handler for Isis Cubes.
Definition: Cube.h:168
Create cube polygons, read/write polygons to blobs.
Definition: ImagePolygon.h:153
double validSampleDim()
Retuns the maximum valid sample width of the cube set with either initCube() or Create()
Definition: ImagePolygon.cpp:553
void EllipsoidLimb(bool ellip)
If a limb is detected, use un ellipsoid shape model if true.
Definition: ImagePolygon.h:192
void Create(Cube &cube, int sinc=1, int linc=1, int ss=1, int sl=1, int ns=0, int nl=0, int band=1, bool increasePrecision=false)
Create a Polygon from given cube.
Definition: ImagePolygon.cpp:215
int getLinc() const
Return the line increment used the create this polygon.
Definition: ImagePolygon.h:228
ImagePolygon()
Constructs a Polygon object, setting the polygon name.
Definition: ImagePolygon.cpp:38
void Emission(double emission)
Set the maximum emission angle ( light refleted to camera )
Definition: ImagePolygon.h:174
Camera * initCube(Cube &cube, int ss=1, int sl=1, int ns=0, int nl=0, int band=1)
Create a Polygon from given cube.
Definition: ImagePolygon.cpp:119
geos::geom::MultiPolygon * Polys()
Return a geos Multipolygon.
Definition: ImagePolygon.h:210
~ImagePolygon()
Destroys the Polygon object.
Definition: ImagePolygon.cpp:84
std::string polyStr() const
Return a geos Multipolygon.
Definition: ImagePolygon.h:215
double validLineDim()
Retuns the maximum valid line width of the cube set with either initCube() or Create()
Definition: ImagePolygon.cpp:568
Blob toBlob() const
Serialize the ImagePolygon to a Blob.
Definition: ImagePolygon.cpp:1350
int numVertices() const
Definition: ImagePolygon.h:232
void SubpixelAccuracy(int div)
The subpixel accuracy to use.
Definition: ImagePolygon.h:205
int getSinc() const
Return the sample increment used the create this polygon.
Definition: ImagePolygon.h:223
void Incidence(double incidence)
Set the maximum incidence angle ( light contacting the planet )
Definition: ImagePolygon.h:182
Universal Ground Map.
Definition: UniversalGroundMap.h:69
This is free and unencumbered software released into the public domain.
Definition: Apollo.h:16

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 USGS Astrogeology Discussion Board
To report a bug, or suggest a feature go to: ISIS Github
File Modified: 02/21/2025 22:09:04