Isis Developer Reference
|
Provides various tools to work with geos multipolygons. More...
#include <PolygonTools.h>
Public Member Functions | |
PolygonTools () | |
~PolygonTools () | |
Static Public Member Functions | |
static geos::geom::MultiPolygon * | LatLonToXY (const geos::geom::MultiPolygon &lonLatPoly, TProjection *proj) |
This method will return a geos::geom::MultiPolygon which contains the X/Y coordinates of the LonLat polygon. | |
static geos::geom::MultiPolygon * | XYToLatLon (const geos::geom::MultiPolygon &xYPoly, TProjection *proj) |
This method will return a geos::geom::MultiPolygon which contains the (Lon,Lat) coordinates of the XY polygon. | |
static geos::geom::MultiPolygon * | LatLonToSampleLine (const geos::geom::MultiPolygon &lonLatPoly, UniversalGroundMap *ugm) |
This method will return a geos::geom::MultiPolygon which contains the sample/line coordinates of the Lat/Lon polygon. | |
static geos::geom::MultiPolygon * | CopyMultiPolygon (const geos::geom::MultiPolygon *mpolygon) |
This static method will create a deep copy of a geos::geom::MultiPolygon. | |
static geos::geom::MultiPolygon * | CopyMultiPolygon (const geos::geom::MultiPolygon &mpolygon) |
This static method will create a deep copy of a geos::geom::MultiPolygon. | |
static geos::geom::MultiPolygon * | Despike (const geos::geom::Geometry *geom) |
This method attempts to convert the geom to a MultiPolygon and then despike it. | |
static geos::geom::MultiPolygon * | Despike (const geos::geom::MultiPolygon *multiPoly) |
Create a new multipolygon without the spikes associated with some versions of the geos package. | |
static geos::geom::LinearRing * | Despike (const geos::geom::LineString *linearRing) |
Create a new LinearRing from a LineString without the spikes associated with some versions of the geos package. | |
static geos::geom::MultiPolygon * | To180 (geos::geom::MultiPolygon *poly360) |
Convert polygon coordinates from 360 system to 180. | |
static QString | ToGML (const geos::geom::MultiPolygon *mpolygon, QString idString=QString("0"), QString schema=QString("")) |
Return the polygon with gml header. | |
static QString | GMLSchema () |
Return the gml schema. | |
static double | Thickness (const geos::geom::MultiPolygon *mpolygon) |
Calculates the thickness of a polygon using: thickness = area / max(Xextent,Yextent)**2 The provided polygon SHOULD be an XY polygon, not a lat/lon polygon, but this is not enforced. | |
static geos::geom::Geometry * | Intersect (const geos::geom::Geometry *geom1, const geos::geom::Geometry *geom2) |
This applies the geos Intersect operator. | |
static geos::geom::Geometry * | Difference (const geos::geom::Geometry *geom1, const geos::geom::Geometry *geom2) |
This method is used to subtract two polygons. | |
static geos::geom::MultiPolygon * | MakeMultiPolygon (const geos::geom::Geometry *geom) |
Make a geos::geom::MultiPolygon out of the components of the argument. | |
static QString | GetGeometryName (const geos::geom::Geometry *geom) |
This method returns the name of the type of geometry passed in. | |
static bool | Equal (const geos::geom::MultiPolygon *poly1, const geos::geom::MultiPolygon *poly2) |
static bool | Equal (const geos::geom::Polygon *poly1, const geos::geom::Polygon *poly2) |
static bool | Equal (const geos::geom::LineString *lineString1, const geos::geom::LineString *lineString2) |
static bool | Equal (const geos::geom::Coordinate &coord1, const geos::geom::Coordinate &coord2) |
static bool | Equal (const double d1, const double d2) |
static geos::geom::MultiPolygon * | FixSeam (const geos::geom::MultiPolygon *poly) |
static geos::geom::MultiPolygon * | FixSeam (const geos::geom::Polygon *polyA, const geos::geom::Polygon *polyB) |
static geos::geom::Geometry * | ReducePrecision (const geos::geom::Geometry *geom, unsigned int precision) |
This method reduces the precision of the geometry to precision significant figures. | |
static geos::geom::MultiPolygon * | ReducePrecision (const geos::geom::MultiPolygon *poly, unsigned int precision) |
This method reduces the precision of the MultiPolygon to precision significant figures. | |
static geos::geom::Polygon * | ReducePrecision (const geos::geom::Polygon *poly, unsigned int precision) |
This method reduces the precision of the Polygon to precision significant figures. | |
static geos::geom::LinearRing * | ReducePrecision (const geos::geom::LinearRing *ring, unsigned int precision) |
This method reduces the precision of the LinearRing to precision significant figures. | |
static geos::geom::Coordinate * | ReducePrecision (const geos::geom::Coordinate *coord, unsigned int precision) |
This method reduces the precision of the coordinate to precision significant figures. | |
static double | ReducePrecision (double num, unsigned int precision) |
This method will reduce the decimal precision of the inputted num to precision decimal places. | |
static geos::geom::MultiPolygon * | FixPolePolygon (const geos::geom::MultiPolygon *polePolygon, UniversalGroundMap *ugm) |
static geos::geom::MultiPolygon * | SplitPolygonOn360 (const geos::geom::Polygon *inPoly) |
If the cube crosses the 0/360 boundary and does not include a pole, this will divide the polygon into multiple polygons (one for each time the polygon crosses the boundry and back). | |
Provides various tools to work with geos multipolygons.
This class provides methods to that work with geos multipolygons. This includes functions to convert from one coordinate system to another and to copy multipolygons.
Isis::PolygonTools::PolygonTools | ( | ) |
Isis::PolygonTools::~PolygonTools | ( | ) |
|
static |
This static method will create a deep copy of a geos::geom::MultiPolygon.
The caller assumes responsibility for the memory associated with the new polygon.
mpolygon | The multipolygon to be copied. |
References Isis::globalFactory.
|
static |
This static method will create a deep copy of a geos::geom::MultiPolygon.
The caller assumes responsibility for the memory associated with the new polygon.
mpolygon | The multipolygon to be copied. |
References Isis::globalFactory.
Referenced by Isis::Chip::SetClipPolygon(), Isis::InterestOperator::SetClipPolygon(), Isis::ImageOverlap::SetPolygon(), and Isis::ImageOverlap::SetPolygon().
|
static |
This method attempts to convert the geom to a MultiPolygon and then despike it.
This method does not take ownership of the argument geom. The ownership of the return value is given to the caller.
geom |
References Despike(), and MakeMultiPolygon().
Referenced by Despike(), Despike(), Isis::ImageOverlapSet::FindAllOverlaps(), Isis::ImageOverlapSet::FindImageOverlaps(), LatLonToSampleLine(), LatLonToXY(), ReducePrecision(), and XYToLatLon().
|
static |
Create a new LinearRing from a LineString without the spikes associated with some versions of the geos package.
These "spikes" are created when intersections and differences are calculated.
lineString | The original geos::geom::lineString to be despiked. This can be the lineString associated with the outside of a polygon or one of its holes. |
References Isis::globalFactory.
|
static |
Create a new multipolygon without the spikes associated with some versions of the geos package.
This method does not take ownership of the argument multiPoly. The ownership of the return value is given to the caller.
multiPoly | The original geos::geom::MultiPolygon to be despiked. |
References _FILEINFO_, Despike(), Isis::globalFactory, and Isis::IException::Programmer.
|
static |
This method is used to subtract two polygons.
geom1 | |
geom2 |
References _FILEINFO_, and Isis::IException::Programmer.
Referenced by Isis::ImageOverlapSet::FindAllOverlaps().
|
static |
|
static |
References Equal().
|
static |
References Equal().
|
static |
|
static |
References Equal().
|
static |
|
static |
References FixSeam(), and Isis::globalFactory.
|
static |
References Isis::globalFactory, MakeMultiPolygon(), and ReducePrecision().
|
static |
This method returns the name of the type of geometry passed in.
This is useful for error reporting (i.e. Geometry Type [...] not supported).
geom | The geometry to test which type it really is |
Referenced by ReducePrecision().
|
static |
Return the gml schema.
|
static |
This applies the geos Intersect operator.
Due to "BinaryOp.h" having implementations in it, only one Isis object may perform these operations. If that file is included anywhere else in Isis, the library will not build! Please use this method to intersect two geometries. If the geometry is a linear ring or multi polygon, corrections may be applied if the geos intersection operator fails.
geom1 | First geometry to intersect |
geom2 | Second geometry to intersect |
References _FILEINFO_, and Isis::IException::Programmer.
Referenced by Isis::ImageOverlapSet::FindAllOverlaps(), Isis::InterestOperator::FindOverlapByImageFootPrint(), SplitPolygonOn360(), and To180().
|
static |
This method will return a geos::geom::MultiPolygon which contains the sample/line coordinates of the Lat/Lon polygon.
The Lat/Lon polygon must have coordinates (x direction, y direction) or (Lon,Lat).
lonLatPolygon | A multipolygon in (Lon,Lat order) |
ugm | The UniversalGroundMap to be used to convert the Lons and Lat to Samples and Lines |
References _FILEINFO_, Despike(), Isis::globalFactory, Isis::IException::Programmer, and Isis::IException::Unknown.
Referenced by Isis::InterestOperator::InterestByPoint().
|
static |
This method will return a geos::geom::MultiPolygon which contains the X/Y coordinates of the LonLat polygon.
The Lat/Lon polygon must have coordinates (x direction, y direction) or (Lon,Lat).
lonLatPolygon | A multipolygon in (Lon,Lat) order |
projection | The projection to be used to convert the Lons and Lat to X and Y |
References _FILEINFO_, Despike(), Isis::globalFactory, Isis::IException::Programmer, Isis::TProjection::SetGround(), Isis::Projection::XCoord(), and Isis::Projection::YCoord().
|
static |
Make a geos::geom::MultiPolygon out of the components of the argument.
Create a new geos::geom::MultiPolygon out of the general geometry that is passed in. This can be useful after an intersection or some other operator on two MultiPolygons. The result of the operator is often a collection of different geometries such as points, lines, polygons... This member extracts all polygons and multipolygons into a new multipolygon. The original geometry is deleted. The resulting multipolygon is not necessarily valid.
geom | The geometry to be converted into a multipolygon |
References Isis::globalFactory, and MakeMultiPolygon().
Referenced by Isis::Chip::Chip(), Despike(), Isis::ImageOverlapSet::FindAllOverlaps(), Isis::ImageOverlapSet::FindImageOverlaps(), Isis::InterestOperator::FindOverlapByImageFootPrint(), FixSeam(), Isis::UniversalGroundMap::GroundRange(), Isis::ImageOverlap::ImageOverlap(), Isis::ImagePolygon::ImagePolygon(), MakeMultiPolygon(), Isis::Chip::operator=(), ReducePrecision(), SplitPolygonOn360(), and To180().
|
static |
This method reduces the precision of the coordinate to precision significant figures.
coord | The coordinate to reduce precision on |
precision | The precision to reduce to |
References ReducePrecision().
|
static |
This method reduces the precision of the geometry to precision significant figures.
geom | The geometry to reduce precision on |
precision | The precision to reduce to |
References _FILEINFO_, GetGeometryName(), MakeMultiPolygon(), Isis::IException::Programmer, and ReducePrecision().
Referenced by FixSeam(), ReducePrecision(), ReducePrecision(), ReducePrecision(), ReducePrecision(), and ReducePrecision().
|
static |
This method reduces the precision of the LinearRing to precision significant figures.
ring | The linear ring to reduce precision on |
precision | The precision to reduce to |
References _FILEINFO_, Despike(), Isis::globalFactory, Isis::IException::Programmer, and ReducePrecision().
|
static |
This method reduces the precision of the MultiPolygon to precision significant figures.
poly | The MultiPolygon to reduce precision on |
precision | The precision to reduce to |
References Isis::globalFactory, and ReducePrecision().
|
static |
This method reduces the precision of the Polygon to precision significant figures.
poly | The polygon to reduce precision on |
precision | The precision to reduce to |
References _FILEINFO_, Isis::globalFactory, Isis::IException::Programmer, and ReducePrecision().
|
static |
This method will reduce the decimal precision of the inputted num to precision decimal places.
num | The original number |
precision | The new precision |
|
static |
If the cube crosses the 0/360 boundary and does not include a pole, this will divide the polygon into multiple polygons (one for each time the polygon crosses the boundry and back).
These polygons are put into a geos Multipolygon. If the cube does not cross the 0/360 boundary then the returned Multipolygon will contain a single Polygon.
polygon | projection The projection to be used to convert the Xs and Ys to Lon and Lats |
References _FILEINFO_, Isis::globalFactory, Intersect(), MakeMultiPolygon(), and Isis::IException::Unknown.
Referenced by Isis::ProcessGroundPolygons::Rasterize().
|
static |
Calculates the thickness of a polygon using: thickness = area / max(Xextent,Yextent)**2 The provided polygon SHOULD be an XY polygon, not a lat/lon polygon, but this is not enforced.
mpolygon | The XY polygon to calculate the thickness of |
|
static |
Convert polygon coordinates from 360 system to 180.
[in] | poly360 | (geos::geom::MultiPolygon)poly split by 360 boundary |
References _FILEINFO_, FixSeam(), Isis::globalFactory, Intersect(), MakeMultiPolygon(), and Isis::IException::Programmer.
Referenced by Isis::MosaicSceneItem::reproject().
|
static |
Return the polygon with gml header.
[in] | mpolygon | Polygon with lat/lon vertices |
idString | mpolygon's Id |
|
static |
This method will return a geos::geom::MultiPolygon which contains the (Lon,Lat) coordinates of the XY polygon.
The Lat/Lon polygon will have coordinates (x direction, y direction) or (Lon,Lat).
xYPolygon | A multipolygon in (X,Y) order |
projection | The projection to be used to convert the Xs and Ys to Lon and Lats |
References _FILEINFO_, Despike(), Isis::globalFactory, Isis::TProjection::Latitude(), Isis::TProjection::Longitude(), Isis::IException::Programmer, and Isis::Projection::SetWorld().