Commit c7582402 authored by Stuart Sides's avatar Stuart Sides
Browse files

Added Error, Quality, and Undistorted output to mvic2isis

parent 468a43e3
Loading
Loading
Loading
Loading
+23 −6
Original line number Diff line number Diff line
@@ -47,6 +47,7 @@ namespace Isis {
  ProcessImportFits::ProcessImportFits() {
    m_fitsLabels = NULL;
    m_headerSizes = NULL;
    m_dataStarts = NULL;
  }


@@ -56,6 +57,7 @@ namespace Isis {
  ProcessImportFits::~ProcessImportFits() {
    delete m_fitsLabels;
    delete m_headerSizes;
    delete m_dataStarts;
    m_file.close();
  }

@@ -69,6 +71,7 @@ namespace Isis {

    m_fitsLabels = new QList< PvlGroup * >;
    m_headerSizes = new QList < int >;
    m_dataStarts = new QList < int >;

    // Process each FITS label area. Storing each in its own PvlGroup
    char readBuf[81];
@@ -146,14 +149,16 @@ namespace Isis {
      m_headerSizes->push_back((int)ceil(place / 2880.0));

      // The file pointer should be pointing at the end of the record that contained "END"
      // Move the file pointer past the padding after the "END"
      // Move the file pointer past the padding after the "END" (i.e., points to start of data)
      std::streamoff jump;
      jump = m_headerSizes->last() * 2880 - place;
      m_file.seekg(jump, std::ios_base::cur);

      m_dataStarts->push_back(m_file.tellg());

      // NOTE: For now we only handle image data (i.e., keywords BITPIX & NAXIS & NAXISx must exist)
      // Does this look like a label for a FITS image? Stop after the first label that does not
      // because we don't know how to move the file pointer past a non-image data.
      // because we don't know how to move the file pointer past a non-image data extension.
      if (fitsLabel->hasKeyword("BITPIX") && fitsLabel->hasKeyword("NAXIS") && 
          fitsLabel->hasKeyword("NAXIS1")) {

@@ -183,6 +188,7 @@ namespace Isis {
      else if (m_fitsLabels->size() > 1) {
        m_fitsLabels->pop_back();
        m_headerSizes->pop_back();
        m_dataStarts->pop_back();
        break;
      }
      else {
@@ -201,6 +207,14 @@ namespace Isis {
   * @return PvlGroup version of a FITS label corrisponding to requested label number
   */
  PvlGroup ProcessImportFits::fitsLabel(int labelNumber) const {

    if (labelNumber >= m_fitsLabels->size()) {
      QString msg = QObject::tr("The requested label number [%1], from file [%2] is "
                                "past the last image in this FITS file. Image count is [%3]").arg(labelNumber).
                                arg(m_name.expanded()).arg(m_fitsLabels->size()-1);
      throw IException(IException::User, msg, _FILEINFO_);
    }

    if (!m_fitsLabels) {
      QString msg = QObject::tr("The FITS label has not been initialized, call setFitsFile first");
      throw IException(IException::Programmer, msg, _FILEINFO_);
@@ -249,6 +263,8 @@ namespace Isis {
   * @param fitsFile Name of the FITS file to open
   */
  void ProcessImportFits::setFitsFile(FileName fitsFile) {
    m_name = fitsFile;

    SetInputFile(fitsFile.toString()); // Make sure the file exists

    m_file.open(fitsFile.expanded().toLocal8Bit().constData(), std::ios::in  | std::ios::binary);
@@ -285,17 +301,18 @@ namespace Isis {
  void ProcessImportFits::setProcessFileStructure(int labelNumber) {

    if (labelNumber >= m_fitsLabels->size()) {
      QString msg = QObject::tr("The requested label number, [%1], from file [%2] is "
      QString msg = QObject::tr("The requested label number [%1], from file [%2] is "
                                "past the last image in this FITS file [%3]").arg(labelNumber).
                                arg(InputFile()).arg(m_fitsLabels->size()-1);
      throw IException(IException::User, msg, _FILEINFO_);
    }

    PvlGroup label = *(*m_fitsLabels)[labelNumber];
//    std::cout << label << std::endl;

    SetFileHeaderBytes((*m_headerSizes)[labelNumber] * 2880);
    SaveFileHeader();
    // Set the ProcessImport to skip over all the previous images and their labels and the label for
    // this image. Don't save this info (think memory)
    SetFileHeaderBytes((*m_dataStarts)[labelNumber]);
    //SaveFileHeader();

    // Find pixel type. NOTE: There are several unsupported possiblites
    Isis::PixelType type;
+4 −1
Original line number Diff line number Diff line
@@ -66,8 +66,11 @@ namespace Isis {
      //! The stream used to read the FITS file
      std::ifstream m_file;

      //! The number of 2880 byte header records before each data section
      //! The number/count of 2880 byte header records for each header section
      QList<int> *m_headerSizes;

      //! The starting byte of the data for each image
      QList<int> *m_dataStarts;
  };
};

+23 −1
Original line number Diff line number Diff line
@@ -24,24 +24,28 @@
 * object or application.
 *
 */

/**
 * \namespace Galileo
 *
 * Namespace for all %Isis Galileo mission objects
 *
 */

/**
 * \namespace Isis::Mgs
 *
 * Namespace for all %Isis Mars Global Surveyor mission objects
 *
 */

/**
 * \namespace Isis::Mro
 *
 * Namespace for all %Isis Mars Reconnaissance Orbiter mission objects
 *
 */

/**
 * \namespace Isis::Odyssey
 *
@@ -55,6 +59,7 @@
 * Namespace for all %Isis Lunar Orbiter mission objects
 *
 */

/**
 * \namespace Isis::Lro
 *
@@ -62,13 +67,13 @@
 *
 */


/**
 * \namespace Qisis
 *
 * Namespace for the %Isis visualazation objects
 *
 */

/**
 * \namespace std
 *
@@ -434,6 +439,23 @@
           *
           */


          // New Horizons
          /**
           * \defgroup  NewHorizons                   New Horizons
           *
           * These objects provide functionality for manipulating data from the
           * New Horizons mission. New Horizons is part of NASA's New Frontiers
           * Program.
           * New Horizons launced January 19, 2006 and is expected to spend five months studying 
           * Pluto durring the summer of 2015.
           *
           * Mission site: http://www.nasa.gov/mission_pages/newhorizons/main/#.VA4QY8NuH4I
           *
           *
           */


          // VIKING
          /**
           * \defgroup  Viking                        Viking
+44 −44
Original line number Diff line number Diff line
@@ -177,6 +177,26 @@
</files>
</document>
<document>
<title>Installing ISIS</title>
<brief>Downloading and installing ISIS 3</brief>
<description>
      This document describes how to download and install a
      binary version of ISIS.
    </description>
<category>
<categoryItem>technicaldoc</categoryItem>
</category>
<audience>
<target>administrator</target>
</audience>
<files>
<file hidden="" primary="true">
<type>HTML</type>
<source>../documents/InstallGuide/index.html</source>
</file>
</files>
</document>
<document>
<title>ISIS 2 User Documentation</title>
<brief>Links to ISIS 2 User Documents</brief>
<description>List of links to documents covering general topics for users of ISIS 2.1</description>
@@ -218,6 +238,30 @@
</files>
</document>
<document>
<title>ISIS 3 Coding Standards and Style Guide</title>
<brief>Coding standards for ISIS 3 developers (effective February 1, 2012).</brief>
<description>
      This document will describe the coding standards for maintaining 
      ISIS 3 source code.  It was created to ensure that the 
      ISIS 3 package is programmed for consistency, readability and ease
      of future maintenance. This document does not attempt to address every
      possible issue. However, the guidelines that have been outlined should not
      be deviated from, except under special situations.
    </description>
<category>
<categoryItem>reference</categoryItem>
</category>
<audience>
<target>intermediate</target>
</audience>
<files>
<file hidden="" primary="">
<type>HTML</type>
<source>../documents/CodingStandards/CodingStandards.html</source>
</file>
</files>
</document>
<document>
<title>Conversion from ISIS 2 to ISIS 3</title>
<brief>Reasons and considerations to upgrade from ISIS 2 to ISIS 3</brief>
<description>The reasons, considerations, and major design changes related to the upgrade from ISIS 2 to ISIS 3</description>
@@ -417,26 +461,6 @@
</files>
</document>
<document>
<title>Installing ISIS</title>
<brief>Downloading and installing ISIS 3</brief>
<description>
      This document describes how to download and install a
      binary version of ISIS.
    </description>
<category>
<categoryItem>technicaldoc</categoryItem>
</category>
<audience>
<target>administrator</target>
</audience>
<files>
<file hidden="" primary="true">
<type>HTML</type>
<source>../documents/InstallGuide/index.html</source>
</file>
</files>
</document>
<document>
<title>ISIS 2 Tutorials</title>
<brief>Links to ISIS 2 tutorials, procedures, and how-to's</brief>
<description>List of links to ISIS 2 tutorials, procedures, and how-to's.</description>
@@ -526,30 +550,6 @@
</files>
</document>
<document>
<title>ISIS 3 Coding Standards and Style Guide</title>
<brief>Coding standards for ISIS 3 developers (effective February 1, 2012).</brief>
<description>
      This document will describe the coding standards for maintaining 
      ISIS 3 source code.  It was created to ensure that the 
      ISIS 3 package is programmed for consistency, readability and ease
      of future maintenance. This document does not attempt to address every
      possible issue. However, the guidelines that have been outlined should not
      be deviated from, except under special situations.
    </description>
<category>
<categoryItem>reference</categoryItem>
</category>
<audience>
<target>intermediate</target>
</audience>
<files>
<file hidden="" primary="">
<type>HTML</type>
<source>../documents/CodingStandards/CodingStandards.html</source>
</file>
</files>
</document>
<document>
<title>Logical Cube Format Guide</title>
<brief>Guide to core ISIS labels and a conceptual file structure for a cube</brief>
<description>
+7 −1
Original line number Diff line number Diff line
@@ -498,11 +498,17 @@ you must <em>not</em> upgrade the ISIS Data Files!!!
        rsync -azv --delete --partial isisdist.astrogeology.usgs.gov::isis3data/data/mro data/
        </pre>
<p>
  Odyssey Mission (kernels can be excluded):
  Mars Odyssey Mission (kernels can be excluded):
</p>
        <pre>
        rsync -azv --delete --partial isisdist.astrogeology.usgs.gov::isis3data/data/odyssey data/
        </pre>
<p>
  New Horizons Mission (kernels can be excluded):
</p>
        <pre>
        rsync -azv --delete --partial isisdist.astrogeology.usgs.gov::isis3data/data/newhorizons data/
        </pre>
<p>
  Rolo Mission (kernels can be excluded):
</p>
Loading