Home

Quick Links

Software Manual
GitHub
API Reference

Documentation Versions

Latest Release
Dev
8.3.0
8.2.0
8.1.0
8.0.0
7.2.0
7.1.0
7.0.0
6.0.0
3.9.0
3.5.0
USGS

ISIS Application Documentation


cam2map

Printer Friendly View | TOC | Home

Convert camera image to a map projection

Overview Parameters Example 1 Example 2 Example 3 Example 4 Example 5 Example 6 Example 7 Example 8

Description

This program projects an ISIS level0 or level1 cube to a map (ISIS level2 cube). The input cube requires SPICE data and therefore spiceinit should be executed prior to running cam2map. The map projection is defined using a PVL file which is specified in cam2map in the MAP parameter. Note: the system defaults to the Sinusoidal projection (ISIS projection based templates are located in $ISISROOT/appdata/templates/maps). To learn more about using map projections in ISIS, refer to the ISIS Workshop "Learning About Map Projections".

If you only entered the input cube (FROM) and output cube (TO) and changed no other parameters, the following are the defaults for the Mapping group. Note: this is the PVL format you'll see in both the level2 ISIS cube header and the MAP file:

  Group = Mapping
    TargetName             = "Obtained from the Instrument group"
    EquatorialRadius       = "Obtained from TargetAttitudeShape kernel"
    PolarRadius            = "Obtained from TargetAttitudeShape kernel"

    LatitudeType           = Planetocentric
    LongitudeDirection     = PositiveEast
    LongitudeDomain        = 360 (Could be automatically adjusted to 180 by LONSEAM)

    MinimumLatitude        = "Computed from the input camera cube"
    MaximumLatitude        = "Computed from the input camera cube"
    MinimumLongitude       = "Computed from the input camera cube"
    MaximumLongitude       = "Computed from the input camera cube"

    ProjectionName         = Sinusoidal
    CenterLongitude        = "Average of MinimumLongitude and MaximumLongitude"
    PixelResolution        = "Computed from the input camera cube"
  EndGroup
    

If you need to generate your own map file you can use the maptemplate program, or alternatively, hand create a file using any text editor. The file need only specify the ProjectionName, as defaults will be computed for the remaining map file parameters. The following table indicates how the defaults are established:

PARAMETER DEFAULT
TargetName Read from Instrument group in the input cube labels
EquatorialRadius
PolarRadius
Read from SPICE PCK file set during spiceinit. The PCK file is defined in the Kernels group via the TargetAttitudeShape keyword
LatitudeType Planetocentric
LongitudeDirection PositiveEast
LongitudeDomain Normally 360 (0-360). However, if the 180 (-180,180) domain definition creates a smaller projected cube, then use it instead.
MinimumLatitude
MaximumLatitude
MinimumLongitude
MaximumLongitude
Computed from the input cube or read from the map file. However, any combination of the four values can then be overridden by the user. The values the user specifies are expected to be in the coordinate system of the projection.
PixelResolution
Scale
Computed from the input cube or read from the map file. The value can be overridden by the user.

Alternatively, the map file can be an existing map projected (level2) cube. A level2 cube has PVL labels and contains the Mapping group. Depending on the values of the input parameters, the output cube can use some or all of the keyword values of the map file. For instance, setting MATCHMAP=yes causes all of the mapping parameters to come from the map file, resulting in an output cube having the same number of lines and samples as the map file. If MATCHMAP=yes and the map file is missing a keyword like PixelResolution, the application will fail with a PVL error. Setting MATCHMAP=no allows for some of the mapping components to be overridden by the user or computed from the FROM cube.

If you are attempting to construct a mosaic, it is essential that the PixelResolution, EquatorialRadius, PolarRadius, LatitudeType, LongitudeDirection, LongitudeDomain, ProjectionName, and projection specific parameters (e.g., CenterLongitude, CenterLatitude) are the same for all cubes. That is, you should create one map file and use it as input for all the cubes in your mosaic. Otherwise, the program will throw and error.

By letting the minimum and maximum latitude and longitude values default, the application will determine the coverage of each image. However, if the mosaic Latitude and Longitude range are entered, each output image will be projected to the full size of the mosaic resulting in large file sizes and images with many NULL pixels. The following Mapping group could be used for mosaicking:

 Group = Mapping
   ProjectionName         = Sinusoidal
   CenterLongitude        = 0
   PixelResolution        = 100 <meters>
 EndGroup
   

Finally, depending on the projection, problems can occur with cubes that fall on the projection longitude seam. For example, if you are making a mosaic with LongitudeDomain=360 and your cube crosses 0/360 seam, the program will compute the default longitude range of the cube to MinimumLongitude=0 and MaximumLongitude=360. A larger than necessary output image will be created, with size inversely proportional to pixel resolution. The LONSEAM parameter allows you to selectively handle this case. If you are making mosaics near the seam you will need to understand and alter the default for this parameter. Problems at the Longitude Seams of The ISIS Workshop "Learning About Map Projections" includes an example to help illustrate the problem.


Categories


Related Applications to Previous Versions of ISIS

This program replaces the following applications existing in previous versions of ISIS:
  • lev1tolev2
  • plansinu
  • planorth

History

Kay Edwards1986-09-02 Original version
Jeff Anderson2003-05-02 Converted to Isis 3.0
Jeff Anderson2003-06-05 Added to Camera category
Stuart Sides2003-07-29 Modified filename parameters to be cube parameters where necessary
Jeff Anderson2003-12-01 Reworked defaults for user parameters
Jeff Anderson2004-01-21 Modified resolution parameters to eliminate inclusion/exclusion dependences.
Jeff Anderson2004-02-13 Added AUTOLON parameter
Jeff Anderson2004-02-25 Fixed bug with ground range user option
Elizabeth Miller2005-10-25 Added appTest
Jacob Danton2005-12-02 Updated appTest
Elizabeth Miller2006-03-23 Fixed appTest to reflect changes made in all camera models
Tracie Sucharski2006-04-04 Check to see if center of input image projects, if it does, force the tile containing center to be processed in ProcessRubberSheet.
Jeff Anderson2006-04-04 Reworked user interface
Elizabeth Miller2006-04-10 Reworked code for new user interface and added helper buttons
Elizabeth Miller2006-05-18 Depricated CubeProjection and ProjectionManager to ProjectionFactory
Elizabeth Miller2006-05-30 Moved Helper buttons and fixed error checking in helper methods
Elizabeth Miller2006-09-06 Modified call to ProjectionFactory CreateForCube method to include a value of false for the newly added sizeMatch parameter
Jeff Anderson2006-12-06 Test to see if target is sky and abort
Jeff Anderson2007-03-13 Add minimize option for DEFAULTRANGE
Steven Lambright2007-06-22 Fixed typo and corrected XML
Steven Lambright2007-08-22 Fixed lonseam option to work with minimize option correctly
Stuart Sides2008-02-11 Fixed bug where the ground range was not pulled from the map file when it was supposed to be (using DEFAULTRANGE = MAP).
Christopher Austin2008-04-18 Added the MATCHMAP option.
Steven Lambright2008-05-12 Removed references to CubeInfo
Christopher Austin2008-07-15 Changed MATCHMAP to default off
Steven Lambright2008-08-04 Changed MATCHMAP to have exclusions. If MATCHMAP is true, the PIXRES and DEFAULTRANGE options can not be set. Changed the code to enforce MATCHMAP.
Steven Lambright2008-09-10 Added the ability to change ProcessRubberSheet's tiling sizes. Now the Camera will decide upon the tiling sizes used in ProcessRubberSheet, in order to fix problems found with the push frame cameras which have small framelet sizes (less than 64 pixels tall). This is a passive ability with respect to the user; no options or differences should be noticeable.
Christopher Austin2008-10-31 Fixed DEFAULTRANGE > CAMERA option to accept MINLAT, MAXLAT, MINLON, and MAXLON as overriding values.
Christopher Austin2009-01-27 Fixed parameter names.
Travis Addair2009-08-10 Mapping group parameters are now placed into the print file.
Steven Lambright2011-01-31 Improved documentation
Jai Rideout2011-02-10 Print file now includes PixelResolution, Scale, UpperLeftCornerX, and UpperLeftCornerY in Mapping group.
Lynn Weller and Debbie A. Cook2012-01-17 Updated documentation text, added glossary links, and improved compatibility with Isis documentation.
Jeff Anderson2012-04-30 Add forward and reverse patch rubbersheeting parameters.
Debbie A. Cook2012-07-06 Updated Spice members to be more compliant with Isis coding standards. References #972.
Debbie A. Cook2012-10-11 Updated to use new Target class. References Mantis ticket number #775 and #1114.
Tracie Sucharski2012-12-06 Changed to use TProjection instead of Projection. References #775
Kimbelry Oyama2013-07-11 Removed redundant checks for !ui.GetBoolean("MATCHMAP") from if statements. Added ui.WasEntered before some of the parameters are used. Disabled LONSEAM when MATCHMAP is selected. Fixes #1613.
Jac Shinaman2016-01-29 Added new examples #5-8 describing the TRIM parameter. Fixes #0272.
Jac Shinaman2016-02-09 Updated examples #1-4 GUI illustrations, and clarified some of the "Description" paragraphs. Fixes #2389.
Jac Shinaman2016-02-09 Brought code closer to ISIS coding standards. Added test to read NAIF body frame info from labels. References #3934
Curtis Rose2016-06-29 Fixed an error when matchmap was true, the user could attempt to add a mapping file with a targetname that did not match the targetname of the instrument group of the cube file. Fixes #1952.
Adam Paquette2020-03-02 Added one last setImage call to check for pixel occlusion. Where any pixel is occluded when the resulting latitude, or longitude differ from the original latitude or longitude by 0.000001 degrees.
Austin Sanders2020-03-02 Added an additional parameter (occlusion) to toggle occlusion processing.

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 19:28:09
X

Files: FROM


Description

The specification of the input cube to be projected. The cube must have been initialized using the spiceinit program.

Type cube
File Mode input
Filter *.cub
Close Window
X

Files: MAP


Description

A file containing the desired output mapping parameters in PVL format. This file can be a simple label file, or can be hand produced, or created via the maptemplate program. It can also be an existing cube or cube label which contains a Mapping group. In the latter case, the FROM cube will be transformed into the same map projection, resolution, etc.

Type filename
File Mode input
Default Path $ISISROOT/appdata/templates/maps
Default $ISISROOT/appdata/templates/maps/sinusoidal.map
Filter *.map *.cub
Close Window
X

Files: TO


Description

This file is the map projected (level2) image.

Type cube
File Mode output
Filter *.cub
Close Window
X

Files: MATCHMAP


Description

This forces all of the mapping parameters to come from the map file. Additionally, when the map file is an image the TO file will have the same number of lines and samples as the map file.

Type boolean
Default false
Exclusions
  • PIXRES
  • RESOLUTION
  • DEFAULTRANGE
  • MINLAT
  • MAXLAT
  • MINLON
  • MAXLON
  • LONSEAM
Close Window
X

Output Map Resolution: PIXRES


Description

This parameter is used to specify how the pixel resolution is obtained for the output map projected cube.

Type string
Default CAMERA
Option List:
Option Brief Description
CAMERACompute resolution from input cube This option will automatically determine the resolution from the input cube specified using the FROM parameter.

Exclusions

  • RESOLUTION
MAPRead resolution from input map file This option will use either the PixelResolution (meters/pixel) or Scale (pixels/degree) in the map file.

Exclusions

  • RESOLUTION
MPP Get resolution from user in meters per pixel This option allows the user to specify the resolution in meters per pixel using the RESOLUTION parameter

Inclusions

  • RESOLUTION
PPD Get resolution from user in pixels per degree This option allows the user to specify the resolution in pixels per degree using the RESOLUTION parameter

Inclusions

  • RESOLUTION
Close Window
X

Output Map Resolution: RESOLUTION


Description

Specifies the resolution in either meters per pixel or pixels per degree

Type double
Minimum 0.0 (exclusive)
Close Window
X

Output Map Ground Range: DEFAULTRANGE


Description

This parameter is used to specify how the default latitude/longitude ground range for the output map projected image is obtained. The ground range can be obtained from the camera or map file. Note the user can override the default using the MINLAT, MAXLAT, MINLON, MAXLON parameters. The purpose of the ground range is to define the coverage of the map projected image. Essentially, the ground range and pixel resolution are used to compute the size (samples and line) of the output image.

Type string
Default MINIMIZE
Option List:
Option Brief Description
MINIMIZEMinimize output image size This option will use the camera and projection in combination to ensure the output image size (samples, lines) is minimized. Using a ground range can cause NULL padding for projections with curved meridians and/or parallels and hence large output images. The amount of padding can be quite large for extremely high resolution maps.

Exclusions

  • MINLAT
  • MAXLAT
  • MINLON
  • MAXLON
  • TRIM

Inclusions

  • LONSEAM
CAMERA Compute default range from input cube This option will automatically determine the minimum/maximum latitude/longitude from the input camera model cube specified using the FROM parameter.

Inclusions

  • LONSEAM
MAP Read default range from map file This option will read the minimum/maximum latitude/longitude from the input map file. All four values are expected to be defined.

Exclusions

  • LONSEAM
Close Window
X

Output Map Ground Range: MINLAT


Description

The minimum latitude of the output map. If this is entered by the user it will override the default camera or map value. By default, planetocentric latitudes are assumed unless the map file specifies otherwise.

Type double
Internal Default Use default range
Minimum -90.0 (inclusive)
Maximum 90.0 (inclusive)
Close Window
X

Output Map Ground Range: MAXLAT


Description

The maximum latitude of the output map. If this is entered by the user it will override the default camera or map value. By default, planetocentric latitudes are assumed unless the map file specifies otherwise.

Type double
Internal Default Use default range
Minimum -90.0 (inclusive)
Maximum 90.0 (inclusive)
Greater Than MINLAT
Close Window
X

Output Map Ground Range: MINLON


Description

The minimum longitude of the output map. If this is entered by the user it will override the default camera or map value. By default, positive east longitudes in the range of 0 to 360 are assumed unless the map file specifies otherwise.

Type double
Internal Default Use default range
Close Window
X

Output Map Ground Range: MAXLON


Description

The maximum longitude of the output map. If this is entered by the user it will override the default camera or map value. By default, positive east longitudes in the range of 0 to 360 are assumed unless the map file specifies otherwise.

Type double
Internal Default Use default range
Greater Than MINLON
Close Window
X

Output Map Ground Range: TRIM


Description

The image is modified. The pixel dimensions of the file are retained; therefore, the number of pixels is the same. However, the pixels that fall outside the default or specified latitude and longitude range are set to NULL.

If camera is selected:

If map is selected:

Type boolean
Default FALSE
Close Window
X

Longitude Seam Options: LONSEAM


Description

With this option you can turn on/off the automatic longitude domain switching that occurs when a file crosses the boundary of the longitude domain (0-360 or -180 to 180). If the switching is turn off then you have the choice of making the program continue or exit when the cube does cross the boundary.

Type string
Default AUTO
Option List:
Option Brief Description
AUTOAutomatically correct Longitude Domain If the cube crosses the longitude seam automatically compute the LongitudeDomain. When the cube is near 0 or 360 degrees the program will assume 180 LongitudeDomain. When the cube is near 180 or -180 degrees it will assume 360 LongitudeDomain.
ERRORAbort program if cube crosses seam If the cube crosses the longitude seam the program will exit with an error message
CONTINUEContinue program if cube crosses seam If the cube crosses the longitude seam the program will continue. The LongitudeDomain in the map file will be used. If the map file does not have a LongitudeDomain, 0-360 will be used. Note that this could create an extremely large image.
Close Window
X

Options: INTERP


Description

This is the type of interpolation to be performed on the input.

Type string
Default CUBICCONVOLUTION
Option List:
Option Brief Description
NEARESTNEIGHBORNearest Neighbor Each output pixel will be set to the pixel nearest the calculated input pixel.
BILINEARBi-Linear interpolation Each output pixel will be set to the value calculated by a bi-linear interpolation of the calculated input pixel.
CUBICCONVOLUTIONCubic Convolution interpolation Each output pixel will be set to the value calculated by a cubic convolution interpolation of the calculated input pixel.
Close Window
X

Options: WARPALGORITHM


Description

This parameter is used to choose the warping algorithm, either the forward patch algorithm or the reverse patch algorithm. The default is to automatically choose the algorithm based on the input camera type (e.g., framing, linescan, pushframe).

Type string
Default AUTOMATIC
Option List:
Option Brief Description
FORWARDPATCHForward patch warp algorithm Patches are uniformly distributed over the input cube (FROM). For each input patch, the lat/lons of the four corners coordinates are computed using the camera model. Those four lat/lon coordinates are used by the map projection to determine four output pixel coordinates. Then the four output to input image coordinates are fit with two affine transforms. That is, isamp=f(osamp,oline) and iline=g(osamp,oline) where f = A+B*osamp+C*oline and similarly for g. If the estimated input/sample line (as computed by the affine transform) at the center of the patch is within a tenth of a pixel of the actual computation using the projection and camera model, the affine transforms are used to place the calculated input pixels in the output patch (using the specified INTERPOLATOR).

Exclusions

  • OCCLUSION

Inclusions

  • PATCHSIZE
REVERSEPATCHReverse patch warp algorithm Patches are uniformly distributed over the output cube (map projected product). For each output patch, the lat/lons of the four corners coordinates are computed using the map projection. Those four lat/lon coordinates are used by the camera model to determine four input pixel coordinates. Then the four output to input image coordinates are fit with two affine transforms. That is, isamp=f(osamp,oline) and iline=g(osamp,oline) where f = A+B*osamp+C*oline and similarly for g. If the estimated input/sample line (as computed by the affine transform) at the center of the patch is within a tenth of a pixel of the actual computation using the projection and camera model, the affine transforms are used to place the calculated input pixels in the output patch (using the specified INTERPOLATOR).

Inclusions

  • PATCHSIZE
AUTOMATICAutomatically select warp algorithm The automatic option will choose the appropriate algorithm depending on the camera type of the input cube (TO). If the cube is a framing camera image, the reverse algorithm will be used with a PATCHSIZE of 4. If the cube is a line scan image, the forward algorithm will be used with a PATCHSIZE of 5. If the cube is a push frame camera (e.g., LRO WAC, MRO MARCI, or THEMIS VIS) the forward transform with a PATCHSIZE of the pushframe framelet height will be used. It is recommended that you always use automatic for push frame cameras to ensure the patch size does not cross multiple framelets.

Exclusions

  • PATCHSIZE
  • OCCLUSION
Close Window
X

Options: PATCHSIZE


Description

The forward and reverse patch algorithms try to fit an affine transform between the camera model coordinate and projection coordinate using the four corners of the patches. Patches that are too large may run faster at the risk of missing higher resolution information about the DTM. For example, a patch of 256x256 may have the same elevation at the four corners and center of the grid, but a crater may exist in one of the four quadrants of the patch. The crater, up to 128 pixels in diameter, may not be properly orthorectified. In general, small patch sizes are recommended (e.g., 4, 8).

Type integer
Minimum 1 (inclusive)
Close Window
X

Options: OCCLUSION


Description

This parameter is used to toggle the occlusion detection algorithm. If set true, then the occlusion detection algorithm locates and nullifies occluded pixels. A pixel is determined to be occluded if the lat/lon value of the pixel in projected image space does not match (within a tolerance) the lat/lon value of the pixel in unprojected image space.

Highly dependent on DEM / image pixel resolution and accuracy of coregistration between the two.

This parameter also significantly increases projection time. It is recommended that this option is only used on images with known areas of occlusion.

Type boolean
Default false
Close Window