Isis 3 Programmer Reference
|
Initialize a map projection. More...
#include <ProjectionFactory.h>
Static Public Member Functions | |
static Isis::Projection * | Create (Isis::Pvl &label, bool allowDefaults=false) |
This method returns a pointer to a Projection object. More... | |
static Isis::Projection * | RingsCreate (Isis::Pvl &label, bool allowDefaults=false) |
This method returns a pointer to a RingPlaneProjection object. More... | |
static Isis::Projection * | CreateFromCube (Isis::Cube &cube) |
This method is a helper method. More... | |
static Isis::Projection * | RingsCreateFromCube (Isis::Cube &cube) |
This method is a helper method. More... | |
static Isis::Projection * | CreateFromCube (Isis::Pvl &label) |
This method loads a map projection from a cube returning a pointer to a Projection object. More... | |
static Isis::Projection * | RingsCreateFromCube (Isis::Pvl &label) |
This method loads a map projection from a cube returning a pointer to a Projection object. More... | |
static Isis::Projection * | CreateForCube (Isis::Pvl &label, int &ns, int &nl, bool sizeMatch=true) |
This method creates a map projection for a cube given a label. More... | |
static Isis::Projection * | RingsCreateForCube (Isis::Pvl &label, int &samples, int &lines, bool sizeMatch) |
This method creates a projection for a cube to a ring plane given a label. More... | |
static Isis::Projection * | CreateForCube (Isis::Pvl &label, int &samples, int &lines, Camera &cam) |
Create a map projection group for a cube using a camera. More... | |
static Isis::Projection * | RingsCreateForCube (Isis::Pvl &label, int &samples, int &lines, Camera &cam) |
Create a ring plane map projection group for a cube using a camera. More... | |
Private Member Functions | |
ProjectionFactory () | |
Constructor (Its private, so you cannot use it.) Use the Create method instead. More... | |
~ProjectionFactory () | |
Destroys the ProjectionFactory object. More... | |
Static Private Attributes | |
static Plugin | m_projPlugin |
Initialize a map projection.
This factory class is used to obtain a Projection object given a PVL which contains a valid Mapping group. The Mapping group can come from an image/cube or a hand-created PVL file. The projection is loaded based on information using the ProjectionName contained in the Mapping group. It is plugin oriented. That is, this class looks in $ISISROOT/lib/Projection.plugin to convert the ProjectionName into a pointer to the appropriate projection class (e.g., Sinusoidal, SimpleCylindrical). This allows programmers who develop new projection to create a plugin without the need for recompiling all the Isis cartographic programs (cam2map, map2map, mappos, etc).
2005-06-22 Elizabeth Ribelin - Merged ProjectionManager and CubeProjection into a single class
2006-01-27 Jacob Danton - Renamed PixelMapper to PFPixelMapper
2006-05-19 Elizabeth Miller - Depricated ProjectionManager and CubeProjection. Renamed ProjectionManager.plugin to Projection.plugin
2006-09-07 Elizabeth Miller - Added the bool sizeMatch parameter to CreateForCube()
2007-03-13 Jeff Anderson - Added new method CreateForCube using a camera
2007-06-29 Steven Lambright - Removed TrueScaleLatitude keyword from CreateForCube methods, added units to Scale and PixelResolution keywords
2008-06-18 Steven Koechle - Fixed Documentation Error
2009-06-18 Jeff Anderson - Modified the CreateForCube method to make sure extra pixels were not included in the image size due to machine precision roundoff problems.
2011-02-10 Jai Rideout - UpperLeftCornerX and UpperLeftCornerY are now set in projection mapping group via the new SetUpperLeftCorner method in Projection.
2011-05-23 Jannet Barrett and Steven Lambright - Added m_projPlugin to reduce cost of instantiating Projections.
2013-03-13 Debbie A. Cook - Modified to differentiate between Project subclasses: TProjection and RingPlaneProjection.
2013-05-09 Jeannie Backer - Modified CreateForCube and RingsCreateForCube() methods to ensure that the distances from the MinimumX to the MaximumX and from the MinimumY to the MaximumY are at least one pixel resolution. This ensures that the created cube will have at least one sample and at least one line. References #775.
2014-01-16 Kimberly Oyama - Updated the error messages for unsupported projections to include the source of the error. Fixes #988.
2016-09-02 Tyler Wilson - Fixed a bug in the CreateForCube function because it was producing an unequal number of lines/samples for maps from projections that are symmetric about the prime meridian or the equator. Fixes #2245.
Definition at line 91 of file ProjectionFactory.h.
|
inlineprivate |
Constructor (Its private, so you cannot use it.) Use the Create method instead.
Definition at line 117 of file ProjectionFactory.h.
|
inlineprivate |
Destroys the ProjectionFactory object.
Definition at line 120 of file ProjectionFactory.h.
|
static |
This method returns a pointer to a Projection object.
The projection is intialized using information contained in a Label object. The information must be a valid Mapping group as defined in the Isis Map Projection Users Guide.
label | The label object containing a valid mapping group. |
allowDefaults | If false then the projection class as indicated by the ProjectionName keyword will require that projection specific parameters such as CenterLatitude, CenterLongitude, etc must be in the Pvl label object. Otherwise if true then those parameters that are not in the Pvl object will be initialized using the latitude/longitude range. |
Isis::iException::System | - Unsupported projection, unable to find plugin |
Definition at line 67 of file ProjectionFactory.cpp.
References _FILEINFO_, Isis::FileName::expanded(), Isis::FileName::fileExists(), Isis::PvlObject::findGroup(), and Isis::PvlObject::Traverse.
Referenced by Isis::TiffImporter::convertProjection(), and Isis::ProjectionConfigDialog::createProjection().
|
static |
This method creates a map projection for a cube given a label.
The label must contain all the proper mapping information (radii, projection name, parameters, pixel resolution, etc). If the labels contain a Cube group and the Mapping group already has the upper left corner, then the values in the label will be used to set the cube size. If they don't exist then the minimum/maximum latitude/longitude values (ground range) are expected to be in the Mapping group and will be used to compute the cube size and upper left corner values.
label | A label containing valid map projection information for a cube. |
samples | The number of samples. This value is calculated in the method and returned. |
lines | The number of lines. This value is calculated in the method and returned. |
sizeMatch | Boolean value that determines whether the method should match the size of the output cube to the size of the input cube. This parameter defaults to true. |
Definition at line 204 of file ProjectionFactory.cpp.
References _FILEINFO_, Isis::PvlContainer::addKeyword(), Isis::IException::append(), Isis::PvlContainer::fileName(), Isis::PvlObject::findGroup(), Isis::Projection::HasGroundRange(), Isis::PvlObject::hasObject(), Isis::TProjection::LocalRadius(), Isis::Null, Isis::PI, Isis::Projection::SetUpperLeftCorner(), Isis::Projection::SetWorldMapper(), Isis::toString(), Isis::PvlObject::Traverse, Isis::TProjection::TrueScaleLatitude(), and Isis::TProjection::XYRange().
Referenced by Isis::ProcessMapMosaic::SetOutputCube().
|
static |
Create a map projection group for a cube using a camera.
This method walks the boundary of the cube computing lat/lons and then uses those lat/lon as input to the projection to compute a x/y range. This x/y range will be minimal (compared to the alternate CreateForCube method and generates significantly small cube size (samples,lines) depending on the projection. Projections with curved meridians and/or parallels generate larger x/y ranges when only looking at the ground range.
label | A label containing valid map projection information for a cube. |
samples | The number of samples. This value is calculated in the method and returned. |
lines | The number of lines. This value is calculated in the method and returned. |
cam | An initialized camera model |
Definition at line 637 of file ProjectionFactory.cpp.
References _FILEINFO_, Isis::PvlContainer::addKeyword(), Isis::Camera::Bands(), Isis::PvlContainer::fileName(), Isis::PvlObject::findGroup(), Isis::Camera::IsBandIndependent(), Isis::Projection::IsGood(), Isis::Camera::Line(), Isis::Camera::Lines(), Isis::TProjection::LocalRadius(), Isis::PI, Isis::Camera::Sample(), Isis::Camera::Samples(), Isis::Camera::SetBand(), Isis::Camera::SetImage(), Isis::Camera::SetUniversalGround(), Isis::TProjection::SetUniversalGround(), Isis::Projection::SetUpperLeftCorner(), Isis::Projection::SetWorldMapper(), Isis::toString(), Isis::PvlObject::Traverse, Isis::TProjection::TrueScaleLatitude(), Isis::Sensor::UniversalLatitude(), Isis::Sensor::UniversalLongitude(), Isis::Projection::XCoord(), and Isis::Projection::YCoord().
|
static |
This method is a helper method.
See CreateFromCube(Pvl).
cube | A cube containing valid map projection information |
Definition at line 1085 of file ProjectionFactory.cpp.
References Isis::Cube::label().
Referenced by Isis::Camera::Camera(), Isis::QnetTool::openGround(), Isis::ProcessMapMosaic::RingsSetOutputCube(), Isis::ProcessMapMosaic::SetOutputCube(), and Isis::UniversalGroundMap::UniversalGroundMap().
|
static |
This method loads a map projection from a cube returning a pointer to a Projection object.
label | A label containing valid map projection information for a cube. |
Definition at line 1111 of file ProjectionFactory.cpp.
References _FILEINFO_, Isis::PvlContainer::fileName(), Isis::PvlObject::findGroup(), Isis::Projection::SetUpperLeftCorner(), Isis::Projection::SetWorldMapper(), and Isis::PvlObject::Traverse.
|
static |
This method returns a pointer to a RingPlaneProjection object.
The projection is intialized using information contained in a Label object. The information must be a valid Mapping group as defined in the Isis Map Projection Users Guide.
label | The label object containing a valid mapping group. |
allowDefaults | If false then the projection class as indicated by the ProjectionName keyword will require that projection specific parameters such as CenterRadius, CenterRingLongitude, etc must be in the Pvl label object. Otherwise if true then those parameters that are not in the Pvl object will be initialized using the latitude/longitude range. |
Isis::iException::System | - Unsupported projection, unable to find plugin |
Definition at line 135 of file ProjectionFactory.cpp.
References _FILEINFO_, Isis::FileName::expanded(), Isis::FileName::fileExists(), Isis::PvlObject::findGroup(), and Isis::PvlObject::Traverse.
|
static |
This method creates a projection for a cube to a ring plane given a label.
Currently this is utilized only for projecting images of rings to the ring plane (i.e the equatorial plane). The label must contain all the proper mapping information (radii, projection name, parameters, pixel resolution, etc). If the labels contain a Cube group and the Mapping group already has the upper left corner, then the values in the label will be used to set the cube size. If they don't exist then the minimum/maximum latitude/longitude values (ground range) are expected to be in the Mapping group and will be used to compute the cube size and upper left corner values.
label | A label containing valid map projection information for a cube. |
samples | The number of samples. This value is calculated in the method and returned. |
lines | The number of lines. This value is calculated in the method and returned. |
sizeMatch | Boolean value specifying whether the method should match the size of the output cube to the size of the input cube. Defaults to true. |
Definition at line 448 of file ProjectionFactory.cpp.
References _FILEINFO_, Isis::PvlContainer::addKeyword(), Isis::IException::append(), Isis::PvlContainer::fileName(), Isis::PvlObject::findGroup(), Isis::Projection::HasGroundRange(), Isis::PvlObject::hasObject(), Isis::Null, Isis::PI, Isis::Projection::SetUpperLeftCorner(), Isis::Projection::SetWorldMapper(), Isis::toString(), Isis::PvlObject::Traverse, Isis::RingPlaneProjection::TrueScaleRingRadius(), and Isis::RingPlaneProjection::XYRange().
Referenced by Isis::ProcessMapMosaic::RingsSetOutputCube().
|
static |
Create a ring plane map projection group for a cube using a camera.
This method walks the boundary of the cube computing lat/lons and then uses those lat/lon as input to the projection to compute a x/y range. This x/y range will be minimal (compared to the alternate CreateForCube method and generates significantly small cube size (samples,lines) depending on the projection. Projections with curved meridians and/or parallels generate larger x/y ranges when only looking at the ground range.
label | A label containing valid map projection information for a cube. |
samples | The number of samples. This value is calculated in the method and returned. |
lines | The number of lines. This value is calculated in the method and returned. |
cam | An initialized camera model |
Definition at line 888 of file ProjectionFactory.cpp.
References _FILEINFO_, Isis::PvlContainer::addKeyword(), Isis::IException::append(), Isis::Camera::Bands(), Isis::PvlContainer::fileName(), Isis::PvlObject::findGroup(), Isis::Camera::IsBandIndependent(), Isis::Projection::IsGood(), Isis::Camera::Lines(), Isis::Sensor::LocalRadius(), Isis::Distance::meters(), Isis::PI, Isis::Camera::Samples(), Isis::Camera::SetBand(), Isis::RingPlaneProjection::SetGround(), Isis::Camera::SetImage(), Isis::Projection::SetUpperLeftCorner(), Isis::Projection::SetWorldMapper(), Isis::toString(), Isis::PvlObject::Traverse, Isis::RingPlaneProjection::TrueScaleRingRadius(), Isis::Sensor::UniversalLongitude(), Isis::Projection::XCoord(), and Isis::Projection::YCoord().
|
static |
This method is a helper method.
See RingsCreateFromCube(Pvl).
cube | A cube containing valid map projection information |
Definition at line 1097 of file ProjectionFactory.cpp.
References Isis::Cube::label().
Referenced by Isis::ProcessMapMosaic::RingsSetOutputCube().
|
static |
This method loads a map projection from a cube returning a pointer to a Projection object.
label | A label containing valid map projection information for a cube. |
Definition at line 1150 of file ProjectionFactory.cpp.
References _FILEINFO_, Isis::PvlContainer::fileName(), Isis::PvlObject::findGroup(), Isis::Projection::SetUpperLeftCorner(), Isis::Projection::SetWorldMapper(), and Isis::PvlObject::Traverse.