Isis 3 Developer 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... | |
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).
|
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 |
References _FILEINFO_, Isis::FileName::expanded(), Isis::FileName::fileExists(), Isis::PvlObject::findGroup(), and Isis::PvlObject::Traverse.
Referenced by Isis::TiffImporter::convertProjection().
|
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. |
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::PvlContainer::Replace, 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 |
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::PvlContainer::Replace, 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 |
References Isis::Cube::label().
Referenced by Isis::Camera::Camera(), 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. |
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 |
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. |
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::PvlContainer::Replace, 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 |
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::PvlContainer::Replace, 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 |
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. |
References _FILEINFO_, Isis::PvlContainer::fileName(), Isis::PvlObject::findGroup(), Isis::Projection::SetUpperLeftCorner(), Isis::Projection::SetWorldMapper(), and Isis::PvlObject::Traverse.