diff --git a/isis/src/local/Makefile b/isis/src/local/Makefile
deleted file mode 100644
index 6d2b3727025ae72c62fe568187d8340cba50a233..0000000000000000000000000000000000000000
--- a/isis/src/local/Makefile
+++ /dev/null
@@ -1,2 +0,0 @@
-include $(ISISROOT)/make/isismake.cat
-
diff --git a/isis/src/local/apps/Makefile b/isis/src/local/apps/Makefile
deleted file mode 100644
index 381219893122eb5737084b3de80de2bd2d298df6..0000000000000000000000000000000000000000
--- a/isis/src/local/apps/Makefile
+++ /dev/null
@@ -1 +0,0 @@
-include $(ISISROOT)/make/isismake.appstree
diff --git a/isis/src/local/apps/apinit/Makefile b/isis/src/local/apps/apinit/Makefile
deleted file mode 100644
index 7578f0b21d038db6a5042c095cda9b34b6bb2570..0000000000000000000000000000000000000000
--- a/isis/src/local/apps/apinit/Makefile
+++ /dev/null
@@ -1,7 +0,0 @@
-ifeq ($(ISISROOT), $(BLANK))
-.SILENT:
-error:
- echo "Please set ISISROOT";
-else
- include $(ISISROOT)/make/isismake.apps
-endif
\ No newline at end of file
diff --git a/isis/src/local/apps/apinit/apinit.cpp b/isis/src/local/apps/apinit/apinit.cpp
deleted file mode 100644
index 2525d5de1a085988588b8acc99ce2ffe286ff853..0000000000000000000000000000000000000000
--- a/isis/src/local/apps/apinit/apinit.cpp
+++ /dev/null
@@ -1,483 +0,0 @@
-#include "Isis.h"
-
-#include
-
-#include
-#include
-
-#include
-#include
-#include
-
-#include "Brick.h"
-#include "Cube.h"
-#include "FileName.h"
-#include "History.h"
-#include "IString.h"
-#include "Projection.h"
-#include "Pvl.h"
-#include "PvlGroup.h"
-#include "PvlKeyword.h"
-#include "PvlObject.h"
-#include "SpecialPixel.h"
-#include "SpicePosition.h"
-#include "SpiceRotation.h"
-#include "Table.h"
-#include "TProjection.h"
-#include "NaifStatus.h"
-
-using namespace Isis;
-using namespace std;
-
-PvlKeyword getArrayValues(const QString ¶meter, const QString &keyword, int count);
-
-
-void IsisMain() {
- // Fire up the user interface
- UserInterface &ui = Application::GetUserInterface();
-
- // Get the name of the cube to initialize
- Cube cube(ui.GetFileName("FROM"),"rw");
-
- // Create archive group with the following information:
- // Roll Number
- // Frame Number
- // Camera Identification
- // Lens Identification
- // Camera calibration date
- PvlGroup archiveGroup("Archive");
-
- PvlKeyword keyword;
- keyword.setName("RollNumber");
- keyword.setValue(ui.GetString("RollNumber") );
- archiveGroup.addKeyword(keyword);
-
- keyword.setName("FrameNumber");
- keyword.setValue(ui.GetString("FrameNumber") );
- archiveGroup.addKeyword(keyword);
-
- keyword.setName("CameraSerialNumber");
- keyword.setValue(ui.GetString("CameraSN") );
- archiveGroup.addKeyword(keyword);
-
- keyword.setName("LenseSerialNumber");
- keyword.setValue(ui.GetString("LenseSN") );
- archiveGroup.addKeyword(keyword);
-
- keyword.setName("CalibrationReport");
- keyword.setValue(ui.GetString("CalReport") );
- archiveGroup.addKeyword(keyword);
-
- cube.putGroup(archiveGroup);
-
- // Create instrument group with the following information:
- // Mission/spacecraft name
- // Target name
- // Date and time of observation
- // Ephemeris time
- // Center longitude/latitude
- // Altitude above mean radius
- // Focal length
- // Fidicual measurements in image
- // Fidicual locations in focal plane
- // Optical distortion information
- PvlGroup instrumentGroup("Instrument");
-
- keyword.setName("SpacecraftName");
- keyword.setValue("Aircraft");
- instrumentGroup.addKeyword(keyword);
-
- keyword.setName("InstrumentId");
- keyword.setValue("AerialPhoto");
- instrumentGroup.addKeyword(keyword);
-
- keyword.setName("TargetName");
- keyword.setValue("Earth");
- instrumentGroup.addKeyword(keyword);
-
- QString startTime = ui.GetString("DateTime");
- // Validate the observation date format. See naif required reading for time format
- // http://naif.jpl.nasa.gov/pub/naif/toolkit_docs/C/cspice/str2et_c.html
- ConstSpiceChar *spiceStartTime = startTime.toLatin1().data();
- SpiceDouble junk;
- SpiceChar errmsg[500];
- tparse_c (spiceStartTime, 500, &junk, errmsg);
- if (errmsg[0] != 0) {
- QString msg = "Invalid date/time format [" + startTime + "]. See NAIF required reading "
- "for acceptable formats at http://naif.jpl.nasa.gov/pub/naif/toolkit_docs/C/req/time.html";
- msg += ". Naif error message is [" + QString((char*) errmsg) + "]";
-
- throw IException(IException::User, msg, _FILEINFO_);
- }
- keyword.setName("StartTime");
- keyword.setValue(startTime);
- instrumentGroup.addKeyword(keyword);
-
- FileName lsk("$base/kernels/lsk/naif0010.tls");
-
- NaifStatus::CheckErrors();
- furnsh_c(lsk.expanded().toLatin1().constData());
-
- double et;
- spiceStartTime = startTime.toLatin1().data();
- str2et_c(spiceStartTime, &et);
-
- keyword.setName("EphemerisTime");
- keyword.setValue(toString(et),"seconds");
- instrumentGroup.addKeyword(keyword);
-
- keyword.setName("EstimatedAltitude");
- keyword.setValue(toString(ui.GetDouble("Altitude")), "meters");
- instrumentGroup.addKeyword(keyword);
-
- keyword.setName("EstimatedCenterLatitude");
- keyword.setValue(toString(ui.GetDouble("CenterLat")), "degrees");
- instrumentGroup.addKeyword(keyword);
-
- keyword.setName("EstimatedCenterLongitude");
- keyword.setValue(toString(ui.GetDouble("CenterLon")), "degrees");
- instrumentGroup.addKeyword(keyword);
-
- keyword.setName("FocalLength");
- keyword.setValue(toString(ui.GetDouble("FocalLength")), "millimeters");
- instrumentGroup.addKeyword(keyword);
-
- keyword = getArrayValues("FiducialX", "FiducialX", 8);
- keyword.setUnits("millimeters");
- instrumentGroup.addKeyword(keyword);
-
- keyword = getArrayValues("FiducialY", "FiducialY", 8);
- keyword.setUnits("millimeters");
- instrumentGroup.addKeyword(keyword);
-
- keyword = getArrayValues("FiducialSample", "FiducialSample", 8);
- instrumentGroup.addKeyword(keyword);
-
- keyword = getArrayValues("FiducialLine", "FiducialLine", 8);
- instrumentGroup.addKeyword(keyword);
-
- keyword = getArrayValues("RadialDistortionCoefficients", "KCoefs", 5);
- instrumentGroup.addKeyword(keyword);
-
- keyword = getArrayValues("DecenteringDistortionCoefficients", "PCoefs", 4);
- instrumentGroup.addKeyword(keyword);
-
- keyword.setName("XCalibratedPrincipalPoint");
- keyword.setValue(toString(ui.GetDouble("XP")), "millimeters");
- instrumentGroup.addKeyword(keyword);
-
- keyword.setName("YCalibratedPrincipalPoint");
- keyword.setValue(toString(ui.GetDouble("YP")), "millimeters");
- instrumentGroup.addKeyword(keyword);
-
- keyword.setName("XIndicatedPrincipalPoint");
- keyword.setValue(toString(ui.GetDouble("XIPP")), "millimeters");
- instrumentGroup.addKeyword(keyword);
-
- keyword.setName("YIndicatedPrincipalPoint");
- keyword.setValue(toString(ui.GetDouble("YIPP")), "millimeters");
- instrumentGroup.addKeyword(keyword);
-
- cube.putGroup(instrumentGroup);
-
- // Create kernels group
- PvlGroup kernelsGroup("Kernels");
-
- keyword.setName("NaifFrameCode");
- keyword.setValue("-2000001");
- kernelsGroup.addKeyword(keyword);
-
- keyword.setName("LeapSecond");
- keyword.setValue("$base/kernels/lsk/naif0010.tls");
- kernelsGroup.addKeyword(keyword);
-
- keyword.setName("TargetAttitudeShape");
- keyword.setValue("$base/kernels/pck/pck00009.tpc");
- kernelsGroup.addKeyword(keyword);
-
- keyword.setName("TargetPosition");
- keyword.setValue("Table");
- keyword.addValue("$base/kernels/spk/de405.bsp");
- kernelsGroup.addKeyword(keyword);
-
- keyword.setName("InstrumentPointing");
- keyword.setValue("Table");
- kernelsGroup.addKeyword(keyword);
-
- keyword.setName("Instrument");
- keyword.clear();
- kernelsGroup.addKeyword(keyword);
-
- keyword.setName("SpacecraftClock");
- keyword.clear();
- kernelsGroup.addKeyword(keyword);
-
- keyword.setName("InstrumentPosition");
- keyword.setValue("Table");
- kernelsGroup.addKeyword(keyword);
-
- keyword.setName("InstrumentAddendum");
- keyword.clear();
- kernelsGroup.addKeyword(keyword);
-
- keyword.setName("ShapeModel");
- keyword.setValue(ui.GetAsString("ShapeModel"));
- kernelsGroup.addKeyword(keyword);
-
- keyword.setName("InstrumentPositionQuality");
- keyword.setValue("Predict");
- kernelsGroup.addKeyword(keyword);
-
- keyword.setName("InstrumentPointingQuality");
- keyword.setValue("Predict");
- kernelsGroup.addKeyword(keyword);
-
- keyword.setName("CameraVersion");
- keyword.setValue("1");
- kernelsGroup.addKeyword(keyword);
-
- cube.putGroup(kernelsGroup);
-
-// Write out the naif keywords group. This must be done because the camera model
-// needs to know the earth's frame number and radii. This is typically done by the spiceinit program
-// but there are no SPICE kernels for aerial photos other than those that define the
-// rotation matrix from j2000 to body-fixed for the earth. Our group should look something
-// like this in the labels
-//
-// Object = NaifKeywords
-// BODY_FRAME_CODE = 10013
-// BODY399_RADII = (6378.14, 6378.14, 6356.75)
-// End_Object
-
- PvlObject naifKeywords;
- naifKeywords.setName("NaifKeywords");
-
- keyword.setName("BODY_FRAME_CODE");
- keyword.setValue("10013");
- naifKeywords.addKeyword(keyword);
-
- keyword.setName("BODY399_RADII");
- keyword.setValue("6378.14");
- keyword.addValue("6378.14");
- keyword.addValue("6356.75");
- keyword.setUnits("kilometers");
- naifKeywords.addKeyword(keyword);
-
- cube.label()->addObject(naifKeywords);
-
- // Create table with rotation matrices from bodyfixed to J2000 and write to the labels.
- // Need to load the appropriatespk and pck kernels for this to work.
- FileName pck("$base/kernels/pck/pck00009.tpc");
- furnsh_c(pck.expanded().toLatin1().constData());
- FileName tspk("$base/kernels/spk/de405.bsp");
- furnsh_c(tspk.expanded().toLatin1().constData());
-
- SpiceRotation bodyRotation(10013);
- bodyRotation.LoadCache(et-1.0, et+1.0, 2); // Get a small window about the observation time
-
- Table bodyTable = bodyRotation.Cache("BodyRotation");
- bodyTable.Label() += PvlKeyword("Description", "Created by apinit");
- bodyTable.Label() += PvlKeyword("Kernels");
- bodyTable.Label()["Kernels"].addValue("$base/kernels/spk/de405.bsp");
- bodyTable.Label()["Kernels"].addValue("$base/kernels/pck/pck00009.tpc");
- bodyTable.Label() += PvlKeyword("SolarLongitude","-9999"); // TODO: Need to compute the solar longitude
-
- cube.write(bodyTable);
-
-
- // Create table with position of sun relative to earth.
- SpicePosition sunPosition(10, 399);
- sunPosition.LoadCache(et-1.0, et+1.0, 2); // Get a small window about the observation time
-
- Table sunTable = sunPosition.Cache("SunPosition");
- sunTable.Label() += PvlKeyword("Description", "Created by apinit");
- sunTable.Label() += PvlKeyword("Kernels");
- bodyTable.Label()["Kernels"].addValue("$base/kernels/spk/de405.bsp");
-
- cube.write(sunTable);
-
- // Create a table with apriori position of aircraft relative to earth in J2000.
- // This will take several steps. First we need the radius for the aerial photo.
- // The user supplied a lat/lon and DTM. We will use the lat/lon to get a radius from
- // the DTM. Those three values will be converted from polar coordinates (lat,lon,rad) to
- // P(x,y,z). Then we will get a unit vector of P and multiply it by the
- // altitude to get Pa = (xhat*alt, yhat*alt, zhat*alt). Then we will add P and Pa to
- // estimate the aircraft position in body fixed. Finally we will rotation Pa into J2000
- // using the bodyRotation object (SpiceRotation class). The velocity is unknown so we will not
- // write it out to our table. We could improve the estimate of the spacecraft position by
- // computing the surface normal at P off of an ellipsoid. We won't go to this level of accuracy
- // because using jigsaw will be a requirement to improvement the pointing of the camera and the
- // aircraft position should also be refined at that time.
-
- Cube dtm;
- dtm.open(ui.GetAsString("ShapeModel"));
- TProjection *mapproj = (TProjection *) dtm.projection();
- mapproj->SetGround(ui.GetDouble("CenterLat"), ui.GetDouble("CenterLon"));
- int line = mapproj->WorldY() + 0.5;
- int samp = mapproj->WorldX() + 0.5;
- Brick buf(1,1,1,dtm.pixelType());
- buf.SetBasePosition(samp, line, 1);
- dtm.read(buf);
-
- if (IsSpecial(buf[0]) || buf[0] < 6300000) {
- QString msg = "DTM [" + ui.GetAsString("ShapeModel") + "] does not contain valid radius "
- " at user specified latitude/longitude. Read [" + toString(buf[0]) + "] at "
- "sample/line [" + toString(samp) + "," + toString(line) + "]";
- throw IException(IException::Unknown, msg, _FILEINFO_);
- }
-
- SpiceDouble radius = buf[0] / 1000.0;
- SpiceDouble ulat = mapproj->UniversalLatitude() * Isis::PI / 180.0;
- SpiceDouble ulon = mapproj->UniversalLongitude() * Isis::PI / 180.0;
-
- SpiceDouble xyz[3];
- latrec_c(radius, ulon, ulat, xyz);
-
- SpiceDouble xyzhat[3];
- vhat_c(xyz, xyzhat);
-
- std::vector apposB; // Position of aircraft in body fixed
- apposB.push_back(xyz[0] + xyzhat[0] * ui.GetDouble("Altitude") / 1000.0);
- apposB.push_back(xyz[1] + xyzhat[1] * ui.GetDouble("Altitude") / 1000.0);
- apposB.push_back(xyz[2] + xyzhat[2] * ui.GetDouble("Altitude") / 1000.0);
-
- bodyRotation.SetEphemerisTime(et);
- std::vector apposJ = bodyRotation.J2000Vector(apposB);
-
- TableRecord spkRecord;
- TableField x("J2000X", TableField::Double);
- TableField y("J2000Y", TableField::Double);
- TableField z("J2000Z", TableField::Double);
- TableField t("ET", TableField::Double);
- spkRecord += x;
- spkRecord += y;
- spkRecord += z;
- spkRecord += t;
-
- Table spkTable("InstrumentPosition", spkRecord);
- spkRecord[0] = apposJ[0];
- spkRecord[1] = apposJ[1];
- spkRecord[2] = apposJ[2];
- spkRecord[3] = et - 1.0;
- spkTable += spkRecord;
-
- spkRecord[3] = et + 1.0;
- spkTable += spkRecord;
-
- spkTable.Label() += PvlKeyword("Description", "Created by apinit");
- spkTable.Label() += PvlKeyword("Kernels");
-
- cube.write(spkTable);
- dtm.close();
-
- // Now we must write out the camera to J2000 rotation matrices. Unfortunately
- // nothing exists that defines this information. However, we can create the camera
- // pointing using photogramettric techniques by finding tie points between an aerial
- // photo and a basemap that covers the same area of the photo.
- // A basemap example is a DOQQ image that is map projected. We won't do that work
- // here since we already have programs that can help determine the tie points and pointing
- // (findfeatures and jigsaw). Instead we will just write out the identity rotation
- // such that we assume the aircraft is pointing straight down (roll and pitch of 0) which is
- // probably correct. What we really lack is the yaw/twist to know if the aircraft is
- // flying north-south, south-north, or along some other track. We will just assume
- // the aircraft has no twist too. It will be wrong but findfeatures and jigsaw will
- // figure it out. (CJ is the J2000 to camera rotation matrix. We'll set it to the
- // identity and then convert to a quaternion so we can write out our table file.
-
- SpiceDouble CJ[9] = { 1.0, 0.0, 0.0,
- 0.0, 1.0, 0.0,
- 0.0, 0.0, 1.0 };
- SpiceDouble minusApposJ[3];
- //minusApposJ[0] = -apposJ[0];
- //minusApposJ[0] = -apposJ[0];
- //minusApposJ[1] = -apposJ[1];
- minusApposJ[0] = apposJ[0];
- minusApposJ[1] = apposJ[1];
- minusApposJ[2] = apposJ[2];
-
- SpiceDouble perpVec[3];
- SpiceDouble axis[3] = {0.0, 1.0, 0.0};
- vrotv_c(minusApposJ, axis, 90.0, perpVec);
-
- twovec_c (minusApposJ, 3, perpVec, 2, (SpiceDouble( *)[3]) &CJ[0]);
-
- SpiceDouble quat[4];
- m2q_c(CJ, quat);
- NaifStatus::CheckErrors();
-
- TableField q0("J2000Q0", TableField::Double);
- TableField q1("J2000Q1", TableField::Double);
- TableField q2("J2000Q2", TableField::Double);
- TableField q3("J2000Q3", TableField::Double);
- TableField qt("ET", TableField::Double);
-
- TableRecord ckRecord;
- ckRecord += q0;
- ckRecord += q1;
- ckRecord += q2;
- ckRecord += q3;
- ckRecord += qt;
-
- Table ckTable("InstrumentPointing", ckRecord);
-
- ckRecord[0] = quat[0];
- ckRecord[1] = quat[1];
- ckRecord[2] = quat[2];
- ckRecord[3] = quat[3];
- ckRecord[4] = et - 1.0;
- ckTable += ckRecord;
-
- ckTable.Label() += PvlKeyword("Description", "Created by apinit");
- ckTable.Label() += PvlKeyword("Kernels");
-
- cube.write(ckTable);
-
-
- // Write out the history to the cube so we have a record of what the user ran
- History hist = History("IsisCube");
- try {
- cube.read(hist);
- }
- catch(IException &e) {
- // No history exist but don't throw an error. just add a history object
- }
- hist.AddEntry();
- cube.write(hist);
-
- // clean up
- cube.close();
-}
-
-
-
-PvlKeyword getArrayValues(const QString ¶meter, const QString &uiKeyword, int count) {
-
- UserInterface &ui = Application::GetUserInterface();
- QString value = ui.GetString(uiKeyword);
-
- PvlKeyword keyword;
- keyword.setName(parameter);
-
- QStringList tokens = value.split(",");
- if (tokens.size() != count) {
- QString msg = "Invalid value for [" + uiKeyword.toUpper() + "]. Expecting exactly " +
- QString::number(count) + " comma "
- "separated values and found only [" + QString::number(tokens.size()) + "]";
- throw IException(IException::User, msg, _FILEINFO_);
- }
-
- for (int i=0; i
-
-
- Initialize aerial photo with interior and exterior orientation information.
-
-
-
- This program is used to initialize the interior and exterior orientation of film-based aerial photographs. Interior orientation information such as the focal length, optical distortion, and fiducial
- locations are input by the user and recorded on the label of the cube in the Instrument group. This information is typical found in a USGS Report of Calibration that is specific for the camera
- flown during the particular aerial survey. Apriori exterior orientation information such as the position of the aircraft and it's attitude are
- computed from user input such as altitude and latitude/longitude at the center of the image. The computed exterior orientation is stored as binary tables in the cube.
-
- This program mimics the capabilities of the "spiceinit" program which is used for initalized interior/exterior orientation information for NASA space instruments observing other than Earth
- targets. Once the interior/exterior information is added to a cube, other ISIS cartography programs can be used such as cam2map (orthorectification), caminfo (image georeferencing information),
- qmos (mosaicking tools), and jigsaw (bundle adjustments to the aircraft position/attitude for creating seamless mosaics).
-
- The results of this program should not be immediately used until the exterior orientation has been corrected. That is, do not run cam2map and expect proper
- georeferencing/orthorectification. There will be an error in attitude because there is not enough user information to determine the twist/yaw of the aircraft. Instead run
- "findfeatures" to automatically generate a ground control network and then jigsaw to solve for the actual aircraft position and attitude.
-
-
- Aerial Photos
-
-
-
-
- Original Version
-
-
- Added NaifStatus::CheckErrors() to see if any NAIF errors were signaled. References #2248.
-
-
- Made sure that the minusApposJ array has all its values initialized. Caused CentOS7 app test to fail. References #4809.
-
-
-
-
-
-
- cube
- input
-
- The filename of the input cube to have the interior/exterior orientation added
-
-
- The input file which will have new group labels that indicate information about the aerial photograph. The information provided by the user should be sufficient enough to
- create a functioning camera model so that the interior/exterior orientation information can be solved for in jigsaw..
-
- *.cub
-
-
-
-
-
- string
- Date and time of the obseration
-
- Date and time in format ?????. Important to get this information correct if plan to compute phase incidence and emission angles.
-
-
-
-
- double
- Estimated altitude
-
- Estimated mean altitude above terrian in meters???????
-
- 0
-
-
-
- double
- Estimated latitude at center of image
-
- ???
-
- -90
- 90
-
-
-
- double
- Estimated longitude at center of image
-
- ???
-
- -360
- 360
-
-
-
- cube
- Shape model of earth
-
- ???
-
-
-
-
-
-
- double
- Camera focal length
-
- Focal length of the camera in millimeters. This is often referred to as the calibrated focal length in the camera calibration report.
-
- 0
-
-
-
- string
- X position of the eight fiducials in the focal plane
-
- ???
-
-
-
-
- string
- Y position of the eight fiducials in the focal plane
-
- ???
-
-
-
-
- string
- Sample positions of the eight fiducials in the image
-
- ???
-
-
-
-
- string
- Line positions of the eight fiducials in the image
-
- ???
-
-
-
-
- cube
- Template cube containing average example of the eight fiducials
-
- ???
-
- None
-
-
-
- string
- Five radial optical distortion coefficients (k0-k4)
-
- ???
-
-
-
-
- string
- Four decentering distortion coefficients (p1-p4)
-
- ???
-
-
-
-
- double
- X coordinate for calibrated principal point
-
- ???
-
-
-
-
- double
- Y coordinate for calibrated principal point
-
- ???
-
-
-
-
- double
- X coordinate for indicated principal point
-
- ???
-
-
-
-
- double
- Y coordinate for indicated principal point
-
- ???
-
-
-
-
-
-
-
-
- string
- Unknown
- Roll number containing the image
-
- The film roll number that contained this image. This can typically be found on the image.
-
-
-
-
- string
- Unknown
- Frame number of the image
-
- The frame number on the roll. This can typically be found on the image.
-
-
-
-
- string
- Unknown
- Camera serial number
-
- The serial number of the camera. Often found in the calibration report.
-
-
-
-
- string
- Unknown
- Lense serial number
-
- The serial number of the lense. Often found in the calibration report.
-
-
-
-
- string
- Unknown
- Calibration report
-
- The USGS Report No. that contains the information used to define the interior orientation including focal length, optical distortion coefficients, and fiducial mark locations.
-
-
-
-
-
-
diff --git a/isis/src/local/apps/apinit/assets/NAPP6666.pdf b/isis/src/local/apps/apinit/assets/NAPP6666.pdf
deleted file mode 100644
index 50f408797117387f65e161386729ea42a3a218ec..0000000000000000000000000000000000000000
Binary files a/isis/src/local/apps/apinit/assets/NAPP6666.pdf and /dev/null differ
diff --git a/isis/src/local/apps/apinit/assets/apinit.csh b/isis/src/local/apps/apinit/assets/apinit.csh
deleted file mode 100755
index 65f4988f3b130dd77b686d3490ea5e3f0fa3bbae..0000000000000000000000000000000000000000
--- a/isis/src/local/apps/apinit/assets/apinit.csh
+++ /dev/null
@@ -1,2 +0,0 @@
-std2isis from=N10NAPPW06666039.tif to=ap.cub
-./apinit FROM=ap.cub DATETIME="1999-06-12T12:05" ALTITUDE=6096 CENTERLAT=39.9363 CENTERLON=255.285823 SHAPEMODEL=dtm.cub FOCALLENGTH=152.818 FIDUCIALX="-106.0, -0.003, 105.999, -110.005, 109.999, -106.008, -0.003, 105.998" FIDUCIALY="106.000, 109.999, 105.994, 0.002, 0.002, -105.999, -110.004, -105.999" FIDUCIALSAMPLE="574, 2040, 3500, 513, 3562, 578, 2039, 3497" FIDUCIALLINE="255, 194, 261, 1721, 1721, 3182, 3245, 3180" KCOEFS="1.27485E-05, 3.73255E-09, -6.95721E-13, 2.3884E-17, 0.0" PCOEFS="0, 0, 0, 0" XP=-0.004 YP=0 XIPP=-0.002 YIPP=0.001
diff --git a/isis/src/local/apps/apinit/assets/fidicualLocations.txt b/isis/src/local/apps/apinit/assets/fidicualLocations.txt
deleted file mode 100644
index 45a4fa204402ce898939cd52be7009bdffb9d1d1..0000000000000000000000000000000000000000
--- a/isis/src/local/apps/apinit/assets/fidicualLocations.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-"Sample","Line","Pixel","FileName","Notes"
-574.129,254.98,48,ap.cub,upper left
-2040.01,194.034,39,ap.cub,upper middle
-3500.48,260.738,57,ap.cub,upper right
-512.694,1720.96,44,ap.cub,Middle left
-3562.02,1721.35,55,ap.cub,Middle right
-578.203,3182.05,42,ap.cub,Lower left
-2039.45,3244.69,36,ap.cub,Lower middle
-3496.69,3179.83,42,ap.cub,Lower right
diff --git a/isis/src/local/apps/apinit/assets/handMade.net b/isis/src/local/apps/apinit/assets/handMade.net
deleted file mode 100644
index e075deca2170573208e5794e3781b5f19642f016..0000000000000000000000000000000000000000
--- a/isis/src/local/apps/apinit/assets/handMade.net
+++ /dev/null
@@ -1,115 +0,0 @@
-Object = ControlNetwork
- NetworkId = ApTest
- NetworkType = ImageToGround
- TargetName = Earth
- UserName = janderson
- Created = 2014-03-27T08:20:55
- LastModified = Null
- Description = "Test using hand made control points"
-
- Object = ControlPoint
- PointType = Ground
- PointId = jigTest01
- Latitude = 39.896561
- Longitude = 255.313117
- Radius = 6378140
-
- Group = ControlMeasure
- SerialNumber = Aircraft/AerialPhoto/-17538835.815374
- MeasureType = Estimated
- Sample = 3465
- Line = 868
- ErrorLine = 0.0
- ErrorSample = 0.0
- ErrorMagnitude = 0.0
- DateTime = 2008-01-03T15:20:26
- ChooserName = "Handmade"
- Reference = True
- End_Group
- End_Object
-
- Object = ControlPoint
- PointType = Ground
- PointId = jigTest02
- Latitude = 39.958793
- Longitude = 255.244731
- Radius = 6378140
-
- Group = ControlMeasure
- SerialNumber = Aircraft/AerialPhoto/-17538835.815374
- MeasureType = Estimated
- Sample = 1270
- Line = 2695
- ErrorLine = 0.0
- ErrorSample = 0.0
- ErrorMagnitude = 0.0
- DateTime = 2008-01-03T15:20:26
- ChooserName = "Handmade"
- Reference = True
- End_Group
- End_Object
-
- Object = ControlPoint
- PointType = Ground
- PointId = jigTest03
- Latitude = 39.972394
- Longitude = 255.302624
- Radius = 6378140
-
- Group = ControlMeasure
- SerialNumber = Aircraft/AerialPhoto/-17538835.815374
- MeasureType = Estimated
- Sample = 808
- Line = 1144
- ErrorLine = 0.0
- ErrorSample = 0.0
- ErrorMagnitude = 0.0
- DateTime = 2008-01-03T15:20:26
- ChooserName = "Handmade"
- Reference = True
- End_Group
- End_Object
-
- Object = ControlPoint
- PointType = Ground
- PointId = jigTest04
- Latitude = 39.967181
- Longitude = -104.700273
- Radius = 6378140
-
- Group = ControlMeasure
- SerialNumber = Aircraft/AerialPhoto/-17538835.815374
- MeasureType = Estimated
- Sample = 991
- Line = 1212
- ErrorLine = 0.0
- ErrorSample = 0.0
- ErrorMagnitude = 0.0
- DateTime = 2008-01-03T15:20:26
- ChooserName = "Handmade"
- Reference = True
- End_Group
- End_Object
-
- Object = ControlPoint
- PointType = Ground
- PointId = jigTest05
- Latitude = 39.907384
- Longitude = -104.761052
- Radius = 6378140
-
- Group = ControlMeasure
- SerialNumber = Aircraft/AerialPhoto/-17538835.815374
- MeasureType = Estimated
- Sample = 3068
- Line = 2873
- ErrorLine = 0.0
- ErrorSample = 0.0
- ErrorMagnitude = 0.0
- DateTime = 2008-01-03T15:20:26
- ChooserName = "Handmade"
- Reference = True
- End_Group
- End_Object
-End_Object
-End
diff --git a/isis/src/local/apps/apinit/tsts/Makefile b/isis/src/local/apps/apinit/tsts/Makefile
deleted file mode 100644
index 46d84c74c297304e943452a44e06b111f179a92b..0000000000000000000000000000000000000000
--- a/isis/src/local/apps/apinit/tsts/Makefile
+++ /dev/null
@@ -1,4 +0,0 @@
-BLANKS = "%-6s"
-LENGTH = "%-40s"
-
-include $(ISISROOT)/make/isismake.tststree
diff --git a/isis/src/local/apps/apinit/tsts/default/Makefile b/isis/src/local/apps/apinit/tsts/default/Makefile
deleted file mode 100644
index 1825fef55d029eda5cd619d7fa0ee9ddd7ee3616..0000000000000000000000000000000000000000
--- a/isis/src/local/apps/apinit/tsts/default/Makefile
+++ /dev/null
@@ -1,29 +0,0 @@
-APPNAME = apinit
-
-include $(ISISROOT)/make/isismake.tsts
-
-commands:
- std2isis from=$(INPUT)/N10NAPPW06666039.tif \
- to=$(OUTPUT)/N10NAPPW06666039.cub \
- > /dev/null;
- $(APPNAME) from=$(OUTPUT)/N10NAPPW06666039.cub \
- DATETIME="1999-06-12T12:05" \
- ALTITUDE=6096 \
- CENTERLAT=39.9363 \
- CENTERLON=255.285823 \
- SHAPEMODEL=$(INPUT)/dtm.cub \
- FOCALLENGTH=152.818 \
- FIDUCIALX="-106.0, -0.003, 105.999, -110.005, 109.999, -106.008, -0.003, 105.998" \
- FIDUCIALY="106.000, 109.999, 105.994, 0.002, 0.002, -105.999, -110.004, -105.999" \
- FIDUCIALSAMPLE="574, 2040, 3500, 513, 3562, 578, 2039, 3497" \
- FIDUCIALLINE="255, 194, 261, 1721, 1721, 3182, 3245, 3180" \
- KCOEFS="1.27485E-05, 3.73255E-09, -6.95721E-13, 2.3884E-17, 0.0" \
- PCOEFS="0, 0, 0, 0" \
- XP=-0.004 \
- YP=0 \
- XIPP=-0.002 \
- YIPP=0.001 \
- > /dev/null;
- catlab from=$(OUTPUT)/N10NAPPW06666039.cub \
- to=$(OUTPUT)/N10NAPPW06666039.pvl \
- > /dev/null;
diff --git a/isis/src/local/apps/basemapmos/Makefile b/isis/src/local/apps/basemapmos/Makefile
deleted file mode 100644
index 7578f0b21d038db6a5042c095cda9b34b6bb2570..0000000000000000000000000000000000000000
--- a/isis/src/local/apps/basemapmos/Makefile
+++ /dev/null
@@ -1,7 +0,0 @@
-ifeq ($(ISISROOT), $(BLANK))
-.SILENT:
-error:
- echo "Please set ISISROOT";
-else
- include $(ISISROOT)/make/isismake.apps
-endif
\ No newline at end of file
diff --git a/isis/src/local/apps/basemapmos/assets/cubes.lis b/isis/src/local/apps/basemapmos/assets/cubes.lis
deleted file mode 100644
index 29a2c43943159ba6b611382680bc23c3b9d8413b..0000000000000000000000000000000000000000
--- a/isis/src/local/apps/basemapmos/assets/cubes.lis
+++ /dev/null
@@ -1,3 +0,0 @@
-cube1.cub
-cube2.cub
-cube3.cub
diff --git a/isis/src/local/apps/basemapmos/assets/images/basemapresult.jpg b/isis/src/local/apps/basemapmos/assets/images/basemapresult.jpg
deleted file mode 100644
index 60852b5a7be3a2f0d0833feb4fc3fe80875bb9c6..0000000000000000000000000000000000000000
Binary files a/isis/src/local/apps/basemapmos/assets/images/basemapresult.jpg and /dev/null differ
diff --git a/isis/src/local/apps/basemapmos/assets/images/cube1.jpg b/isis/src/local/apps/basemapmos/assets/images/cube1.jpg
deleted file mode 100644
index e58ee74562b3091503529e9c6eaea99d4f8c492a..0000000000000000000000000000000000000000
Binary files a/isis/src/local/apps/basemapmos/assets/images/cube1.jpg and /dev/null differ
diff --git a/isis/src/local/apps/basemapmos/assets/images/cube2.jpg b/isis/src/local/apps/basemapmos/assets/images/cube2.jpg
deleted file mode 100644
index be87b7148e3c858df9e5276e15c8f66eac84338e..0000000000000000000000000000000000000000
Binary files a/isis/src/local/apps/basemapmos/assets/images/cube2.jpg and /dev/null differ
diff --git a/isis/src/local/apps/basemapmos/assets/images/cube3.jpg b/isis/src/local/apps/basemapmos/assets/images/cube3.jpg
deleted file mode 100644
index 37e71a4195bc2e76b4faf7a6892a4e6f58ca5782..0000000000000000000000000000000000000000
Binary files a/isis/src/local/apps/basemapmos/assets/images/cube3.jpg and /dev/null differ
diff --git a/isis/src/local/apps/basemapmos/assets/thumbs/basemapresultthumb.jpg b/isis/src/local/apps/basemapmos/assets/thumbs/basemapresultthumb.jpg
deleted file mode 100644
index 8ecd741953cdead23e7b6a6343f9688531e54b9b..0000000000000000000000000000000000000000
Binary files a/isis/src/local/apps/basemapmos/assets/thumbs/basemapresultthumb.jpg and /dev/null differ
diff --git a/isis/src/local/apps/basemapmos/basemapmos.cpp b/isis/src/local/apps/basemapmos/basemapmos.cpp
deleted file mode 100644
index 91c2cc68023ff94bc7d0dc89e18c91314906837f..0000000000000000000000000000000000000000
--- a/isis/src/local/apps/basemapmos/basemapmos.cpp
+++ /dev/null
@@ -1,158 +0,0 @@
-#include "Isis.h"
-
-#include
-#include
-
-#include
-
-#include "Application.h"
-#include "Cube.h"
-#include "FileList.h"
-#include "ProgramLauncher.h"
-
-using namespace std;
-using namespace Isis;
-
-void IsisMain() {
-
- //Get user parameters
- UserInterface &ui = Application::GetUserInterface();
- FileList cubes;
- cubes.read(ui.GetFileName("FROMLIST"));
- QString PRIORITY = ui.GetString("PRIORITY");
- QString HNS1 = ui.GetAsString("HNS1");
- QString HNL1 = ui.GetAsString("HNL1");
- QString HNS2 = ui.GetAsString("HNS2");
- QString HNL2 = ui.GetAsString("HNL2");
- QString LNS = ui.GetAsString("LNS");
- QString LNL = ui.GetAsString("LNL");
- QString GRANGE = ui.GetString("GRANGE");
- QString MINLAT, MAXLAT, MINLON, MAXLON;
- if(GRANGE == "USER") {
- MINLAT = ui.GetAsString("MINLAT");
- MAXLAT = ui.GetAsString("MAXLAT");
- MINLON = ui.GetAsString("MINLON");
- MAXLON = ui.GetAsString("MAXLON");
- }
- QString MATCHBANDBIN = ui.GetAsString("MATCHBANDBIN");
-
- // Sets up the pathName to be used for most application calls
- QString pathName = FileName("$TEMPORARY/").path() + "/";
- QString cubeListBaseName = pathName + FileName(ui.GetFileName("FROMLIST")).baseName();
-
- //Creates the first highpass cubes
- std::ofstream firstHighPassList;
- QString firstHighPass(cubeListBaseName + "_FirstHighPassList.lis");
- firstHighPassList.open(firstHighPass.toLatin1().data());
- for (int i = 0; i < cubes.size(); i++) {
- FileName inFile = cubes[i];
- QString outParam = pathName + inFile.baseName() + "_hpffirst.cub";
- QString parameters = "FROM=" + inFile.expanded()
- + " TO=" + outParam
- + " SAMPLES= " + HNS1
- + " LINES= " + HNL1;
- ProgramLauncher::RunIsisProgram("highpass", parameters);
- //Reads the just created highpass cube into a list file for automos
- firstHighPassList << outParam << endl;
- }
- firstHighPassList.close();
-
- //Creates the second highpass cubes
- std::ofstream secondHighPassList;
- QString secondHighPass(cubeListBaseName + "_SecondHighPassList.lis");
- secondHighPassList.open(secondHighPass.toLatin1().data());
- for(int i = 0; i < cubes.size(); i++) {
- FileName inFile = cubes[i];
- QString outParam = pathName + inFile.baseName() + "_hpfsecond.cub";
- QString parameters = "FROM=" + inFile.expanded()
- + " TO=" + outParam
- + " SAMPLES= " + HNS2
- + " LINES= " + HNL2;
- ProgramLauncher::RunIsisProgram("highpass", parameters);
- //Reads the just created highpass cube into a list file for automos
- secondHighPassList << outParam << endl;
- }
- secondHighPassList.close();
-
- //Makes a mosaic out of the first highpass cube filelist
- QString parameters = "FROM= " + cubeListBaseName + "_FirstHighPassList.lis MOSAIC="
- + cubeListBaseName + "_newmosFirst.cub"
- + " MATCHBANDBIN=" + MATCHBANDBIN
- + " GRANGE= " + GRANGE;
- if(PRIORITY == "BENEATH") {
- parameters += " PRIORITY=beneath";
- }
- if(GRANGE == "USER") {
- parameters += " MINLAT= " + MINLAT
- + " MINLON= " + MINLON
- + " MAXLAT= " + MAXLAT
- + " MAXLON= " + MAXLON;
- }
- ProgramLauncher::RunIsisProgram("automos", parameters);
-
- //Makes a mosaic out of the second highpass cube filelist
- parameters = "FROM= " + cubeListBaseName + "_SecondHighPassList.lis MOSAIC="
- + cubeListBaseName + "_newmosSecond.cub"
- + " MATCHBANDBIN=" + MATCHBANDBIN
- + " GRANGE= " + GRANGE;
- if(PRIORITY == "BENEATH") {
- parameters += " PRIORITY=beneath";
- }
- if(GRANGE == "USER") {
- parameters += " MINLAT= " + MINLAT
- + " MINLON= " + MINLON
- + " MAXLAT= " + MAXLAT
- + " MAXLON= " + MAXLON;
- }
- ProgramLauncher::RunIsisProgram("automos", parameters);
-
- //Does a lowpass on the Second highpass
- parameters = "FROM=" + cubeListBaseName + "_newmosSecond.cub"
- + " TO=" + cubeListBaseName + "_lpfmos.cub"
- + " SAMPLES=" + LNS
- + " LINES=" + LNL
- + " FILTER=inside";
- ProgramLauncher::RunIsisProgram("lowpass", parameters);
-
- //Finally combines the first highpass and lowpass mosaics
- parameters = "FROM=" + cubeListBaseName + "_newmosFirst.cub" +
- " FROM2=" + cubeListBaseName + "_lpfmos.cub" +
- " TO= " + cubeListBaseName + "_untrimmedmoc.cub" +
- " OPERATOR= add";
- ProgramLauncher::RunIsisProgram("algebra", parameters);
-
- //Concludes with a maptrim of the final product
- parameters = "FROM=" + cubeListBaseName + "_untrimmedmoc.cub" +
- " TO=" + ui.GetAsString("TO");
- if(GRANGE == "USER") {
- parameters += " MINLAT= " + MINLAT
- + " MINLON= " + MINLON
- + " MAXLAT= " + MAXLAT
- + " MAXLON= " + MAXLON;
- }
- ProgramLauncher::RunIsisProgram("maptrim", parameters);
-
-
- //Will remove all of the temp files by default
- if(ui.GetBoolean("REMOVETEMP")) {
- QString newmosFirst(cubeListBaseName + "_newmosFirst.cub");
- QString newmosSecond(cubeListBaseName + "_newmosSecond.cub");
- QString lpfmos(cubeListBaseName + "_lpfmos.cub");
- QString untrimmedmoc(cubeListBaseName + "_untrimmedmoc.cub");
- QFile::remove(firstHighPass);
- QFile::remove(secondHighPass);
- QFile::remove(newmosFirst);
- QFile::remove(newmosSecond);
- QFile::remove(lpfmos);
- QFile::remove(untrimmedmoc);
- for(int i = 0; i < cubes.size(); i++) {
- FileName inFile = cubes[i];
- QString hpffirst(pathName + inFile.baseName() + "_hpffirst.cub");
- QString hpfsecond(pathName + inFile.baseName() + "_hpfsecond.cub");
- QFile::remove(hpffirst);
- QFile::remove(hpfsecond);
- }
- }
-
-
-}
diff --git a/isis/src/local/apps/basemapmos/basemapmos.xml b/isis/src/local/apps/basemapmos/basemapmos.xml
deleted file mode 100644
index b55b3ea45976c36a6100d119a25911e6ce953b83..0000000000000000000000000000000000000000
--- a/isis/src/local/apps/basemapmos/basemapmos.xml
+++ /dev/null
@@ -1,368 +0,0 @@
-
-
-
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:noNamespaceSchemaLocation="http://isis.astrogeology.usgs.gov/Schemas/Application/application.xsd">
-
- Creates a flattened mosaic using a list of map projected cubes
-
-
- This program uses a text-based list of cubes, all in the same map projection
- and equivalent projection parameters (PixelResolution, CenterLongitude,
- LatitudeSystem, etc), to generate a flattened mosaic. The size of the
- mosaic will be determined automatically unless specified by the user. In
- addition, this final mosaic will be trimmed as a final step. This trim will
- be determined automatically unless specified by the user.
-
-
-
- Mosaicking
-
-
-
-
- Original version
-
-
- Added a maptrim execution to the final product.
-
-
- Added the Priority parameter.
-
-
- Fixed handling of temporary files
-
-
-
-
-
-
-
- filename
- input
-
- List of cubes to mosaic
-
-
- A list of map projected cubes to mosaic and flatten. The Mapping
- groups must match in order to mosaic the cubes. Also, this list
- should be in the same directory as the input cubes listed by the list.
-
-
- *.txt *.lis *.lst
-
-
-
- cube
- output
-
- Mosaic output cube
-
-
- The trimmed flattened mosaic cube which is created from the cubes
- listed by the input list.
-
-
- *.cub
-
-
-
-
- string
-
- ONTOP
-
- The priority of pixel placement
-
- This parameter is used to select one of two ways to mosaic the
- pixels in areas of overlap.
-
-
-
-
-
-
-
-
-
-
-
- integer
- 101
-
- Number of samples in the first high frequency data boxcar
-
- This is the total number of samples in the first high frequency data
- boxcar. It must be odd and can not exceed twice the number of samples
- in the input cubes. In general, the size of the boxcar should be specified and does not cause
- the program to operate significantly slower.
-
-
- 1
-
-
- integer
- 101
-
- Number of lines in the first high frequency data boxcar
-
- This is the total number of lines in the second high
- frequency data boxcar. It must be odd and can not exceed twice the
- number of lines in the input cubes. In general, the size of the
- boxcar should be specified and does not cause the program to operate
- significantly slower.
-
-
- 1should be specified and
-
-
- integer
- 501
- Number of samples in the second high frequency data boxcar
-
- This is the total number of samples in the second high
- frequency data boxcar. It must be odd and can not exceed twice the
- number of samples in the input cubes. In general, the size of the
- boxcar should be specified and does not cause the program to operate significantly slower.
-
-
- 1
-
-
- integer
- 501
-
- Number of lines in the second high frequency data boxcar
-
- This is the total number of lines in the second high
- frequency data boxcar. It must be odd and can not exceed twice the
- number of lines in the input cubes. In general, the size of the
- boxcar should be specified and does not cause the program to operate significantly slower.
-
-
- 1
-
-
- integer
- 101
-
- Number of samples in low frequency data boxcar
-
-
- This is the total number of samples in the low frequency data boxcar.
- It must be odd and can not exceed twice the number of samples in the
- output mosaic. In general, the size of the boxcar should be specified
- and does not cause the program to operate significantly slower.
-
-
- 1
-
-
- integer
- 101
-
- Number of lines in low frequency data boxcar
-
-
- This is the total number of lines in the low frequency data boxcar. It
- must be odd and can not exceed twice the number of lines in the output
- mosaic. In general, the size of the boxcar should be specified and
- does not cause the program to operate significantly slower.
-
-
- 1
-
-
-
-
-
- string
- AUTO
- Ground Range Options
-
- The ground range can either be calculated automatically or entered by the user.
- If the USER option is selected, values must be entered for the MINLAT, MAXLAT,
- MINLON, and MAXLON parameters. AUTO is the default for this parameter.
-
-
-
-
-
-
-
- double
- Minimum Latitude
-
- The minimum latitude value to use in the mosaic.
-
-
-
- double
- Maximum Latitude
-
- The maximum latitude value to use in the mosaic.
-
-
-
- double
- Minimum Longitude
-
- The minimum longitude value to use in the mosaic.
-
-
-
- double
- Maximum Longitude
-
- The maximum longitude value to use in the mosaic.
-
-
-
-
-
-
- boolean
- TRUE
- Enforce BandBin Group Match
-
- This option causes the application to fail if the input bandbin group does not
- match the mosaic bandbin group. NOTE: In the case of failure,
- intermediate data may not be removed.
-
-
-
-
-
-
- boolean
-
- TRUE
-
-
- Destroy intermediate data
-
-
- Multiple cube images as well as lists are created durring the
- production of the final flattened mosaic. If this parameter is
- changed to false, those temporary cubes and lists will not be removed.
- REMOVETEMP should only be set to false when your current directory
- contains the input list as well as all of the input cubes. Otherwise,
- all intermediate lists will be created in the current directory, and
- all of the intermediate cubes will be created in the same directory as
- the input cubes.
-
-
-
-
-
-
-
-
-
- Basemapmos Result
-
- This example shows how basemapmos works upon a small mosaic.
-
-
-
- FROMLIST=cubes.lis
- TO=final.cub HNS1=73 HNL1=73 HNS2=103 HNL2=103 LNS=83
- LNL=83
-
- Runs basemapmos with the first highpass filter being 73x73,
- the second highpass filter being 103x103, and a 83x83
- lowpass filter.
-
-
-
-
-
- cubes.lis
-
- This is a simple file that lists all of the cubes to mosaic.
- This list as well as the cubes to be mosaiced should
- be within the current directory when noseam is executed.
-
- FROMLIST
-
-
-
-
-
- First listed cube
-
- This is the first cube listed in cubes.lis
-
-
-
-
- Second listed cube
-
- This is the second cube listed in cubes.lis
-
-
-
-
- Third listed cube
-
- This is the third cube listed in cubes.lis
-
-
-
-
-
-
-
- The resulting mosaic
-
- This is the resulting mosaic final.cub.
-
-
- TO
-
-
-
-
-
-
-
-
diff --git a/isis/src/local/apps/basemapmos/tsts/Makefile b/isis/src/local/apps/basemapmos/tsts/Makefile
deleted file mode 100644
index 46d84c74c297304e943452a44e06b111f179a92b..0000000000000000000000000000000000000000
--- a/isis/src/local/apps/basemapmos/tsts/Makefile
+++ /dev/null
@@ -1,4 +0,0 @@
-BLANKS = "%-6s"
-LENGTH = "%-40s"
-
-include $(ISISROOT)/make/isismake.tststree
diff --git a/isis/src/local/apps/basemapmos/tsts/default/Makefile b/isis/src/local/apps/basemapmos/tsts/default/Makefile
deleted file mode 100644
index 0e098352663ba74adbedf70585e47cf871e4bb5c..0000000000000000000000000000000000000000
--- a/isis/src/local/apps/basemapmos/tsts/default/Makefile
+++ /dev/null
@@ -1,14 +0,0 @@
-APPNAME = basemapmos
-
-include $(ISISROOT)/make/isismake.tsts
-
-commands:
- $(LS) $(INPUT)/* > $(OUTPUT)/cubes.lis;
- $(APPNAME) FROMLIST=$(OUTPUT)/cubes.lis \
- TO=$(OUTPUT)/result.cub \
- HNS1=73 HNL1=73 HNS2=103 HNL2=103 LNS=83 LNL=83 > /dev/null;
- $(APPNAME) FROMLIST=$(OUTPUT)/cubes.lis \
- TO=$(OUTPUT)/userrangeresult.cub \
- GRANGE=USER MINLAT=18 MAXLAT=37 MINLON=12 MAXLON=28 \
- HNS1=73 HNL1=73 HNS2=103 HNL2=103 LNS=83 LNL=83 > /dev/null;
- $(RM) $(OUTPUT)/cubes.lis;
diff --git a/isis/src/local/apps/camcoeffs/Makefile b/isis/src/local/apps/camcoeffs/Makefile
deleted file mode 100644
index 7578f0b21d038db6a5042c095cda9b34b6bb2570..0000000000000000000000000000000000000000
--- a/isis/src/local/apps/camcoeffs/Makefile
+++ /dev/null
@@ -1,7 +0,0 @@
-ifeq ($(ISISROOT), $(BLANK))
-.SILENT:
-error:
- echo "Please set ISISROOT";
-else
- include $(ISISROOT)/make/isismake.apps
-endif
\ No newline at end of file
diff --git a/isis/src/local/apps/camcoeffs/assets/output.txt b/isis/src/local/apps/camcoeffs/assets/output.txt
deleted file mode 100644
index 8904b421f6590928e017395ee0c46dfe4dbbbe63..0000000000000000000000000000000000000000
--- a/isis/src/local/apps/camcoeffs/assets/output.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-Results
- INS-41219_TRANSX = (0.2589180702, -0.0069999992, 3.3598e-06)
- INS-41219_TRANSY = (-59.9867757282, 3.3598e-06, -0.0069999992)
- INS-41219_TRANSS = (32.875172540392, -142.85719209406, -0.068567378407362)
- INS-41219_TRANSL = (-8569.5245899736, -0.068567378407362, -142.85719209406)
-End_Group
diff --git a/isis/src/local/apps/camcoeffs/camcoeffs.cpp b/isis/src/local/apps/camcoeffs/camcoeffs.cpp
deleted file mode 100644
index 989ab9d8e1b3939fa5b72d1b135482414522cc77..0000000000000000000000000000000000000000
--- a/isis/src/local/apps/camcoeffs/camcoeffs.cpp
+++ /dev/null
@@ -1,185 +0,0 @@
-#include "Isis.h"
-
-#include
-#include
-
-#include "IException.h"
-
-using namespace std;
-using namespace Isis;
-
-void IsisMain() {
- UserInterface &ui = Application::GetUserInterface();
-
- double eq1[] = {
- ui.GetDouble("XCONSTCOEF"),
- ui.GetDouble("XSAMPLECOEF"),
- ui.GetDouble("XLINECOEF"),
- };
- double eq2[] = {
- ui.GetDouble("YCONSTCOEF"),
- ui.GetDouble("YSAMPLECOEF"),
- ui.GetDouble("YLINECOEF"),
- };
-
- double res1[3] = {0.0, 0.0, 0.0};
- double res2[3] = {0.0, 0.0, 0.0};
-
- bool solutionFound = false;
-
- /**
- * Do this loop in order to shorten the number of solutions we have
- * to program in. This halves the number of cases by saying "What if equation 1
- * is really equation 2, and equation 2 is really equation 1?" The solution
- * will also be flipped, which is handled if order becomes 1.
- *
- * order = 0 means the equations are in their original form, order = 1 means
- * they were swapped.
- */
- for(int order = 0; !solutionFound && order < 2; order++) {
- double A = eq1[0];
- double B = eq1[1];
- double C = eq1[2];
- double D = eq2[0];
- double E = eq2[1];
- double F = eq2[2];
-
- if(order == 1) {
- A = eq2[0];
- B = eq2[1];
- C = eq2[2];
- D = eq1[0];
- E = eq1[1];
- F = eq1[2];
- }
-
- solutionFound = true;
-
- // These are used to test solution dependencies, they become zero if the
- // equations are parallel and thus unsolvable
- double denomX = (F == 0) ? 0.0 : B - (E * C / F);
- double denomY = (E == 0) ? 0.0 : C - (F * B / E);
- if(B != 0 && E != 0 && F != 0 && denomX != 0 && denomY != 0) {
- /**
- * Input Equations:
- * X = A + BS + CL
- * Y = D + ES + FL
- *
- * Dependencies:
- * B != 0, E != 0, F != 0, (B-EC/F) != 0, (C-FB/E) != 0
- *
- * Inverses:
- * S = ((DC/F-A)/(B-EC/F)) + (1/(B-EC/F))X + ((-C/F)/(B-EC/F))Y
- * L = (DB/E-A)/(C-FB/E) + (1/(C-FB/E))X + ((-B/E)/(C-FB/E))Y
- */
- res1[0] = (D * C / F - A) / denomX;
- res1[1] = 1.0 / denomX;
- res1[2] = -(C / F) / denomX;
- res2[0] = (D * B / E - A) / denomY;
- res2[1] = 1.0 / denomY;
- res2[2] = (-B / E) / denomY;
- }
- else if(C != 0 && E != 0 && B == 0) {
- /**
- * Input Equations:
- * X = A + CL
- * Y = D + ES + FL
- *
- * Dependencies:
- * C != 0, E != 0, B == 0
- *
- * Inverses:
- * S = ((FA)/(CE) - D/E) + (-F/(CE))X + (1/E)Y
- * L = (-A/C) + (1/C)X + 0.0Y
- */
- res1[0] = (F * A) / (C * E) - D / E;
- res1[1] = -F / (C * E);
- res1[2] = 1.0 / E;
- res2[0] = -A / C;
- res2[1] = 1.0 / C;
- res2[2] = 0.0;
- }
- else {
- solutionFound = false;
- }
-
- // If we found a swapped sol'n, the x coefficient is really
- // the y coefficient at this point. The constants are correct.
- if(order == 1 && solutionFound) {
- double tmp = res1[1];
- res1[1] = res1[2];
- res1[2] = tmp;
-
- tmp = res2[1];
- res2[1] = res2[2];
- res2[2] = tmp;
- }
- }
-
- if(!solutionFound) {
- throw IException(IException::Unknown, "Not enough information", _FILEINFO_);
- }
-
- QString inEquationX = "X = " + toString(eq1[0]);
- inEquationX += " + " + toString(eq1[1]) + "S";
- inEquationX += " + " + toString(eq1[2]) + "L";
- QString inEquationY = "Y = " + toString(eq2[0]);
- inEquationY += " + " + toString(eq2[1]) + "S";
- inEquationY += " + " + toString(eq2[2]) + "L";
- QString outEquationS = "S = " + toString(res1[0]);
- outEquationS += " + " + toString(res1[1]) + "X";
- outEquationS += " + " + toString(res1[2]) + "Y";
- QString outEquationL = "L = " + toString(res2[0]);
- outEquationL += " + " + toString(res2[1]) + "X";
- outEquationL += " + " + toString(res2[2]) + "Y";
-
- // check....
- /*
- double rndS = 12;
- double rndL = 534;
-
- double x = eq1[0] + rndS*eq1[1] + rndL*eq1[2];
- double y = eq2[0] + rndS*eq2[1] + rndL*eq2[2];
- double s = res1[0] + x*res1[1] + y*res1[2];
- double l = res2[0] + x*res2[1] + y*res2[2];
-
- if(fabs(rndS - s) > 1E-12 || fabs(rndL - l) > 1E-12) {
- std::cerr << "Equation Fails!" << std::endl;
- std::cerr << "Differences: " << fabs(rndS - s) << "," << fabs(rndL - l) << std::endl;
- }
- */
-
- PvlGroup res("Results");
-
- if(ui.WasEntered("IAKCODE")) {
- PvlKeyword naifFormatX("INS" + ui.GetString("IAKCODE") + "_TRANSX");
- naifFormatX += toString(eq1[0]);
- naifFormatX += toString(eq1[1]);
- naifFormatX += toString(eq1[2]);
- PvlKeyword naifFormatY("INS" + ui.GetString("IAKCODE") + "_TRANSY");
- naifFormatY += toString(eq2[0]);
- naifFormatY += toString(eq2[1]);
- naifFormatY += toString(eq2[2]);
- PvlKeyword naifFormatS("INS" + ui.GetString("IAKCODE") + "_ITRANSS");
- naifFormatS += toString(res1[0]);
- naifFormatS += toString(res1[1]);
- naifFormatS += toString(res1[2]);
- PvlKeyword naifFormatL("INS" + ui.GetString("IAKCODE") + "_ITRANSL");
- naifFormatL += toString(res2[0]);
- naifFormatL += toString(res2[1]);
- naifFormatL += toString(res2[2]);
-
- res += naifFormatX;
- res += naifFormatY;
- res += naifFormatS;
- res += naifFormatL;
- }
- else {
- res += PvlKeyword("EquationX", inEquationX);
- res += PvlKeyword("EquationY", inEquationY);
- res += PvlKeyword("EquationS", outEquationS);
- res += PvlKeyword("EquationL", outEquationL);
- }
-
- Application::Log(res);
-}
diff --git a/isis/src/local/apps/camcoeffs/camcoeffs.xml b/isis/src/local/apps/camcoeffs/camcoeffs.xml
deleted file mode 100644
index a7152c0d77f9e4591f4143cf782619c28d08f3de..0000000000000000000000000000000000000000
--- a/isis/src/local/apps/camcoeffs/camcoeffs.xml
+++ /dev/null
@@ -1,126 +0,0 @@
-
-
-
-
- This program calculates TRANSX,TRANSY from TRANSS, TRANSL for iak kernels
-
-
-
- This program outputs the exact IAK Kernel keywords that should be added to the kernel. The
- TRANSX,TRANSY keywords are the result of the input (no processing done, this should be known information).
- These values were provides as parameters to this program. The TRANSS,TRANSL keywords are calculated based on
- the TRANSX,TRANSY keywords and are the result of this program. The keywords can be copied directly into the
- pertinent IAK kernel.
-
-
-
- System
-
-
-
-
- Original Version
-
-
-
-
-
-
- string
- Output Equations
-
- The IAK code of the TRANS values
-
-
- This IAK code of the TRANS values, a negative number (such as -41210) is expected.
-
-
-
-
-
- double
-
- Focal Plane X Constant Coefficient
-
-
- This is the first value in the TRANSY keyword, which represents the focal plane X constant coefficient.
-
-
-
- double
-
- Focal Plane X Sample Coefficient
-
-
- This is the second value in the TRANSY keyword, which represents the focal plane X sample coefficient.
-
-
-
- double
-
- Focal Plane X Line Coefficient
-
-
- This is the third value in the TRANSY keyword, which represents the focal plane X line coefficient.
-
-
-
- double
-
- Focal Plane Y Constant Coefficient
-
-
- This is the first value in the TRANSY keyword, which represents the focal plane Y constant coefficient.
-
-
-
- double
-
- Focal Plane Y Sample Coefficient
-
-
- This is the second value in the TRANSY keyword, which represents the focal plane Y sample coefficient.
-
-
-
- double
-
- Focal Plane Y Line Coefficient
-
-
- This is the third value in the TRANSY keyword, which represents the focal plane Y line coefficient.
-
-
-
-
-
-
-
- Getting the TRANSX,TRANSY keywords for an IAK Kernel
-
- This example shows how to get the TRANSX,TRANSY keywords for an IAK
- Kernel when given the TRANSS, TRANSL keywords
-
-
-
- iakcode=-41219 xc=0.2589180702 xs=-0.0069999992 xl=0.0000033598 yc=-59.9867757282 ys=0.0000033598 yl=-0.0069999992
-
-
- This is a typical run
-
-
-
-
- The Output
-
- This program outputs the exact IAK Kernel keywords that should be added to the kernel. The
- TRANSX,TRANSY keywords are the result of the input (no processing done, this should be known information).
- These values were provides as parameters to this program. The TRANSS,TRANSL keywords are calculated based on
- the TRANSX,TRANSY keywords and are the result of this program. The keywords can be copied directly into the
- pertinent IAK kernel.
-
-
-
-
-
-
diff --git a/isis/src/local/apps/camcoeffs/tsts/Makefile b/isis/src/local/apps/camcoeffs/tsts/Makefile
deleted file mode 100644
index 46d84c74c297304e943452a44e06b111f179a92b..0000000000000000000000000000000000000000
--- a/isis/src/local/apps/camcoeffs/tsts/Makefile
+++ /dev/null
@@ -1,4 +0,0 @@
-BLANKS = "%-6s"
-LENGTH = "%-40s"
-
-include $(ISISROOT)/make/isismake.tststree
diff --git a/isis/src/local/apps/camcoeffs/tsts/default/Makefile b/isis/src/local/apps/camcoeffs/tsts/default/Makefile
deleted file mode 100644
index 7912c159e560cdaee037e6fe19f444e613a8f20b..0000000000000000000000000000000000000000
--- a/isis/src/local/apps/camcoeffs/tsts/default/Makefile
+++ /dev/null
@@ -1,15 +0,0 @@
-APPNAME = camcoeffs
-
-include $(ISISROOT)/make/isismake.tsts
-
-commands:
- $(APPNAME) XCONSTCOEF=0 XSAMPLECOEF=4 XLINECOEF=0 \
- YCONSTCOEF=0 YSAMPLECOEF=0 YLINECOEF=2 > $(OUTPUT)/simple.txt;
- $(APPNAME) XCONSTCOEF=0 XSAMPLECOEF=0 XLINECOEF=4 \
- YCONSTCOEF=0 YSAMPLECOEF=2 YLINECOEF=0 > $(OUTPUT)/simple2.txt;
- $(APPNAME) XCONSTCOEF=10 XSAMPLECOEF=1 XLINECOEF=4 \
- YCONSTCOEF=5 YSAMPLECOEF=2 YLINECOEF=0 > $(OUTPUT)/missingLineCoef.txt;
- $(APPNAME) XCONSTCOEF=10 XSAMPLECOEF=1 XLINECOEF=0 \
- YCONSTCOEF=5 YSAMPLECOEF=2 YLINECOEF=4 > $(OUTPUT)/missingLineCoef2.txt;
- $(APPNAME) XCONSTCOEF=10 XSAMPLECOEF=1 XLINECOEF=6 \
- YCONSTCOEF=5 YSAMPLECOEF=2 YLINECOEF=4 > $(OUTPUT)/complicated.txt;
diff --git a/isis/src/local/apps/camcoeffs/tsts/naifFormat/Makefile b/isis/src/local/apps/camcoeffs/tsts/naifFormat/Makefile
deleted file mode 100644
index 04f15f656caa918408954c4c323eee8d5b72fc1c..0000000000000000000000000000000000000000
--- a/isis/src/local/apps/camcoeffs/tsts/naifFormat/Makefile
+++ /dev/null
@@ -1,9 +0,0 @@
-APPNAME = camcoeffs
-
-include $(ISISROOT)/make/isismake.tsts
-
-commands:
- $(APPNAME) IAKCODE=-41219 XCONSTCOEF=0.2589180702 \
- XSAMPLECOEF=-0.0069999992 XLINECOEF=0.0000033598 \
- YCONSTCOEF=-59.9867757282 YSAMPLECOEF=0.0000033598 \
- YLINECOEF=-0.0069999992 > $(OUTPUT)/naif.txt;
diff --git a/isis/src/local/apps/camdev/Makefile b/isis/src/local/apps/camdev/Makefile
deleted file mode 100644
index 7578f0b21d038db6a5042c095cda9b34b6bb2570..0000000000000000000000000000000000000000
--- a/isis/src/local/apps/camdev/Makefile
+++ /dev/null
@@ -1,7 +0,0 @@
-ifeq ($(ISISROOT), $(BLANK))
-.SILENT:
-error:
- echo "Please set ISISROOT";
-else
- include $(ISISROOT)/make/isismake.apps
-endif
\ No newline at end of file
diff --git a/isis/src/local/apps/camdev/camdev.cpp b/isis/src/local/apps/camdev/camdev.cpp
deleted file mode 100644
index e2b9923a9e06d78d6b640904dd866303ed0dc3f4..0000000000000000000000000000000000000000
--- a/isis/src/local/apps/camdev/camdev.cpp
+++ /dev/null
@@ -1,761 +0,0 @@
-#include "Isis.h"
-
-#include
-
-#include "Angle.h"
-#include "Camera.h"
-#include "CameraDistortionMap.h"
-#include "CameraFocalPlaneMap.h"
-#include "Cube.h"
-#include "CubeManager.h"
-#include "Distance.h"
-#include "FileName.h"
-#include "IException.h"
-#include "iTime.h"
-#include "Longitude.h"
-#include "ProjectionFactory.h"
-#include "ProcessByBrick.h"
-#include "ProcessByLine.h"
-#include "SpecialPixel.h"
-#include "TProjection.h"
-
-using namespace std;
-using namespace Isis;
-
-// Global variables
-Camera *cam;
-TProjection *projection;
-int nbands;
-bool noCamera;
-
-bool dn;
-bool ra;
-bool declination;
-bool planetocentricLatitude;
-bool planetographicLatitude;
-bool positiveEast360Longitude;
-bool positiveEast180Longitude;
-bool positiveWest360Longitude;
-bool positiveWest180Longitude;
-bool bodyFixedX;
-bool bodyFixedY;
-bool bodyFixedZ;
-bool localRadius;
-bool pixelResolution;
-bool lineResolution;
-bool sampleResolution;
-bool detectorResolution;
-bool spacecraftPositionX;
-bool spacecraftPositionY;
-bool spacecraftPositionZ;
-bool spacecraftAzimuth;
-bool slantDistance;
-bool targetCenterDistance;
-bool subSpacecraftLatitude;
-bool subSpacecraftLongitude;
-bool subSpacecraftGroundAzimuth;
-bool spacecraftAltitude;
-bool offnadirAngle;
-bool sunPositionX;
-bool sunPositionY;
-bool sunPositionZ;
-bool sunAzimuth;
-bool solarDistance;
-bool subSolarLatitude;
-bool subSolarLongitude;
-bool subSolarGroundAzimuth;
-bool phase;
-bool emission;
-bool incidence;
-bool localEmission;
-bool localIncidence;
-bool northAzimuth;
-bool distortedFocalPlaneX;
-bool distortedFocalPlaneY;
-bool undistortedFocalPlaneX;
-bool undistortedFocalPlaneY;
-bool undistortedFocalPlaneZ;
-bool ephemerisTime;
-bool UTC;
-bool localSolarTime;
-bool solarLongitude;
-bool morphologyRank;
-bool albedoRank;
-
-
-
-void camdevDN(Buffer &in, Buffer &out);
-void camdev(Buffer &out);
-
-
-// Function to create a keyword with same values of a specified count
-template PvlKeyword makeKey(const QString &name,
- const int &nvals,
- const T &value);
-
-// Structure containing new mosaic planes
-struct MosData {
- MosData() : m_morph(Null), m_albedo(Null) { }
- double m_morph;
- double m_albedo;
-};
-
-// Computes the special MORPHOLOGYRANK and ALBEDORANK planes
-MosData *getMosaicIndicies(Camera &camera, MosData &md);
-// Updates BandBin keyword
-void UpdateBandKey(const QString &keyname, PvlGroup &bb, const int &nvals,
- const QString &default_value = "Null");
-
-
-
-void IsisMain() {
- UserInterface &ui = Application::GetUserInterface();
-
- // Get the camera information if this is not a mosaic. Otherwise, get the
- // projection information
- Process p1;
- Cube *icube = p1.SetInputCube("FROM", OneBand);
- if (ui.GetString("SOURCE") == "CAMERA") {
- noCamera = false;
- }
- else {
- noCamera = true;
- }
-
- if(noCamera) {
- try {
- projection = (TProjection *) icube->projection();
- }
- catch(IException &e) {
- QString msg = "Mosaic files must contain mapping labels";
- throw IException(e, IException::User, msg, _FILEINFO_);
- }
- }
- else {
- try {
- cam = icube->camera();
- }
- catch(IException &e) {
- QString msg = "If " + FileName(ui.GetFileName("FROM")).name() + " is a mosaic, make sure the SOURCE "
- "option is set to PROJECTION";
- throw IException(e, IException::User, msg, _FILEINFO_);
- }
- }
-
- // We will be processing by brick.
- ProcessByBrick p;
-
- // Find out which bands are to be created
- nbands = 0;
- ra = false;
- declination = false;
- planetographicLatitude = false;
- positiveEast180Longitude = false;
- positiveWest360Longitude = false;
- positiveWest180Longitude = false;
- bodyFixedX = false;
- bodyFixedY = false;
- bodyFixedZ = false;
- localRadius = false;
- lineResolution = false;
- sampleResolution = false;
- detectorResolution = false;
- spacecraftPositionX = false;
- spacecraftPositionY = false;
- spacecraftPositionZ = false;
- spacecraftAzimuth = false;
- slantDistance = false;
- targetCenterDistance = false;
- subSpacecraftLatitude = false;
- subSpacecraftLongitude = false;
- subSpacecraftGroundAzimuth = false;
- spacecraftAltitude = false;
- offnadirAngle = false;
- sunPositionX = false;
- sunPositionY = false;
- sunPositionZ = false;
- sunAzimuth = false;
- solarDistance = false;
- subSolarLatitude = false;
- subSolarLongitude = false;
- subSolarGroundAzimuth = false;
- phase = false;
- emission = false;
- incidence = false;
- localEmission = false;
- localIncidence = false;
- northAzimuth = false;
- distortedFocalPlaneX = false;
- distortedFocalPlaneY = false;
- undistortedFocalPlaneX = false;
- undistortedFocalPlaneY = false;
- undistortedFocalPlaneZ = false;
- ephemerisTime = false;
- UTC = false;
- localSolarTime = false;
- solarLongitude = false;
- morphologyRank = false;
- albedoRank = false;
-
-
- if (!noCamera) {
- if ((ra = ui.GetBoolean("RADEC"))) nbands++;
- if ((declination = ui.GetBoolean("RADEC"))) nbands++;
- if ((planetographicLatitude = ui.GetBoolean("PLANETOGRAPHICLATITUDE"))) nbands++;
- if ((positiveEast180Longitude = ui.GetBoolean("POSITIVEEAST180LONGITUDE"))) nbands++;
- if ((positiveWest360Longitude = ui.GetBoolean("POSITIVEWEST360LONGITUDE"))) nbands++;
- if ((positiveWest180Longitude = ui.GetBoolean("POSITIVEWEST180LONGITUDE"))) nbands++;
- if ((bodyFixedX = ui.GetBoolean("BODYFIXED"))) nbands++;
- if ((bodyFixedY = ui.GetBoolean("BODYFIXED"))) nbands++;
- if ((bodyFixedZ = ui.GetBoolean("BODYFIXED"))) nbands++;
- if ((localRadius = ui.GetBoolean("LOCALRADIUS"))) nbands++;
- if ((lineResolution = ui.GetBoolean("LINERESOLUTION"))) nbands++;
- if ((sampleResolution = ui.GetBoolean("SAMPLERESOLUTION"))) nbands++;
- if ((detectorResolution = ui.GetBoolean("DETECTORRESOLUTION"))) nbands++;
- if ((spacecraftPositionX = ui.GetBoolean("SPACECRAFTPOSITION"))) nbands++;
- if ((spacecraftPositionY = ui.GetBoolean("SPACECRAFTPOSITION"))) nbands++;
- if ((spacecraftPositionZ = ui.GetBoolean("SPACECRAFTPOSITION"))) nbands++;
- if ((spacecraftAzimuth = ui.GetBoolean("SPACECRAFTAZIMUTH"))) nbands++;
- if ((slantDistance = ui.GetBoolean("SLANTDISTANCE"))) nbands++;
- if ((targetCenterDistance = ui.GetBoolean("TARGETCENTERDISTANCE"))) nbands++;
- if ((subSpacecraftLatitude = ui.GetBoolean("SUBSPACECRAFTLATITUDE"))) nbands++;
- if ((subSpacecraftLongitude = ui.GetBoolean("SUBSPACECRAFTLONGITUDE"))) nbands++;
- if ((subSpacecraftGroundAzimuth = ui.GetBoolean("SUBSPACECRAFTGROUNDAZIMUTH"))) nbands++;
- if ((spacecraftAltitude = ui.GetBoolean("SPACECRAFTALTITUDE"))) nbands++;
- if ((offnadirAngle = ui.GetBoolean("OFFNADIRANGLE"))) nbands++;
- if ((sunPositionX = ui.GetBoolean("SUNPOSITION"))) nbands++;
- if ((sunPositionY = ui.GetBoolean("SUNPOSITION"))) nbands++;
- if ((sunPositionZ = ui.GetBoolean("SUNPOSITION"))) nbands++;
- if ((sunAzimuth = ui.GetBoolean("SUNAZIMUTH"))) nbands++;
- if ((solarDistance = ui.GetBoolean("SOLARDISTANCE"))) nbands++;
- if ((subSolarLatitude = ui.GetBoolean("SUBSOLARLATITUDE"))) nbands++;
- if ((subSolarLongitude = ui.GetBoolean("SUBSOLARLONGITUDE"))) nbands++;
- if ((subSolarGroundAzimuth = ui.GetBoolean("SUBSOLARGROUNDAZIMUTH"))) nbands++;
- if ((phase = ui.GetBoolean("PHASE"))) nbands++;
- if ((incidence = ui.GetBoolean("INCIDENCE"))) nbands++;
- if ((emission = ui.GetBoolean("EMISSION"))) nbands++;
- if ((localEmission = ui.GetBoolean("LOCALEMISSION"))) nbands++;
- if ((localIncidence = ui.GetBoolean("LOCALINCIDENCE"))) nbands++;
- if ((northAzimuth = ui.GetBoolean("NORTHAZIMUTH"))) nbands++;
- if ((distortedFocalPlaneX = ui.GetBoolean("DISTORTEDFOCALPLANE"))) nbands++;
- if ((distortedFocalPlaneY = ui.GetBoolean("DISTORTEDFOCALPLANE"))) nbands++;
- if ((undistortedFocalPlaneX = ui.GetBoolean("UNDISTORTEDFOCALPLANE"))) nbands++;
- if ((undistortedFocalPlaneY = ui.GetBoolean("UNDISTORTEDFOCALPLANE"))) nbands++;
- if ((undistortedFocalPlaneZ = ui.GetBoolean("UNDISTORTEDFOCALPLANE"))) nbands++;
- if ((ephemerisTime = ui.GetBoolean("EPHEMERISTIME"))) nbands++;
- if ((UTC = ui.GetBoolean("UTC"))) nbands++;
- if ((localSolarTime = ui.GetBoolean("LOCALSOLARTIME"))) nbands++;
- if ((solarLongitude = ui.GetBoolean("SOLARLONGITUDE"))) nbands++;
- if ((morphologyRank = ui.GetBoolean("MORPHOLOGYRANK"))) nbands++;
- if ((albedoRank = ui.GetBoolean("ALBEDORANK"))) nbands++;
-
- }
- if((dn = ui.GetBoolean("DN"))) nbands++;
- if((planetocentricLatitude = ui.GetBoolean("PLANETOCENTRICLATITUDE"))) nbands++;
- if((positiveEast360Longitude = ui.GetBoolean("POSITIVEEAST360LONGITUDE"))) nbands++;
- if((pixelResolution = ui.GetBoolean("PIXELRESOLUTION"))) nbands++;
-
- if(nbands < 1) {
- QString message = "At least one parameter must be entered"
- "[PHASE, EMISSION, INCIDENCE, LATITUDE, LONGITUDE...]";
- throw IException(IException::User, message, _FILEINFO_);
- }
-
- // If outputting a a dn band, retrieve the orignal values for the filter name from the input cube,
- // if it exists. Otherwise, the default will be "DN"
- QString bname = "DN";
- if ( dn && icube->hasGroup("BandBin") ) {
- PvlGroup &mybb = icube->group("BandBin");
- if ( mybb.hasKeyword("Name") ) {
- bname = mybb["Name"][0];
- }
- else if ( mybb.hasKeyword("FilterName") ) {
- bname = mybb["FilterName"][0];
- }
- }
-
- // Create a bandbin group for the output label
- PvlKeyword name("Name");
- if (dn) name += bname;
- if (ra) name += "Right Ascension";
- if (declination) name += "Declination";
- if (planetocentricLatitude) name += "Planetocentric Latitude";
- if (planetographicLatitude) name += "Planetographic Latitude";
- if (positiveEast360Longitude) name += "Positive East 360 Longitude";
- if (positiveEast180Longitude) name += "Positive East 180 Longitude";
- if (positiveWest360Longitude) name += "Positive West 360 Longitude";
- if (positiveWest180Longitude) name += "Positive West 180 Longitude";
- if (bodyFixedX) name += "Body Fixed X";
- if (bodyFixedY) name += "Body Fixed Y";
- if (bodyFixedZ) name += "Body Fixed Z";
- if (localRadius) name += "Local Radius";
- if (pixelResolution) name += "Pixel Resolution";
- if (lineResolution) name += "Line Resolution";
- if (sampleResolution) name += "Sample Resolution";
- if (detectorResolution) name += "Detector Resolution";
- if (spacecraftPositionX) name += "Spacecraft Position X";
- if (spacecraftPositionY) name += "Spacecraft Position Y";
- if (spacecraftPositionZ) name += "Spacecraft Position Z";
- if (spacecraftAzimuth) name += "Spacecraft Azimuth";
- if (slantDistance) name += "Slant Distance";
- if (targetCenterDistance) name += "Target Center Distance";
- if (subSpacecraftLatitude) name += "Sub Spacecraft Latitude";
- if (subSpacecraftLongitude) name += "Sub Spacecraft Longitude";
- if (subSpacecraftGroundAzimuth) name += "Sub Spacecraft Ground Azimuth";
- if (spacecraftAltitude) name += "Spacecraft Altitude";
- if (offnadirAngle) name += "OffNadir Angle";
- if (sunPositionX) name += "Sun Position X";
- if (sunPositionY) name += "Sun Position Y";
- if (sunPositionZ) name += "Sun Position Z";
- if (sunAzimuth) name += "Sun Azimuth";
- if (solarDistance) name += "Solar Distance";
- if (subSolarLatitude) name += "Sub Solar Latitude";
- if (subSolarLongitude) name += "Sub Solar Longitude";
- if (subSolarGroundAzimuth) name += "Sub Solar Ground Azimuth";
- if (phase) name += "Phase Angle";
- if (incidence) name += "Incidence Angle";
- if (emission) name += "Emission Angle";
- if (localEmission) name += "Local Emission Angle";
- if (localIncidence) name += "Local Incidence Angle";
- if (northAzimuth) name += "North Azimuth";
- if (distortedFocalPlaneX) name += "Distorted Focal Plane X";
- if (distortedFocalPlaneY) name += "Distorted Focal Plane Y";
- if (undistortedFocalPlaneX) name += "Undistorted Focal Plane X";
- if (undistortedFocalPlaneY) name += "Undistorted Focal Plane Y";
- if (undistortedFocalPlaneZ) name += "Undistorted Focal Plane Z";
- if (ephemerisTime) name += "Ephemeris Time";
- if (UTC) name += "Coordinated Universal Time";
- if (localSolarTime) name += "Local Solar Time";
- if (solarLongitude) name += "Solar Longitude";
- if (morphologyRank) name += "morphologyRank";
- if (albedoRank) name += "albedoRank";
-
-
-
-
- // Create the output cube. Note we add the input cube to expedite propagation
- // of input cube elements (label, blobs, etc...). It will be cleared
- // prior to systematic processing only if the DN option is not selected.
- // If DN is chosen by the user, then we propagate the input buffer with a
- // different function - one that accepts both input and output buffers.
- (void) p.SetInputCube("FROM", OneBand);
- Cube *ocube = p.SetOutputCube("TO", icube->sampleCount(),
- icube->lineCount(), nbands);
- p.SetBrickSize(64, 64, nbands);
-
- if (dn) {
- // Process with input and output buffers
- p.StartProcess(camdevDN);
- }
- else {
- // Toss the input file as stated above
- p.ClearInputCubes();
-
- // Start the processing
- p.StartProcess(camdev);
- }
-
- // Add the bandbin group to the output label. If a BandBin group already
- // exists, remove all existing keywords and add the keywords for this app.
- // Otherwise, just put the group in.
- PvlObject &cobj = ocube->label()->findObject("IsisCube");
- if(!cobj.hasGroup("BandBin")) {
- cobj.addGroup(PvlGroup("BandBin"));
- }
-
- PvlGroup &bb = cobj.findGroup("BandBin");
- bb.addKeyword(name, PvlContainer::Replace);
- int nvals = name.size();
- UpdateBandKey("Center", bb, nvals, "1.0");
-
- if ( bb.hasKeyword("OriginalBand") ) {
- UpdateBandKey("OriginalBand", bb, nvals, "1.0");
- }
-
- if ( bb.hasKeyword("Number") ) {
- UpdateBandKey("Number", bb, nvals, "1.0");
- }
-
- UpdateBandKey("Width", bb, nvals, "1.0");
-
-
-
- p.EndProcess();
-}
-
-
-// This propagates the input plane to the output plane, then passes it off to
-// the general routine
-void camdevDN(Buffer &in, Buffer &out) {
- for (int i = 0 ; i < in.size() ; i++) {
- out[i] = in[i];
- }
- camdev(out);
-}
-
-
-// Computes all the geometric properties for the output buffer. Certain
-// knowledge of the buffers size is assumed below, so ensure the buffer
-// is still of the expected size.
-void camdev(Buffer &out) {
-
-
- // If the DN option is selected, it is already added by the camdevDN
- // function. We must compute the offset to start at the second band.
- int skipDN = (dn) ? 64 * 64 : 0;
-
- for(int i = 0; i < 64; i++) {
- for(int j = 0; j < 64; j++) {
-
- MosData mosd, *p_mosd(0); // For special mosaic angles
-
- int index = i * 64 + j + skipDN;
- double samp = out.Sample(index);
- double line = out.Line(index);
-
- bool isGood=false;
- if (noCamera) {
- isGood = projection->SetWorld(samp, line);
- }
- else {
- isGood = cam->SetImage(samp, line);
- }
-
- if (isGood) {
- if (ra) {
- out[index] = cam->RightAscension();
- index += 64 * 64;
- }
- if (declination) {
- out[index] = cam->Declination();
- index += 64 * 64;
- }
- if(planetocentricLatitude) {
- if(noCamera) {
- out[index] = projection->UniversalLatitude();
- }
- else {
- out[index] = cam->UniversalLatitude();
- }
- index += 64 * 64;
- }
- if (!noCamera) {
- if (planetographicLatitude) {
- Distance radii[3];
- cam->radii(radii);
- double ocentricLat;
- ocentricLat = cam->UniversalLatitude();
- out[index] = TProjection::ToPlanetographic(ocentricLat, radii[0].kilometers(),
- radii[2].kilometers());
- index += 64 * 64;
- }
- }
- double pe360Lon, pw360Lon;
- if (positiveEast360Longitude) {
- if(noCamera) {
- pe360Lon = projection->UniversalLongitude();
- }
- else {
- pe360Lon = cam->UniversalLongitude();
- }
- out[index] = pe360Lon;
- index += 64 * 64;
- }
- if (!noCamera) {
- pe360Lon = cam->UniversalLongitude();
- pw360Lon = TProjection::ToPositiveWest(pe360Lon, 360);
- if (positiveEast180Longitude) {
- out[index] = TProjection::To180Domain(pe360Lon);
- index += 64 * 64;
- }
- if (positiveWest360Longitude) {
- out[index] = pw360Lon;
- index += 64 * 64;
- }
- if (positiveWest180Longitude) {
- out[index] = TProjection::To180Domain(pw360Lon);
- index += 64 * 64;
- }
- }
- //If bodyFixedX is true, Y and Z are true as well so compute them all
- if (bodyFixedX) {
- double pB[3];
- cam->Coordinate(pB);
- out[index] = pB[0];
- index += 64 * 64;
- out[index] = pB[1];
- index += 64 * 64;
- out[index] = pB[2];
- index += 64 * 64;
- }
- if (localRadius) {
- out[index] = cam->LocalRadius().meters();
- index += 64 * 64;
- }
- if (pixelResolution) {
- if (noCamera) {
- out[index] = projection->Resolution();
- }
- else {
- out[index] = cam->PixelResolution();
- }
- index += 64 * 64;
- }
- if(lineResolution) {
- out[index] = cam->LineResolution();
- index += 64 * 64;
- }
- if(sampleResolution) {
- out[index] = cam->SampleResolution();
- index += 64 * 64;
- }
- if(detectorResolution) {
- out[index] = cam->DetectorResolution();
- index += 64 * 64;
- }
- //If spacecraftPositionX is true, Y and Z are true as well so compute them all
- if(spacecraftPositionX) {
- double spB[3];
- cam->instrumentPosition(spB);
- out[index] = spB[0];
- index += 64 * 64;
- out[index] = spB[1];
- index += 64 * 64;
- out[index] = spB[2];
- index += 64 * 64;
- }
- if(spacecraftAzimuth) {
- out[index] = cam->SpacecraftAzimuth();
- index += 64 * 64;
- }
- if(slantDistance) {
- out[index] = cam->SlantDistance();
- index += 64 * 64;
- }
- if(targetCenterDistance) {
- out[index] = cam->targetCenterDistance();
- index += 64 * 64;
- }
- if(!noCamera) {
- double ssplat, ssplon;
- ssplat = 0.0;
- ssplon = 0.0;
- cam->subSpacecraftPoint(ssplat, ssplon);
- if(subSpacecraftLatitude) {
- out[index] = ssplat;
- index += 64 * 64;
- }
- if(subSpacecraftLongitude) {
- out[index] = ssplon;
- index += 64 * 64;
- }
- if(subSpacecraftGroundAzimuth) {
- out[index] = cam->GroundAzimuth(cam->UniversalLatitude(),
- cam->UniversalLongitude(), ssplat, ssplon);
- index += 64 * 64;
- }
- }
- if(spacecraftAltitude) {
- out[index] = cam->SpacecraftAltitude();
- index += 64 * 64;
- }
- if(offnadirAngle) {
- out[index] = cam->OffNadirAngle();
- index += 64 * 64;
- }
- //If sunPositionX is true, Y and Z are true as well so compute them all
- if(sunPositionX) {
- double sB[3];
- cam->sunPosition(sB);
- out[index] = sB[0];
- index += 64 * 64;
- out[index] = sB[1];
- index += 64 * 64;
- out[index] = sB[2];
- index += 64 * 64;
- }
- if(sunAzimuth) {
- out[index] = cam->SunAzimuth();
- index += 64 * 64;
- }
- if(solarDistance) {
- out[index] = cam->SolarDistance();
- index += 64 * 64;
- }
- if(!noCamera) {
- double sslat, sslon;
- sslat = 0.0;
- sslon = 0.0;
- cam->subSolarPoint(sslat, sslon);
- if(subSolarLatitude) {
- out[index] = sslat;
- index += 64 * 64;
- }
- if(subSolarLongitude) {
- out[index] = sslon;
- index += 64 * 64;
- }
- if(subSolarGroundAzimuth) {
- out[index] = cam->GroundAzimuth(cam->UniversalLatitude(),
- cam->UniversalLongitude(), sslat, sslon);
- index += 64 * 64;
- }
- }
- if(phase) {
- out[index] = cam->PhaseAngle();
- index += 64 * 64;
- }
- if(incidence) {
- out[index] = cam->IncidenceAngle();
- index += 64 * 64;
- }
- if(emission) {
- out[index] = cam->EmissionAngle();
- index += 64 * 64;
- }
- if(localEmission || localIncidence) {
- Angle phase;
- Angle incidence;
- Angle emission;
- bool success;
- cam->LocalPhotometricAngles(phase, incidence, emission, success);
-
- if (localEmission) {
- out[index] = emission.degrees();
- index += 64 * 64;
- }
-
- if (localIncidence) {
- out[index] = incidence.degrees();
- index += 64 * 64;
- }
- }
- if(northAzimuth) {
- out[index] = cam->NorthAzimuth();
- index += 64 * 64;
- }
- //If distortedFocalPlaneX is true, Y is true as well so compute both
- if(distortedFocalPlaneX) {
- CameraFocalPlaneMap *focalPlaneMap = cam->FocalPlaneMap();
- out[index] = focalPlaneMap->FocalPlaneX();
- index += 64 * 64;
- out[index] = focalPlaneMap->FocalPlaneY();
- index += 64 * 64;
- }
- //If undistortedFocalPlaneX is true, Y and Z are true as well so compute them all
- if(undistortedFocalPlaneX) {
- CameraDistortionMap *distortedMap = cam->DistortionMap();
- out[index] = distortedMap->UndistortedFocalPlaneX();
- index += 64 * 64;
- out[index] = distortedMap->UndistortedFocalPlaneY();
- index += 64 * 64;
- out[index] = distortedMap->UndistortedFocalPlaneZ();
- index += 64 * 64;
- }
- if(ephemerisTime) {
- out[index] = cam->time().Et();
- index += 64 * 64;
- }
- if(UTC) {
- QString utcDouble = cam->time().UTC();
- out[index] = utcDouble.toDouble();
- index += 64 * 64;
- }
- if(localSolarTime) {
- out[index] = cam->LocalSolarTime();
- index += 64 * 64;
- }
- if(solarLongitude) {
- out[index] = cam->solarLongitude().degrees();
- index += 64 * 64;
- }
- // Special Mosaic indexes
- if (morphologyRank) {
- if (!p_mosd) { p_mosd = getMosaicIndicies(*cam, mosd); }
- out[index] = mosd.m_morph;
- index += 64 * 64;
- }
-
- if (albedoRank) {
- if (!p_mosd) { p_mosd = getMosaicIndicies(*cam, mosd); }
- out[index] = mosd.m_albedo;
- index += 64 * 64;
- }
- }
- // Trim outerspace
- else {
- for(int b = (skipDN) ? 1 : 0; b < nbands; b++) {
- out[index] = Isis::NULL8;
- index += 64 * 64;
- }
- }
- }
- }
-}
-
-
-// Function to create a keyword with same values of a specified count
-template
- PvlKeyword makeKey(const QString &name, const int &nvals,
- const T &value) {
- PvlKeyword key(name);
- for (int i = 0 ; i < nvals ; i++) {
- key += value;
- }
- return (key);
- }
-
-
-// Computes the special morphologyRank and albedoRank planes
-MosData *getMosaicIndicies(Camera &camera, MosData &md) {
- const double Epsilon(1.0E-8);
- Angle myphase;
- Angle myincidence;
- Angle myemission;
- bool mysuccess;
- camera.LocalPhotometricAngles(myphase, myincidence, myemission, mysuccess);
- if (!mysuccess) {
- myemission.setDegrees(camera.EmissionAngle());
- myincidence.setDegrees(camera.IncidenceAngle());
- }
- double res = camera.PixelResolution();
- if (fabs(res) < Epsilon) res = Epsilon;
-
- md = MosData(); // Nullifies the data
- if (myemission.isValid()) {
- // Compute morphologyRank
- double cose = cos(myemission.radians());
- if (fabs(cose) < Epsilon) cose = Epsilon;
- // Convert resolution to units of KM
- md.m_morph = (res / 1000.0) / cose;
-
- if (myincidence.isValid()) {
- // Compute albedoRank
- double cosi = cos(myincidence.radians());
- if (fabs(cosi) < Epsilon) cosi = Epsilon;
- // Convert resolution to KM
- md.m_albedo = (res / 1000.0 ) * ( (1.0 / cose) + (1.0 / cosi) );
- }
- }
-
- return (&md);
-}
-
-
-// Updates existing BandBin keywords with additional values to ensure
-// label compilancy (which should support Camera models). It checks for the
-// existance of the keyword and uses its (assumed) first value to set nvals
-// values to a constant. If the keyword doesn't exist, it uses the default
-// value.
-void UpdateBandKey(const QString &keyname, PvlGroup &bb, const int &nvals,
- const QString &default_value) {
-
- QString defVal(default_value);
- if ( bb.hasKeyword(keyname) ) {
- defVal = bb[keyname][0];
- }
-
- bb.addKeyword(makeKey(keyname, nvals, defVal), PvlContainer::Replace);
- return;
-}
-
diff --git a/isis/src/local/apps/camdev/camdev.xml b/isis/src/local/apps/camdev/camdev.xml
deleted file mode 100644
index 1c7bbb6aa51d0442f83720915f366bca8e23b557..0000000000000000000000000000000000000000
--- a/isis/src/local/apps/camdev/camdev.xml
+++ /dev/null
@@ -1,879 +0,0 @@
-
-
-
-
-
- Creates photometric and geometric information bands for an image cube
-
-
-
-
- This program, camdev, creates backplane bands that contain photometric, geometric, and
- spacecraft instrument information for an image file. The parameter options
- range from photometric angles (incidence, emission, and phase) to various
- azimuth angles, and options based on spatial
- (latitude, longitude, and resolution) information. This program will
- not work on Level1 images without a camera model, or on mosaics.
- The input image pixels are not propagated to the output file unless the
- user selects the "DN" option. The following is a partial list of how users have made use of
- band output:
-
-
Evaluate the individual bands in order to establish subsequent
- image processing steps
-
Specify as input to other ISIS3 programs such as fx and photomet
-
Demonstrate the result of each selected option
-
Determine how the images are mosaicked together after the
- Level2 images are created from the Level1 images with backplanes
-
-
-
- All ISIS3 applications default to the following geometric reference if a camera model exists:
-
-
Longitude Domain = 360, longitude range reported from 0 to 360
-
Latitude System = Ocentric
-
Longitude Direction = East, longitude increases to the east
-
-
-
- There are instances where the local emission angle and the local incidence angle will have
- values over 90 degrees. ISIS allows the computation of emission and incidence angles greater
- than 90 degrees. This feature allows representation of viewing and illumination conditions
- where there is actual target body surface data beyond the limb or deep terminator boundary
- areas. Applications such as photomet that applies photometric functions honor the 90 degree
- boundary. Applications such as photrim can be applied to the camdev output to replace the
- angle values above 90 degrees to NULL. There are certain processes that need these data,
- therefore it is allowed.
-
-
- This program requires a Level1 file that has a successful
- "spiceinit" applied to it, or a Level2 image
- cube file. For every valid input pixel, an output pixel is computed
- based on either the SPICE information, or the
- map projected spatial information,
- or a pre-defined equation.
-
-
- The parameters "morphology" and "albedo" are specifically designed to be used
- by the ISIS3 mosaic programs. A mosaic program will automatically compare
- two pixel values to determine how each pixel is mosaicked into an output
- file, which depends on whether a morphology-based or an albedo-based
- product is desired. The program computes a
- DN value for every input pixel based on
- the formulas listed below and outputs the value to a backplane band.
- These backplane bands are used by the ISIS3 mosaic programs. The following are
- equations for "morphology" and "albedo" options:
-
- All the options in camdev are applicable if the input file is a Level1
- image and has a camera model associated with the file. If the input file
- is a map-projected Level2 image, only a few options are appropriate
- and available for selection.
-
- The following options are available for Level1 images that contain a camera model:
-
-
DN
-
RADEC
-
PLANETOCENTRICLATITUDE
-
PLANETOGRAPHICLATITUDE
-
POSITIVEEAST360LONGITUDE
-
POSITIVEEAST180LONGITUDE
-
POSITIVEWEST360LONGITUDE
-
POSITIVEWEST180LONGITUDE
-
BODYFIXED
-
LOCALRADIUS
-
PIXELRESOLUTION
-
LINERESOLUTION
-
SAMPLERESOLUTION
-
DETECTORRESOLUTION
-
SPACECRAFTPOSITION
-
SPACECRAFTAZIMUTH
-
SLANTDISTANCE
-
TARGETCENTERDISTANCE
-
SUBSPACECRAFTLATITUDE
-
SUBSPACECRAFTLONGITUDE
-
SUBSPACECRAFTGROUNDAZIMUTH
-
SPACECRAFTALTITUDE
-
OFFNADIRANGLE
-
SUNPOSITION
-
SUNAZIMUTH
-
SOLARDISTANCE
-
SUBSOLARLATITUDE
-
SUBSOLARLONGITUDE
-
SUBSOLARGROUNDAZIMUTH
-
PHASE
-
EMISSION
-
INCIDENCE
-
LOCALEMISSION
-
LOCALINCIDENCE
-
NORTHAZIMUTH
-
DISTORTEDFOCALPLANE
-
UNDISTORTEDFOCALPLANE
-
EPHEMERISTIME
-
UTC
-
LOCALSOLARTIME
-
SOLARLONGITUDE
-
MORPHOLOGYRANK
-
ALBEDORANK
-
- The following options are available for Level2 images:
-
-
DN
-
RADEC
-
PLANETOCENTRICLATITUDE
-
POSITIVEEAST360LONGITUDE
-
PIXELRESOLUTION
-
DISTORTEDFOCALPLANE
-
UNDISTORTEDFOCALPLANE
-
EPHEMERISTIME
-
UTC
-
SPACECRAFTPOSITION
-
-
-
- The BandBin group keywords are updated in the labels of the output cube
- file. The keyword "Name" within the BandBin group,
- shown below, is populated with the name of each option selected by the
- user as bands. These bands can be referenced by their names in
- applications such as
- "mapmos"
- and
- "qview."
-
-
- Example:
-
- camdev from=EW0131773041G_cal.cub to=EW0131773041G_cal.pho.cub morph=true dn=true
-
- Sample of image label:
-
- Group = Dimensions
- Samples = 1024
- Lines = 1024
- Bands = 7
- End_Group
-
- Group = BandBin
- Name = ("750 BW 5", "Phase Angle", "Emission Angle", "Incidence Angle",
- Latitude, Longitude, Morphology)
- Number = (7, 7, 7, 7, 7, 7, 7)
- Center = (748.7, 748.7, 748.7, 748.7, 748.7, 748.7, 748.7)
- Width = (5.1, 5.1, 5.1, 5.1, 5.1, 5.1, 5.1)
- End_Group
-
-
- Note: The first band retained the BandBin Name value from the input file.
- The program has "Phase Angle," "Emission Angle," "Incidence Angle,"
- "Latitude," and "Longitude" options pre-selected.
-
-
-
-
- If the backplane bands generated by camdev are used in the mosaic
- programs and the mosaic requires the input image pixel, the "DN"
- parameter name must be set to "true" in camdev. When backplane
- bands are used in the
- "fx"
- or
- "photomet"
- program, it is not necessary to propagate the input image to the output
- file.
-
-
-
-
- lev1geoplane
- levgeoplane
- geoback
-
-
-
-
- spiceinit
- mapmos
- qview
- fx
- photomet
- automos
- phocube
-
-
-
-
- Add resolution to possible outputs
- Convert to a IsisProcessBySpectra when it gets written
-
-
-
-
- Original version.
-
-
- Renamed albedo to albedoRank, renamed morph (or morphology) to morphRank (or morphologyRank). Ref #4008.
-
-
-
-
- Radiometric and Photometric Correction
- Cameras
-
-
-
-
-
- cube
- input
-
- Input cube file
-
-
- This is the input filename. The input image cube can be a Level1
- or Level2 file. For a Level1 image, spiceinit
- must be successfully applied before running camdev.
-
-
- *.cub
-
-
-
-
- cube
- real
- output
-
- Output cube file
-
-
- This is the output file name. The cube file will contain a band for
- each of the selected options. The BandBin Group in the image labels
- of the output cube file will be updated with the "Name" keyword
- containing the output band names (options) in the order that they are
- stacked within the cube.
-
-
-
-
- string
- Specifies the source of the geometric information
- CAMERA
-
- Specifies whether the geometric information will be obtained from the
- camera model or from the map projection. If this parameter is set to CAMERA,
- all band options are available for the user to select. If this
- parameter is set to PROJECTION, then only DN, LATITUDE, LONGITUDE, and
- PIXELRESOLUTION band options are available and all other options
- will be greyed out. If the user sets this parameter to CAMERA and
- the input file does not contain a camera model or SPICE information,
- then an error message will occur.
-
-
-
-
-
-
-
-
-
-
- boolean
- FALSE
- Propagate the input pixel to the output file
-
- This parameter specifies whether the input image pixel value
- (DN) will be propagated to
- the output file. The DN parameter must be set to "true,"
- if the output product created is expected to contain the input
- image information.
-
-
-
- boolean
- FALSE
- Create bands for Right Ascention and Declination
-
- If this parameter is true, the Right Ascension, and the
- Declination will be calculated for every pixel and each will be placed into
- their respective bands in the output cube. The output cube labels will contain
- "Right Ascension" and "Declination" in the BandBin group, in the band sequence of the
- output file. Right Ascension and Declination are in degrees.
-
-
-
- boolean
- TRUE
- Create a Planetocentic Latitude band
-
- If this parameter is true, the Planetocentric Latitude value will be computed for
- every pixel and placed in a band in the output cube. The output cube
- labels will contain "Planetocentric Latitude" in the BandBin group, in band sequence
- of the output file. Planetocentric Latitude is in degrees.
-
-
-
- boolean
- FALSE
- Create a Planetographic Latitude band
-
- If this parameter is true, the Planetographic Latitude value will be computed for
- every pixel and placed in a band in the output cube. The output cube
- labels will contain "Planetographic Latitude" in the BandBin group, in band sequence
- of the output file. Planetographic Latitude is in degrees.
-
-
-
- boolean
- FALSE
- Create a Positive East 360 Longitude band
-
- If this parameter is true, the Positive East 360 Longitude value will be computed for
- every pixel placed in a band in the output cube. The output cube
- labels will contain "Positive East 360 Longitude" in the BandBin group, in band
- sequence of the output file. Positive East 360 Longitude is in degrees.
-
-
-
- boolean
- FALSE
- Create a Positive East 180 Longitude band
-
- If this parameter is true, the Positive East 180 Longitude value will be computed for
- every pixel placed in a band in the output cube. The output cube
- labels will contain "Positive East 180 Longitude" in the BandBin group, in band
- sequence of the output file. Positive East 180 Longitude is in degrees.
-
-
-
- boolean
- FALSE
- Create a Positive West 360 Longitude band
-
- If this parameter is true, the Positive West 360 Longitude value will be computed for
- every pixel placed in a band in the output cube. The output cube
- labels will contain "Positive West 360 Longitude" in the BandBin group, in band
- sequence of the output file. Positive West 360 Longitude is in degrees.
-
-
-
- boolean
- FALSE
- Create a Positive West 180 Longitude band
-
- !If this parameter is true, the Positive West 180 Longitude value will be computed for
- every pixel placed in a band in the output cube. The output cube
- labels will contain "Positive West 180 Longitude" in the BandBin group, in band
- sequence of the output file. Positive West 180 Longitude is in degrees.
-
-
-
- boolean
- FALSE
- Create bands for the X, Y, and Z Body Fixed Coordinates
-
- If this parameter is true, the Body Fixed Coordinates will be calculated for
- every pixel and the values for X, Y, and Z will each be placed into their own bands in
- the output cube. The output cube labels will contain "Body Fixed X", "Body Fixed Y",
- and "Body Fixed Z" in the BandBin group, in the band sequence of the output file.
- Body Fixed Coordinates are in kilometers.
-
-
-
- boolean
- FALSE
- Create a Local Radius band
-
- If this parameter is true, the Local Radius will be calculated for
- every pixel and the values for X, Y, and Z will each be placed in a band in
- the output cube. The output cube labels will contain "Local Radius" in the BandBin group,
- in the band sequence of the output file. Local Radius is in meters.
-
-
-
- boolean
- FALSE
- Create a Pixel Resolution band
-
- If this parameter is true, the Pixel Resolution
- will be computed for every pixel and placed in a band in the output
- cube. The output cube labels will contain "Pixel Resolution" in the
- BandBin group, in band sequence of the output file. PixelResolution
- is in meters.
-
-
-
- boolean
- FALSE
- Create a Line Resolution band
-
- If this parameter is true, the Line Resolution will be
- computed for every pixel and placed in a band in the output cube.
- The output cube labels will contain "Line Resolution" in the BandBin
- group, in band sequence of the output file. LineResolution is in meters.
-
-
-
- boolean
- FALSE
- Create a Sample Resolution band
-
- If this parameter is true, the Sample Resolution will be
- computed for every pixel and placed in a band in the output cube.
- The output cube labels will contain "Sample Resolution" in the
- BandBin group, in band sequence of the output file. SampleResolution
- is in meters.
-
-
-
- boolean
- FALSE
- Create a Detector Resolution band
-
- If this parameter is true, the Detector Resolution will be
- computed for every pixel and placed in a band in the output cube. The
- output cube labels will contain "Detector Resolution" in the BandBin
- group, in band sequence of the output file. DetectorResolution is
- in millimeters.
-
-
-
- boolean
- FALSE
- Create bands for the X, Y, and Z Spacecraft Position
-
- If this parameter is true, the Spacecraft Position will be calculated for
- every pixel and the values for X, Y, and Z will each be placed into their own bands in
- the output cube. The output cube labels will contain "Spacecraft Position X",
- "Spacecraft Position Y", and "Spacecraft Position Z" in the BandBin group, in the band
- sequence of the output file. Spacecraft Position is in body-fixed frame kilometer units.
-
-
-
- boolean
- FALSE
- Create a Spacecraft Azimuth band
-
- If this parameter is true, the Spacecraft Azimuth will
- be computed for every pixel and placed in a band in the output cube.
- The output cube labels will contain "Spacecraft Azimuth" in the
- BandBin group, in band sequence of the output file. SpacecraftAzimuth
- is in degrees.
-
-
-
- boolean
- FALSE
- Create a Slant Distance band
-
- If this parameter is true, the Slant Distance will be calculated for
- every pixel and place in a band in the output cube. The output cube labels will contain
- "Slant Distance", in the BandBin group, in the band sequence of the output file.
- Slant Distance is reported in kilometers.
-
-
-
- boolean
- FALSE
- Create a Target Center Distance band
-
- If this parameter is true, the Target Center Distance will be
- computed for every pixel and placed in a band in the output cube.
- The output cube labels will contain "Target Center Distance" in the BandBin
- group, in band sequence of the output file. Target Center Distance is
- in kilometers.
-
-
-
- boolean
- FALSE
- Create a SubSpacecraft Latitude band
-
- If this parameter is true, the SubSpacecraft Latitude will be
- computed for every pixel and placed in a band in the output cube.
- The output cube labels will contain "SubSpacecraft Laitiude" in the BandBin
- group, in band sequence of the output file. SubSpacecraft Latitude is in degrees.
-
-
-
- boolean
- FALSE
- Create a SubSpacecraft Longitude band
-
- If this parameter is true, the SubSpacecraft Longitude will be
- computed for every pixel and placed in a band in the output cube.
- The output cube labels will contain "SubSpacecraft Longitude" in the BandBin
- group, in band sequence of the output file. SubSpacecraft Longitude is
- in degrees.
-
-
-
- boolean
- FALSE
- Create a Spacecraft Altitude band
-
- If this parameter is true, the Spacecraft Altitude will be
- computed for every pixel and placed in a band in the output cube.
- The output cube labels will contain "Spacecraft Altitude" in the BandBin
- group, in band sequence of the output file. Spacecraft Altitude is
- in kilometers.
-
-
-
- boolean
- FALSE
- Create an Off Nadir Angle band
-
- If this parameter is true, the Off Nadir Angle will be
- computed for every pixel and placed in a band in the output cube.
- The output cube labels will contain "Off Nadir Angle" in the BandBin
- group, in band sequence of the output file. Off Nadir Angle is
- in degrees.
-
-
-
- boolean
- FALSE
- Create a SubSpacecraft Ground Azimuth band
-
- If this parameter is true, the SubSpacecraft Ground Azimuth
- will be computed for every pixel and placed in a band in the output
- cube. The output cube labels will contain "SubSpacecraft Ground
- Azimuth" in the BandBin group, in band sequence of the output file.
- SubSpacecraftGround Azimuth is in degrees.
-
-
-
- boolean
- FALSE
- Create bands for the X, Y, and Z of the Sun Position
-
- If this parameter is true, the Sun Position will be calculated for
- every pixel and the values for X, Y, and Z will each be placed into their own bands in
- the output cube. The output cube labels will contain "Sun Position X",
- "Sun Position Y", and "Sun Position Z" in the BandBin group, in the band
- sequence of the output file. Sun Position is in kilometers.
-
-
-
- boolean
- FALSE
- Create a Sun Azimuth band
-
- If this parameter is true, the Sun Azimuth will be computed
- for every pixel and placed in a band in the output cube. The output
- cube labels will contain "Sun Azimuth" in the BandBin group, in band
- sequence of the output file. SunAzimuth is in degrees.
-
-
-
- boolean
- FALSE
- Create a Solar Distance band
-
- If this parameter is true, the Solar Distance will be computed
- for every pixel and placed in a band in the output cube. The output
- cube labels will contain "Solar Distance" in the BandBin group, in band
- sequence of the output file. Solar Distance is in astronomical units.
-
-
-
- boolean
- FALSE
- Create a SubSolar Latitude band
-
- If this parameter is true, the SubSolar Latitude will be computed
- for every pixel and placed in a band in the output cube. The output
- cube labels will contain "SubSolar Latitude" in the BandBin group, in band
- sequence of the output file. SubSolar Latitude is in degrees.
-
-
-
- boolean
- FALSE
- Create a SubSolar Longitude band
-
- If this parameter is true, the SubSolar Longitude will be computed
- for every pixel and placed in a band in the output cube. The output
- cube labels will contain "SubSolar Longitude" in the BandBin group, in band
- sequence of the output file. SubSolar Longitude is in degrees.
-
-
-
- boolean
- FALSE
- Create a SubSolar Ground Azimuth band
-
- If this parameter is true, the SubSolar Ground Azimuth
- will be computed for every pixel and placed in a band in the output
- cube. The output cube labels will contain "Sub Solar Ground Azimuth"
- in the BandBin group, in band sequence of the output file.
- SubSolarGroundAzimuth is in degrees.
-
-
-
- boolean
- FALSE
- Create a Phase Angle band
-
- If this parameter is true, the Phase Angle will be
- computed for every pixel and placed in a band in the output cube.
- The output cube labels will contain "Phase Angle" in the BandBin
- group, in band sequence of the output file. Phase angles are in degrees.
-
-
-
- boolean
- FALSE
- Create an Emission Angle band
-
- If this parameter is true, the Emission Angle will be
- computed for every pixel and placed in a band in the output cube.
- The output cube labels will contain "Emission Angle" in the BandBin
- group, in band sequence of the output file. Emission angles are in degrees. There are
- certain cases where the emission angle is over 90 degrees. This is allowed as there
- are processes that need these data. See main description for details.
-
-
-
- boolean
- FALSE
- Create an Incidence Angle band
-
- If this parameter is true, the Incidence Angle will be
- computed for every pixel and placed in a band in the output cube.
- The output cube labels will contain "Incidence Angle" in the BandBin
- group, in band sequence of the output file. Incidence angles are in degrees. There are
- certain cases where the incidence angle is over 90 degrees. This is allowed as there
- are processes that need these data. See main description for details.
-
-
-
- boolean
- FALSE
- Create a Local Emission Angle band
-
- If this parameter is true, the Local Emission Angle will be computed for every pixel
- and placed in a band in the output cube. The output cube labels
- will contain "Local Emission Angle" in the BandBin group, in band
- sequence of the output file. LocalEmissionAngle is in degrees. There are certain
- cases where the local emission angle is over 90 degrees. This is allowed as there
- are processes that need these data. See main description for details.
-
-
-
- boolean
- FALSE
- Create a Local Incidence Angle band
-
- If this parameter is true, the Local
- Incidence Angle will be computed for every pixel and placed in
- a band in the output cube. The output cube labels will contain
- "Local Incidence Angle" in the BandBin group, in band sequence
- of the output file. LocalIncidenceAngle is in degrees. There are certain
- cases where the local incidence angle is over 90 degrees. This is allowed as there
- are processes that need these data. See main description for details.
-
-
-
- boolean
- FALSE
- Create a North Azimuth band
-
- If this parameter is true, the North Azimuth will be
- computed for every pixel and placed in a band in the output cube. The
- output cube labels will contain "North Azimuth" in the BandBin group,
- in band sequence of the output file. NorthAzimuth is in degrees.
-
-
-
- boolean
- FALSE
- Create bands for the X, and Y of the Distorted Focal Plane
-
- If this parameter is true, the Distorted Focal Plane will be calculated for
- every pixel and the values for X, and Y will each be placed into their own bands in
- the output cube. The output cube labels will contain "Distorted Focal Plane X",
- and "Distorted Focal Plane Y" in the BandBin group, in the
- band sequence of the output file. Distorted Focal Plane is in millimeters.
-
-
-
- boolean
- FALSE
- Create bands for the X, Y, and Z of the Undistorted Focal Plane
-
- If this parameter is true, the Undistorted Focal Plane will be calculated for
- every pixel and the values for X, Y, and Z will each be placed into their own bands in
- the output cube. The output cube labels will contain "Undistorted Focal Plane X",
- "Undistorted Focal Plane Y", and "Undistorted Focal Plane Z" in the BandBin group, in the
- band sequence of the output file. Undistorted Focal Plane is in millimeters.
-
-
-
- boolean
- FALSE
- Create an Ephemeris Time band
-
- If this parameter is true, the Ephemeris Time will be
- computed for every pixel and placed in a band in the output cube. The
- output cube labels will contain "Ephemeris Time" in the BandBin group,
- in band sequence of the output file. Ephemeris is in seconds.
-
-
-
- boolean
- FALSE
- Create an UTC band
-
- If this parameter is true, the UTC will be
- computed for every pixel and placed in a band in the output cube. The
- output cube labels will contain "UTC" in the BandBin group,
- in band sequence of the output file. UTC format consists of year, month, day, hour,
- minutes, and seconds, and is output in string format.
-
-
-
- boolean
- FALSE
- Create a Local Solar Time band
-
- If this parameter is true, the Local Solar Time will be
- computed for every pixel and placed in a band in the output cube. The
- output cube labels will contain "Local Solar Time" in the BandBin group,
- in band sequence of the output file. Local Solar Time is in degrees.
-
-
-
- boolean
- FALSE
- Create a Solar Longitude band
-
- If this parameter is true, the Solar Longitude will be
- computed for every pixel and placed in a band in the output cube. The
- output cube labels will contain "Solar Longitude" in the BandBin group,
- in band sequence of the output file. Solar Longitude is in degrees.
-
-
-
- boolean
- FALSE
- Create a Morphology rank band, used for ranking images based on favorable local emission angles.
-
-
- This band is computed from the pixel resolution
- and emission angle using the following formula:
- MorphologyRank = PixelResolution / cos(EmissionAngle)
- The resulting output band can be used by automos to create a
- morphologyRank-based mosaic product. This option uses the
- local emission angle if the input file
- is initialized (spiceinit) with an elevation model (DEM); otherwise, it
- uses the default calculation (from the ellipsoid). All computed cosines are
- tested for zero. If the result is zero, then the value is set to a constant
- value very close to zero.
-
-
-
-
- Append the following parameters to the automos command line to utilize this backplane band:
-
- See automos documentation for further details.
-
-
-
-
- boolean
- FALSE
- Create an Albedo rank band, used for ranking images based on favorable emission and incidence angles.
-
-
- This band is computed from the pixel resolution,
- incidence angle and emission angle
- using the following formula:
- The resulting output band can be used by automos to create an albedoRank-based
- mosaic product. This option always uses the
- local emission angle and
- local incidence angle if the input file
- is initialized (spiceinit) with an elevation model (DEM); otherwise, it
- uses the default calculation (from the ellipsoid). All computed cosines are
- tested for zero. If the result is zero, then the value is set to a constant
- value very close to zero.
-
-
-
-
- Append the following parameters to the automos command line to utilize this backplane band:
-
- See automos documentation for further details.
-
-
-
-
-
-
-
diff --git a/isis/src/local/apps/camdev/tsts/Makefile b/isis/src/local/apps/camdev/tsts/Makefile
deleted file mode 100644
index 46d84c74c297304e943452a44e06b111f179a92b..0000000000000000000000000000000000000000
--- a/isis/src/local/apps/camdev/tsts/Makefile
+++ /dev/null
@@ -1,4 +0,0 @@
-BLANKS = "%-6s"
-LENGTH = "%-40s"
-
-include $(ISISROOT)/make/isismake.tststree
diff --git a/isis/src/local/apps/camdev/tsts/all/Makefile b/isis/src/local/apps/camdev/tsts/all/Makefile
deleted file mode 100644
index 6e9579fe1480cf5c02244055f2c023ea48d64015..0000000000000000000000000000000000000000
--- a/isis/src/local/apps/camdev/tsts/all/Makefile
+++ /dev/null
@@ -1,53 +0,0 @@
-APPNAME = camdev
-
-# 1.52587890625e-05
-all_camdev_bands.cub.TOLERANCE = .0000153
-
-include $(ISISROOT)/make/isismake.tsts
-
-commands:
- $(APPNAME) from=$(INPUT)/camdevInput.cub \
- to=$(OUTPUT)/all_camdev_bands.cub \
- dn=yes \
- radec=yes \
- planetographiclatitude=yes \
- positiveeast360longitude=yes \
- positiveeast180longitude=yes \
- positivewest360longitude=yes \
- positivewest180longitude=yes \
- bodyfixed=yes \
- localradius=yes \
- pixelresolution=yes \
- lineresolution=yes \
- sampleresolution=yes \
- detectorresolution=yes \
- spacecraftposition=yes \
- spacecraftazimuth=yes \
- slantdistance=yes \
- targetcenterdistance=yes \
- subspacecraftlatitude=yes \
- subspacecraftlongitude=yes \
- spacecraftaltitude=yes \
- offnadirangle=yes \
- subspacecraftgroundazimuth=yes \
- sunposition=yes \
- sunazimuth=yes \
- solardistance=yes \
- subsolarlatitude=yes \
- subsolarlongitude=yes \
- subsolargroundazimuth=yes \
- phase=yes \
- emission=yes \
- incidence=yes \
- localemission=yes \
- localincidence=yes \
- northazimuth=yes \
- distortedfocalplane=yes \
- undistortedfocalplane=yes \
- ephemeristime=yes \
- utc=yes \
- localsolartime=yes \
- solarlongitude=yes \
- morphology=yes \
- albedo=yes > /dev/null;
- $(RM) print.prt > /dev/null;
\ No newline at end of file
diff --git a/isis/src/local/apps/camdev/tsts/projected/Makefile b/isis/src/local/apps/camdev/tsts/projected/Makefile
deleted file mode 100644
index d0f7851be5601e839697fb0aee12d6a968eb5a0e..0000000000000000000000000000000000000000
--- a/isis/src/local/apps/camdev/tsts/projected/Makefile
+++ /dev/null
@@ -1,21 +0,0 @@
-APPNAME = camdev
-
-# 1.52587890625e-05
-camdev_projected_bands.cub.TOLERANCE = .0000153
-
-include $(ISISROOT)/make/isismake.tsts
-
-commands:
- $(APPNAME) from=$(INPUT)/camdevProjectedInput.cub \
- to=$(OUTPUT)/camdev_projected_bands.cub \
- source=projection \
- dn=yes \
- radec=yes \
- positiveeast360longitude=yes \
- pixelresolution=yes \
- spacecraftposition=yes \
- distortedfocalplane=yes \
- undistortedfocalplane=yes \
- ephemeristime=yes \
- utc=yes > /dev/null;
- $(RM) print.prt > /dev/null;
\ No newline at end of file
diff --git a/isis/src/local/apps/camtest/Makefile b/isis/src/local/apps/camtest/Makefile
deleted file mode 100644
index 7578f0b21d038db6a5042c095cda9b34b6bb2570..0000000000000000000000000000000000000000
--- a/isis/src/local/apps/camtest/Makefile
+++ /dev/null
@@ -1,7 +0,0 @@
-ifeq ($(ISISROOT), $(BLANK))
-.SILENT:
-error:
- echo "Please set ISISROOT";
-else
- include $(ISISROOT)/make/isismake.apps
-endif
\ No newline at end of file
diff --git a/isis/src/local/apps/camtest/camtest.cpp b/isis/src/local/apps/camtest/camtest.cpp
deleted file mode 100644
index 4484d7054e8d66b935f8169c0f6bcd690ad2710f..0000000000000000000000000000000000000000
--- a/isis/src/local/apps/camtest/camtest.cpp
+++ /dev/null
@@ -1,203 +0,0 @@
-#include "Isis.h"
-#include "ProcessByLine.h"
-#include "Camera.h"
-#include "SpecialPixel.h"
-#include "Pvl.h"
-
-using namespace std;
-using namespace Isis;
-
-// Globals and prototypes
-
-//void doIt(Buffer &in, Buffer &out);
-
-enum OutputType {
- Lat,
- Lon,
- Err,
- Samp,
- Line
-};
-
-/**
- * Functor for collecting camera statistics.
- *
- * @author 2016-11-16 Jesse Mapel
- * @internal
- * @history 2016-11-16 Original Version.
- */
-class CamTestFunctor {
-public:
- CamTestFunctor() {};
- ~CamTestFunctor() {};
- void setCamera(Camera* cam);
- void setOutType(OutputType outType);
- void setResults(Statistics* results);
- void operator()(Buffer &in, Buffer &out) const;
-
-private:
- Camera* m_cam;
- OutputType m_outType;
- Statistics* m_resultsStats;
-};
-
-void IsisMain() {
- UserInterface &ui = Application::GetUserInterface();
-
- ProcessByBrick p;
-
- // Open the input cube
- Cube *iCube = p.SetInputCube("FROM");
- Camera *cam = iCube->camera();
- p.SetOutputCube("TO");
-
- // Set to process by line
- p.SetBrickSize(iCube->sampleCount(), 1, 1);
-
- IString format = ui.GetString("FORMAT");
-
- OutputType outFormat = Lat;
- if (format == "LAT") {
- outFormat = Lat;
- }
- else if (format == "LON") {
- outFormat = Lon;
- }
- else if (format == "ERR") {
- outFormat = Err;
- }
- else if (format == "SAMP") {
- outFormat = Samp;
- }
- else if (format == "LINE") {
- outFormat = Line;
- }
-
- // Create process functor
- CamTestFunctor func;
- func.setCamera(cam);
- func.setOutType(outFormat);
- Statistics resultsStats;
- func.setResults(&resultsStats);
-
- p.ProcessCube(func, false);
-
- // Collect results
- PvlGroup results = PvlGroup("CamTestResults");
- results += PvlKeyword("FailedConversionsToLatLong", toString(resultsStats.LrsPixels()));
- results += PvlKeyword("FailedConversionsToSampleLine", toString(resultsStats.HrsPixels()));
- results += PvlKeyword("SuccessfulConversions", toString(resultsStats.ValidPixels()));
- if (outFormat == Err) {
- results += PvlKeyword("Average", toString(resultsStats.Average()));
- results += PvlKeyword("StandardDeviation", toString(resultsStats.StandardDeviation()));
- results += PvlKeyword("Minimum", toString(resultsStats.Minimum()));
- results += PvlKeyword("Maximum", toString(resultsStats.Maximum()));
- }
-
- // Log output results
- Application::Log(results);
-
- p.EndProcess();
-}
-
-// Functor Definitions
-
-void CamTestFunctor::setCamera(Camera* cam) {
- m_cam = cam;
-}
-
-void CamTestFunctor::setOutType(OutputType outType) {
- m_outType = outType;
-}
-
-void CamTestFunctor::setResults(Statistics* resultsStats) {
- m_resultsStats = resultsStats;
-}
-
-void CamTestFunctor::operator()(Buffer &in, Buffer &out) const {
- if (in.Line() == 1) {
- m_cam->SetBand(in.Band());
- }
-
- double line = in.Line();
- for (int samp = 0; samp < in.SampleDimension(); samp++) {
- double sample = in.Sample(samp);
- if (!m_cam->SetImage(sample, line)) {
- out[samp] = Lrs;
- continue;
- }
-
- if (m_outType == Lat) {
- out[samp] = m_cam->UniversalLatitude();
- }
- else if (m_outType == Lon) {
- out[samp] = m_cam->UniversalLongitude();
- }
- else {
- if (!m_cam->SetUniversalGround(m_cam->UniversalLatitude(), m_cam->UniversalLongitude())) {
- out[samp] = Hrs;
- continue;
- }
-
-
- if (m_outType == Samp) {
- out[samp] = m_cam->Sample();
- }
- else if (m_outType == Line) {
- out[samp] = m_cam->Line();
- }
- else {
- double deltaS = m_cam->Sample() - sample;
- double deltaL = m_cam->Line() - line;
- out[samp] = sqrt(deltaS * deltaS + deltaL * deltaL);
- }
-
- }
- }
-
- m_resultsStats->AddData(out.DoubleBuffer(), out.size());
-}
-/* Old Processing Routine
-// Line processing routine
-void doIt(Buffer &in, Buffer &out) {
- if(in.Line() == 1) {
- cam->SetBand(in.Band());
- }
-
- double line = in.Line();
- for(int samp = 0; samp < in.SampleDimension(); samp++) {
- double sample = in.Sample(samp);
- if(!cam->SetImage(sample, line)) {
- out[samp] = Lrs;
- continue;
- }
-
- if(OutputFormat == Lat) {
- out[samp] = cam->UniversalLatitude();
- }
- else if(OutputFormat == Lon) {
- out[samp] = cam->UniversalLongitude();
- }
- else {
- if(!cam->SetUniversalGround(cam->UniversalLatitude(), cam->UniversalLongitude())) {
- out[samp] = Hrs;
- continue;
- }
-
-
- if(OutputFormat == Samp) {
- out[samp] = cam->Sample();
- }
- else if(OutputFormat == Line) {
- out[samp] = cam->Line();
- }
- else {
- double deltaS = cam->Sample() - sample;
- double deltaL = cam->Line() - line;
- out[samp] = sqrt(deltaS * deltaS + deltaL * deltaL);
- }
-
- }
- }
-}
-*/
\ No newline at end of file
diff --git a/isis/src/local/apps/camtest/camtest.xml b/isis/src/local/apps/camtest/camtest.xml
deleted file mode 100644
index b95b24d004697b9787f5937a701e78b7c5155d92..0000000000000000000000000000000000000000
--- a/isis/src/local/apps/camtest/camtest.xml
+++ /dev/null
@@ -1,125 +0,0 @@
-
-
-
- Perform basic camera accuracy tests
-
-
- This program will do basic tests for new camera models. There are calls
- to SetImage(sample, line) and SetUniversalGround(lat, lon) that are used
- to test translations from image coordinates to geometric coordinates and
- back. Either one of these calls can fail and are indicated by unique
- special pixel values. If a call to SetImage(sample, line) fails, the
- output image is set to the Low Representation Saturation (Lrs) special
- value. Failures in calls to SetUniversalGround(lat, lon) are set to High
- Representation Saturation (Hrs) value. The number of pixels for which
- SetImage(sample, line) fails is output as FailedConversionsToLatLong.
- The number of pixels for which SetImage(sample, line) succeeded but then
- SetUniversalGround(lat, lon) failed is output as
- FailedConversionsToSampleLine. If ERROR is chosen for FORMAT, then
- statistics on the error will also be output.
-
-
-
- System
-
-
-
-
- Original Version
-
-
- Now tests the center of each pixel instead
- of edges - this upset pushframe tests a lot and
- produced inaccurate results.
-
-
- Corrected a bug where the sample was off by one (used as a 0-based
- index instead of 1-based); Set failures in calls to SetImage (Lrs)
- and SetUniversalGround (Hrs) to special pixel values so they are
- distinguishable. Documented this behaviour.
-
-
- Now outputs statistics on the number of failed calls to SetImage and
- SetUniversalGround. For FROMAT=ERROR, statistics on the
- error are also output.
-
-
-
-
-
-
- cube
- input
-
- Input cube
-
-
- The cube which needs to be tested
-
-
- *.cub
-
-
-
-
- cube
- real
- output
-
- Output cube
-
-
-
-
- *.cub
-
-
-
-
-
-
- string
- Units of the output cube
-
-
-
- ERR
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/isis/src/local/apps/camtest/tsts/Makefile b/isis/src/local/apps/camtest/tsts/Makefile
deleted file mode 100644
index 46d84c74c297304e943452a44e06b111f179a92b..0000000000000000000000000000000000000000
--- a/isis/src/local/apps/camtest/tsts/Makefile
+++ /dev/null
@@ -1,4 +0,0 @@
-BLANKS = "%-6s"
-LENGTH = "%-40s"
-
-include $(ISISROOT)/make/isismake.tststree
diff --git a/isis/src/local/apps/camtest/tsts/dummy/Makefile b/isis/src/local/apps/camtest/tsts/dummy/Makefile
deleted file mode 100644
index c9005c3a648d5d24233509a857d7f11687e07cd0..0000000000000000000000000000000000000000
--- a/isis/src/local/apps/camtest/tsts/dummy/Makefile
+++ /dev/null
@@ -1,8 +0,0 @@
-APPNAME = camtest
-
-include $(ISISROOT)/make/isismake.tsts
-
-commands:
- echo "This program has a dummy test to prevent " \
- "errors on camera model changes, and because" \
- "this program is only for internal testing." > $(OUTPUT)/truth.txt;
diff --git a/isis/src/local/apps/camtest/tsts/error/Makefile b/isis/src/local/apps/camtest/tsts/error/Makefile
deleted file mode 100644
index 8b6b8c885fe412c004c63d121bd7238b31092ba5..0000000000000000000000000000000000000000
--- a/isis/src/local/apps/camtest/tsts/error/Makefile
+++ /dev/null
@@ -1,19 +0,0 @@
-APPNAME = camtest
-
-camtestTruth.cub.TOLERANCE = 1.0e-10
-
-include $(ISISROOT)/make/isismake.tsts
-
-commands:
- $(APPNAME) from=$(INPUT)/lor_0034974380_0x630_sci_1.cub \
- to= $(OUTPUT)/camtestTruth.cub \
- format="ERR" \
- -log=$(OUTPUT)/results.pvl > /dev/null; \
- FIRST=`grep -m 1 -n "CamTestResults" $(OUTPUT)/results.pvl | sed 's/:.*//'`; \
- STARTLINE=`expr "$$FIRST" - 1`; \
- `cat $(OUTPUT)/results.pvl | sed "1,$${STARTLINE}d" > $(OUTPUT)/temp.pvl`; \
- LASTLINE=`grep -m 1 -n "End_Group" $(OUTPUT)/temp.pvl | sed 's/:.*//'`; \
- ENDLINE=`expr "$$LASTLINE" + 1`; \
- EOF=`wc -l $(OUTPUT)/temp.pvl | sed 's/\(^ *\)\([0-9]*\)\( .*\$\)/\2/'`; \
- `cat $(OUTPUT)/temp.pvl | sed "$${ENDLINE},$${EOF}d" > $(OUTPUT)/results.pvl`; \
- $(RM) $(OUTPUT)/temp.pvl;
diff --git a/isis/src/local/apps/camtest/tsts/latitude/Makefile b/isis/src/local/apps/camtest/tsts/latitude/Makefile
deleted file mode 100644
index c1510a900cb6f289ded0568695617bca64b6e4df..0000000000000000000000000000000000000000
--- a/isis/src/local/apps/camtest/tsts/latitude/Makefile
+++ /dev/null
@@ -1,17 +0,0 @@
-APPNAME = camtest
-
-include $(ISISROOT)/make/isismake.tsts
-
-commands:
- $(APPNAME) from=$(INPUT)/lor_0034974380_0x630_sci_1.cub \
- to= $(OUTPUT)/camtestTruth.cub \
- format="LAT" \
- -log=$(OUTPUT)/results.pvl > /dev/null; \
- FIRST=`grep -m 1 -n "CamTestResults" $(OUTPUT)/results.pvl | sed 's/:.*//'`; \
- STARTLINE=`expr "$$FIRST" - 1`; \
- `cat $(OUTPUT)/results.pvl | sed "1,$${STARTLINE}d" > $(OUTPUT)/temp.pvl`; \
- LASTLINE=`grep -m 1 -n "End_Group" $(OUTPUT)/temp.pvl | sed 's/:.*//'`; \
- ENDLINE=`expr "$$LASTLINE" + 1`; \
- EOF=`wc -l $(OUTPUT)/temp.pvl | sed 's/\(^ *\)\([0-9]*\)\( .*\$\)/\2/'`; \
- `cat $(OUTPUT)/temp.pvl | sed "$${ENDLINE},$${EOF}d" > $(OUTPUT)/results.pvl`; \
- $(RM) $(OUTPUT)/temp.pvl;
diff --git a/isis/src/local/apps/camtest/tsts/line/Makefile b/isis/src/local/apps/camtest/tsts/line/Makefile
deleted file mode 100644
index e266fbd7264295f2922057488e1a576228ab946f..0000000000000000000000000000000000000000
--- a/isis/src/local/apps/camtest/tsts/line/Makefile
+++ /dev/null
@@ -1,18 +0,0 @@
-APPNAME = camtest
-
-include $(ISISROOT)/make/isismake.tsts
-
-commands:
- $(APPNAME) from=$(INPUT)/lor_0034974380_0x630_sci_1.cub \
- to= $(OUTPUT)/camtestTruth.cub \
- format="LINE" \
- -log=$(OUTPUT)/results.pvl > /dev/null; \
- FIRST=`grep -m 1 -n "CamTestResults" $(OUTPUT)/results.pvl | sed 's/:.*//'`; \
- STARTLINE=`expr "$$FIRST" - 1`; \
- `cat $(OUTPUT)/results.pvl | sed "1,$${STARTLINE}d" > $(OUTPUT)/temp.pvl`; \
- LASTLINE=`grep -m 1 -n "End_Group" $(OUTPUT)/temp.pvl | sed 's/:.*//'`; \
- ENDLINE=`expr "$$LASTLINE" + 1`; \
- EOF=`wc -l $(OUTPUT)/temp.pvl | sed 's/\(^ *\)\([0-9]*\)\( .*\$\)/\2/'`; \
- `cat $(OUTPUT)/temp.pvl | sed "$${ENDLINE},$${EOF}d" > $(OUTPUT)/results.pvl`; \
- $(RM) $(OUTPUT)/temp.pvl;
-
diff --git a/isis/src/local/apps/camtest/tsts/longitude/Makefile b/isis/src/local/apps/camtest/tsts/longitude/Makefile
deleted file mode 100644
index e1baa2e3ab4d0b5c602b1a8e45d0e34791a4b1cb..0000000000000000000000000000000000000000
--- a/isis/src/local/apps/camtest/tsts/longitude/Makefile
+++ /dev/null
@@ -1,18 +0,0 @@
-APPNAME = camtest
-
-include $(ISISROOT)/make/isismake.tsts
-
-commands:
- $(APPNAME) from=$(INPUT)/lor_0034974380_0x630_sci_1.cub \
- to= $(OUTPUT)/camtestTruth.cub \
- format="LON" \
- -log=$(OUTPUT)/results.pvl > /dev/null; \
- FIRST=`grep -m 1 -n "CamTestResults" $(OUTPUT)/results.pvl | sed 's/:.*//'`; \
- STARTLINE=`expr "$$FIRST" - 1`; \
- `cat $(OUTPUT)/results.pvl | sed "1,$${STARTLINE}d" > $(OUTPUT)/temp.pvl`; \
- LASTLINE=`grep -m 1 -n "End_Group" $(OUTPUT)/temp.pvl | sed 's/:.*//'`; \
- ENDLINE=`expr "$$LASTLINE" + 1`; \
- EOF=`wc -l $(OUTPUT)/temp.pvl | sed 's/\(^ *\)\([0-9]*\)\( .*\$\)/\2/'`; \
- `cat $(OUTPUT)/temp.pvl | sed "$${ENDLINE},$${EOF}d" > $(OUTPUT)/results.pvl`; \
- $(RM) $(OUTPUT)/temp.pvl;
-
diff --git a/isis/src/local/apps/camtest/tsts/sample/Makefile b/isis/src/local/apps/camtest/tsts/sample/Makefile
deleted file mode 100644
index ed195ab9479a4131e79e507757af4e6a46065a15..0000000000000000000000000000000000000000
--- a/isis/src/local/apps/camtest/tsts/sample/Makefile
+++ /dev/null
@@ -1,18 +0,0 @@
-APPNAME = camtest
-
-include $(ISISROOT)/make/isismake.tsts
-
-commands:
- $(APPNAME) from=$(INPUT)/lor_0034974380_0x630_sci_1.cub \
- to= $(OUTPUT)/camtestTruth.cub \
- format="SAMP" \
- -log=$(OUTPUT)/results.pvl > /dev/null; \
- FIRST=`grep -m 1 -n "CamTestResults" $(OUTPUT)/results.pvl | sed 's/:.*//'`; \
- STARTLINE=`expr "$$FIRST" - 1`; \
- `cat $(OUTPUT)/results.pvl | sed "1,$${STARTLINE}d" > $(OUTPUT)/temp.pvl`; \
- LASTLINE=`grep -m 1 -n "End_Group" $(OUTPUT)/temp.pvl | sed 's/:.*//'`; \
- ENDLINE=`expr "$$LASTLINE" + 1`; \
- EOF=`wc -l $(OUTPUT)/temp.pvl | sed 's/\(^ *\)\([0-9]*\)\( .*\$\)/\2/'`; \
- `cat $(OUTPUT)/temp.pvl | sed "$${ENDLINE},$${EOF}d" > $(OUTPUT)/results.pvl`; \
- $(RM) $(OUTPUT)/temp.pvl;
-
diff --git a/isis/src/local/apps/cissua2isis/Makefile b/isis/src/local/apps/cissua2isis/Makefile
deleted file mode 100644
index 7578f0b21d038db6a5042c095cda9b34b6bb2570..0000000000000000000000000000000000000000
--- a/isis/src/local/apps/cissua2isis/Makefile
+++ /dev/null
@@ -1,7 +0,0 @@
-ifeq ($(ISISROOT), $(BLANK))
-.SILENT:
-error:
- echo "Please set ISISROOT";
-else
- include $(ISISROOT)/make/isismake.apps
-endif
\ No newline at end of file
diff --git a/isis/src/local/apps/cissua2isis/cissua2isis.cpp b/isis/src/local/apps/cissua2isis/cissua2isis.cpp
deleted file mode 100644
index 37061f4144dfdd6d44d4e2cbc7718a4dac83914b..0000000000000000000000000000000000000000
--- a/isis/src/local/apps/cissua2isis/cissua2isis.cpp
+++ /dev/null
@@ -1,216 +0,0 @@
-#include "Isis.h"
-
-#include
-
-#include "ProcessImportPds.h"
-#include "Pvl.h"
-#include "UserInterface.h"
-#include "TextFile.h"
-#include "Stretch.h"
-#include "Table.h"
-#include "TableRecord.h"
-
-using namespace std;
-using namespace Isis;
-
-void TranslateUoACassiniLabels(Pvl &labelPvl, Cube *ocube);
-vector ConvertLinePrefixPixels(Isis::PixelType pixelType,
- unsigned char *data);
-void FixDns8(Buffer &buf);
-Stretch stretch;
-void CreateStretchPairs();
-
-void IsisMain() {
-
- ProcessImportPds p;
- UserInterface &ui = Application::GetUserInterface();
-
- // Get the input
- FileName inFile = ui.GetFileName("FROM");
- Pvl pdsLabel;
- p.SetPdsFile(inFile.expanded(), "", pdsLabel);
-
- CubeAttributeOutput &outAtt = ui.GetOutputAttribute("TO");
- Cube *ocube = p.SetOutputCube(ui.GetFileName("TO"), outAtt);
-
- // Process
- p.StartProcess();
- TranslateUoACassiniLabels(pdsLabel, ocube);
-
- // Fix the StartTime and StopTime keywords from having the 'Z' value at the end
- Pvl *outLabel = ocube->label();
- PvlGroup &inst = outLabel->findGroup("Instrument", Isis::PvlObject::Traverse);
- PvlKeyword &start = inst.findKeyword("StartTime");
- PvlKeyword &stop = inst.findKeyword("StopTime");
- QString startValue = start[0];
- QString stopValue = stop[0];
- start[0] = startValue.remove(QRegExp("Z$"));
- stop[0] = stopValue.remove(QRegExp("Z$"));
-
- // All finished with the ImportPds object
- p.EndProcess();
-
-}
-
-vector ConvertLinePrefixPixels(Isis::PixelType pixelType,
- unsigned char *data) {
- Isis::Buffer pixelBuf(1, 1, 1, Isis::SignedWord);
-
- vector calibrationPixels;
- //***CHECK LABEL FOR ACTUAL ENDIAN VALUE RATHER THAN ASSUMING MSB***???
- EndianSwapper swapper("MSB");
-
- vector pixel;
- //12 is start byte for First Overclocked Pixel Sum in Binary Line Prefix, see SIS pg 83
- pixel.push_back(swapper.ShortInt(& (data[12])));
- //22 is start byte for Last Overclocked Pixel Sum in Binary Line Prefix, see SIS pg 83
- pixel.push_back(swapper.ShortInt(& (data[22])));
- for(int i = 0; i < (int)pixel.size(); i++) {
- pixelBuf[0] = pixel[i];
- FixDns8(pixelBuf);
- double pix = pixelBuf[0];
- if(pix == NULL8) calibrationPixels.push_back(NULL2);
- else if(pix == LOW_REPR_SAT8) calibrationPixels.push_back(LOW_REPR_SAT2);
- else if(pix == LOW_INSTR_SAT8) calibrationPixels.push_back(LOW_INSTR_SAT2);
- else if(pix == HIGH_INSTR_SAT8) calibrationPixels.push_back(HIGH_INSTR_SAT2);
- else if(pix == HIGH_REPR_SAT8) calibrationPixels.push_back(HIGH_REPR_SAT2);
- else calibrationPixels.push_back((int)(pix + 0.5));
- }
-
- return calibrationPixels;
-}
-
-void FixDns8(Buffer &buf) {
- for(int i = 0; i < buf.size(); i++) {
- if(buf[i] != 0) {
- buf[i] = stretch.Map(buf[i]);
- }
- else {
- buf[i] = Isis::Null;
- }
- }
-}
-
-void CreateStretchPairs() {
- // Set up the strech for the 8 to 12 bit conversion from file
- FileName *temp = new FileName("$cassini/calibration/cisslog_???.lut");
- *temp = temp->highestVersion();
- TextFile *stretchPairs = new TextFile(temp->expanded());
-
- // Create the stretch pairs
- stretch.ClearPairs();
- for(int i = 0; i < stretchPairs->LineCount(); i++) {
- QString line;
- stretchPairs->GetLine(line, true); //assigns value to line
- QStringList pairStrings = line.split(" ");
- stretch.AddPair(toInt(pairStrings[0]), toInt(pairStrings[1]));
- }
- stretchPairs->Close();
-
- // Clean up
- delete temp;
- delete stretchPairs;
-
-}
-
-
-void TranslateUoACassiniLabels(Pvl &labelPvl, Cube *ocube) {
-
- //Create a PVL to store the translated labels
- Pvl *outLabel = ocube->label();
-
- // Get the directory where the CISS translation tables are.
- PvlGroup dataDir(Preference::Preferences().findGroup("DataDirectory"));
- QString transDir = (QString) dataDir["Cassini"] + "/translations/";
-
- // Translate
- FileName transFile(transDir + "cissua2isis.trn");
- PvlToPvlTranslationManager instrumentXlater(labelPvl, transFile.expanded());
- instrumentXlater.Auto((*outLabel));
-
- PvlGroup &inst = outLabel->findGroup("Instrument", Isis::PvlObject::Traverse);
-
- // Create the correct SpacecraftClockCount value
- PvlGroup &inInst = labelPvl.findGroup("ISIS_INSTRUMENT", Pvl::Traverse);
- QString scc = inInst.findKeyword("SPACECRAFT_CLOCK_CNT_PARTITION");
- scc += "/" + (QString) inInst.findKeyword("ORIGINAL_SPACECRAFT_CLOCK_START_COUN");
- inst.addKeyword(PvlKeyword("SpacecraftClockCount", scc));
-
- // dataConv is used later
- QString dataConv = inInst.findKeyword("DATA_CONVERSION_TYPE");
- inst.addKeyword(PvlKeyword("DataConversionType", dataConv));
-
- //to add an array of values
- PvlKeyword opticsTemp(inInst.findKeyword("OPTICS_TEMPERATURE"));
- opticsTemp.setName("OpticsTemperature");
- inst.addKeyword(opticsTemp);
-
- //two possible label names for same keyword
- if(labelPvl.hasKeyword("ENCODING_TYPE")) {
- QString encodingType = labelPvl.findKeyword("ENCODING_TYPE", Pvl::Traverse);
- inst.addKeyword(PvlKeyword("CompressionType", encodingType));
- }
- else {
- QString instCmprsType = labelPvl.findKeyword("INST_CMPRS_TYPE", Pvl::Traverse);
- inst.addKeyword(PvlKeyword("CompressionType", instCmprsType));
- }
-
- QString flightSoftware = labelPvl.findKeyword("FLIGHT_SOFTWARE_VERSION_ID", Pvl::Traverse);
- inst.addKeyword(PvlKeyword("FlightSoftwareVersionId", flightSoftware));
-
- // Sets the needed Kernel FrameCode
- QString instrumentID = inst.findKeyword("InstrumentId");
- PvlGroup kerns("Kernels");
- if(instrumentID == "ISSNA") {
- kerns += PvlKeyword("NaifFrameCode", toString(-82360));
- }
- else if(instrumentID == "ISSWA") {
- kerns += PvlKeyword("NaifFrameCode", toString(-82361));
- }
- else {
- QString msg = "CISS2ISIS only imports Cassini ISS narrow ";
- msg += "angle or wide angle images";
- throw IException(IException::User, msg, _FILEINFO_);
- }
- outLabel->findObject("IsisCube").addGroup(kerns);
-
- // Create BandBin group
- QString filter = labelPvl.findKeyword("BAND_BIN_FILTER_NAME", Isis::PvlObject::Traverse)[0];
- filter = filter.mid(0, 3) + "/" + filter.mid(4);
- QString cameraAngleDefs;
- if(instrumentID.at(3) == 'N') {
- cameraAngleDefs = transDir + "narrowAngle.def";
- }
- else if(instrumentID.at(3) == 'W') {
- cameraAngleDefs = transDir + "wideAngle.def";
- }
- double center = 0;
- double width = 0;
- TextFile cameraAngle(cameraAngleDefs);
- int numLines = cameraAngle.LineCount();
- bool foundfilter = false;
- for(int i = 0; i < numLines; i++) {
- QString line;
- cameraAngle.GetLine(line, true);
- QStringList tokens = line.simplified().trimmed().split(" ");
-
- if (tokens.count() > 2 && tokens[0] == filter) {
- center = toDouble(tokens[1]);
- width = toDouble(tokens[2]);
- foundfilter = true;
- break;
- }
- }
- if(!foundfilter) {
- QString msg = "Camera Angle Lookup Failed: ";
- msg += "Filter combination " + filter + " unknown.";
- throw IException(IException::User, msg, _FILEINFO_);
- }
- PvlGroup bandBin("BandBin");
- bandBin += PvlKeyword("FilterName", filter);
- bandBin += PvlKeyword("OriginalBand", "1");
- bandBin += PvlKeyword("Center", toString(center));
- bandBin += PvlKeyword("Width", toString(width));
- outLabel->findObject("IsisCube").addGroup(bandBin);
-
-}
diff --git a/isis/src/local/apps/cissua2isis/cissua2isis.xml b/isis/src/local/apps/cissua2isis/cissua2isis.xml
deleted file mode 100644
index ea2dc2786d24d6628908565ef4548214ce5d11b4..0000000000000000000000000000000000000000
--- a/isis/src/local/apps/cissua2isis/cissua2isis.xml
+++ /dev/null
@@ -1,59 +0,0 @@
-
-
-
-
-
- Imports a U of A cassini Isis2 cube to an Isis3 cube.
-
-
-
- Imports a University of Arizona's Isis2 cube to an Isis3 cube.
-
-
-
-
- Original version, heavily based off of ciss2isis
-
-
- Fixed name for history and removed prefix data.
-
-
-
-
- Cassini
-
-
-
-
-
- cube
- input
-
- Input UA cube
-
-
- A University of Arizona Isis2 cube to be imported to an Isis3 cube.
-
-
- *.cub
-
-
-
-
- cube
- real
- output
-
- Output Isis3 cube
-
-
- The output Isis3 cube file for the imported Isis2 cube.
-
-
- *.cub
-
-
-
-
-
-
diff --git a/isis/src/local/apps/cissua2isis/tsts/Makefile b/isis/src/local/apps/cissua2isis/tsts/Makefile
deleted file mode 100644
index 46d84c74c297304e943452a44e06b111f179a92b..0000000000000000000000000000000000000000
--- a/isis/src/local/apps/cissua2isis/tsts/Makefile
+++ /dev/null
@@ -1,4 +0,0 @@
-BLANKS = "%-6s"
-LENGTH = "%-40s"
-
-include $(ISISROOT)/make/isismake.tststree
diff --git a/isis/src/local/apps/cissua2isis/tsts/default/Makefile b/isis/src/local/apps/cissua2isis/tsts/default/Makefile
deleted file mode 100644
index c94d2e02e5102c8a873cb06c0251d64d76edc0f4..0000000000000000000000000000000000000000
--- a/isis/src/local/apps/cissua2isis/tsts/default/Makefile
+++ /dev/null
@@ -1,13 +0,0 @@
-APPNAME = cissua2isis
-
-include $(ISISROOT)/make/isismake.tsts
-
-commands:
- $(APPNAME) from=$(INPUT)/N1509133834_1.IMG.cal.lev1.cub \
- to=$(OUTPUT)/N1509133834_1.IMG.cal.lev1.cub > /dev/null;
- catlab from=$(OUTPUT)/N1509133834_1.IMG.cal.lev1.cub \
- to=$(OUTPUT)/N1509133834_1.IMG.cal.lev1.pvl > /dev/null;
- $(APPNAME) from=$(INPUT)/N1509135639_1.IMG.cal.lev1.cub \
- to=$(OUTPUT)/N1509135639_1.IMG.cal.lev1.cub > /dev/null;
- catlab from=$(OUTPUT)/N1509135639_1.IMG.cal.lev1.cub \
- to=$(OUTPUT)/N1509135639_1.IMG.cal.lev1.pvl > /dev/null;
diff --git a/isis/src/local/apps/ipce/IpceMainWindow.cpp b/isis/src/local/apps/ipce/IpceMainWindow.cpp
deleted file mode 100644
index 09ddcda0abbaac78dfda2e89991420415327756c..0000000000000000000000000000000000000000
--- a/isis/src/local/apps/ipce/IpceMainWindow.cpp
+++ /dev/null
@@ -1,954 +0,0 @@
-/**
- * @file
- * $Revision: 1.19 $
- * $Date: 2010/03/22 19:44:53 $
- *
- * Unless noted otherwise, the portions of Isis written by the USGS are
- * public domain. See individual third-party library and package descriptions
- * for intellectual property information, user agreements, and related
- * information.
- *
- * Although Isis has been used by the USGS, no warranty, expressed or
- * implied, is made by the USGS as to the accuracy and functioning of such
- * software and related material nor shall the fact of distribution
- * constitute any such warranty, and no responsibility is assumed by the
- * USGS in connection therewith.
- *
- * For additional information, launch
- * $ISISROOT/doc//documents/Disclaimers/Disclaimers.html
- * in a browser or see the Privacy & Disclaimers page on the Isis website,
- * http://isis.astrogeology.usgs.gov, and the USGS privacy and disclaimers on
- * http://www.usgs.gov/privacy.html.
- */
-#include "IpceMainWindow.h"
-
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-
-#include "AbstractProjectItemView.h"
-#include "Directory.h"
-#include "FileName.h"
-#include "IException.h"
-#include "IString.h"
-#include "MosaicSceneWidget.h"
-#include "ProgressWidget.h"
-#include "Project.h"
-#include "ProjectItemModel.h"
-#include "ProjectItemTreeView.h"
-#include "SensorInfoWidget.h"
-#include "TargetInfoWidget.h"
-
-namespace Isis {
- /**
- * Construct the main window. This will create a Directory, the menus, and the dock areas.
- *
- * @param parent The Qt-relationship parent widget (usually NULL in this case)
- *
- * @internal
- * @history 2016-11-09 Tyler Wilson - Moved the if-block which loads a project from the
- * command line from the start of the constructor to the end
- * because if there were warnings and errors, they were not
- * being output to the Warnings widget since the project is loaded
- * before the GUI is constructed. Fixes #4488
- * @history 2016-11-09 Ian Humphrey - Added default readSettings() call to load initial
- * default project window state. References #4358.
- */
- IpceMainWindow::IpceMainWindow(QWidget *parent) :
- QMainWindow(parent) {
- m_maxThreadCount = -1;
-
- QMdiArea *centralWidget = new QMdiArea;
- centralWidget->setActivationOrder(QMdiArea::StackingOrder);
-
- connect(centralWidget, SIGNAL( subWindowActivated(QMdiSubWindow *) ),
- this, SLOT( onSubWindowActivated(QMdiSubWindow *) ) );
-
- setCentralWidget(centralWidget);
- setDockNestingEnabled(true);
-
- m_activeView = NULL;
-
- try {
- m_directory = new Directory(this);
- connect(m_directory, SIGNAL( newWidgetAvailable(QWidget *) ),
- this, SLOT( addView(QWidget *) ) );
- connect(m_directory, SIGNAL( directoryCleaned() ),
- this, SLOT( removeAllViews() ) );
- connect(m_directory->project(), SIGNAL(projectLoaded(Project *)),
- this, SLOT(readSettings(Project *)));
- connect(m_directory, SIGNAL( newWarning() ),
- this, SLOT( raiseWarningTab() ) );
- }
- catch (IException &e) {
- throw IException(e, IException::Programmer,
- "Could not create Directory.", _FILEINFO_);
- }
-
- QStringList args = QCoreApplication::arguments();
-/**
- if (args.count() == 2) {
- qDebug() << args.last();
- m_directory->project()->open(args.last());
- }
-*/
- m_projectDock = new QDockWidget("Project", this, Qt::SubWindow);
- m_projectDock->setObjectName("projectDock");
- m_projectDock->setFeatures(QDockWidget::DockWidgetMovable |
- QDockWidget::DockWidgetFloatable);
- m_projectDock->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea);
-
- ProjectItemTreeView *projectTreeView = m_directory->addProjectItemTreeView();
- projectTreeView->setInternalModel( m_directory->model() );
- projectTreeView->treeView()->expandAll();
- projectTreeView->installEventFilter(this);
- m_projectDock->setWidget(projectTreeView);
-
- addDockWidget(Qt::LeftDockWidgetArea, m_projectDock, Qt::Horizontal);
-
- m_warningsDock = new QDockWidget("Warnings", this, Qt::SubWindow);
- m_warningsDock->setObjectName("m_warningsDock");
- m_warningsDock->setFeatures(QDockWidget::DockWidgetClosable |
- QDockWidget::DockWidgetMovable |
- QDockWidget::DockWidgetFloatable);
- m_warningsDock->setWhatsThis(tr("This shows notices and warnings from all operations "
- "on the current project."));
- m_warningsDock->setAllowedAreas(Qt::BottomDockWidgetArea);
- m_directory->setWarningContainer(m_warningsDock);
- addDockWidget(Qt::BottomDockWidgetArea, m_warningsDock);
-
- QDockWidget *historyDock = new QDockWidget("History", this, Qt::SubWindow);
- historyDock->setObjectName("historyDock");
- historyDock->setFeatures(QDockWidget::DockWidgetClosable |
- QDockWidget::DockWidgetMovable |
- QDockWidget::DockWidgetFloatable);
- historyDock->setWhatsThis(tr("This shows all operations performed on the current project."));
- historyDock->setAllowedAreas(Qt::BottomDockWidgetArea);
- addDockWidget(Qt::BottomDockWidgetArea, historyDock);
- m_directory->setHistoryContainer(historyDock);
- tabifyDockWidget(m_warningsDock, historyDock);
-
- QDockWidget *progressDock = new QDockWidget("Progress", this, Qt::SubWindow);
- progressDock->setObjectName("progressDock");
- progressDock->setFeatures(QDockWidget::DockWidgetClosable |
- QDockWidget::DockWidgetMovable |
- QDockWidget::DockWidgetFloatable);
- progressDock->setAllowedAreas(Qt::BottomDockWidgetArea);
- //m_directory->setProgressContainer(progressDock);
- addDockWidget(Qt::BottomDockWidgetArea, progressDock);
- tabifyDockWidget(historyDock, progressDock);
-
- m_warningsDock->raise();
-
- // Read settings from the default project, "Project"
- readSettings(m_directory->project());
-
- setTabPosition(Qt::TopDockWidgetArea, QTabWidget::North);
- setCorner(Qt::TopLeftCorner, Qt::LeftDockWidgetArea);
- setCorner(Qt::TopRightCorner, Qt::RightDockWidgetArea);
- setCorner(Qt::BottomLeftCorner, Qt::BottomDockWidgetArea);
- setCorner(Qt::BottomRightCorner, Qt::BottomDockWidgetArea);
-
- statusBar()->showMessage("Ready");
- statusBar()->addWidget(m_directory->project()->progress());
-
- foreach (QProgressBar *progressBar, m_directory->progressBars()) {
- statusBar()->addWidget(progressBar);
- }
-
- createMenus();
- initializeActions();
- updateMenuActions();
-
- m_permToolBar = new QToolBar(this);
- m_activeToolBar = new QToolBar(this);
- m_toolPad = new QToolBar(this);
-
- QSize iconSize(25, 45);
-
- m_permToolBar->setIconSize(iconSize);
- m_activeToolBar->setIconSize(iconSize);
- m_toolPad->setIconSize(iconSize);
-
- m_permToolBar->setObjectName("PermanentToolBar");
- m_activeToolBar->setObjectName("ActiveToolBar");
- m_toolPad->setObjectName("ToolPad");
-
- addToolBar(m_permToolBar);
- addToolBar(m_activeToolBar);
- addToolBar(m_toolPad);
- updateToolBarActions();
-
- setTabbedViewMode();
- centralWidget->setTabsMovable(true);
- centralWidget->setTabsClosable(true);
-
- if (args.count() == 2) {
- m_directory->project()->open(args.last());
- }
-
- // ken testing If this is used, we will not need to call updateMenuActions() or updateToolBar()
- // above. They are both called from setActiveView.
- // setActiveView(projectTreeView);
- // ken testing
- }
-
-
- /**
- * This is connected from Directory's newWidgetAvailable signal and called when re-attaching a
- * view which was detached from the MDI main window.
- *
- * @param[in] newWidget (QWidget *)
- */
- void IpceMainWindow::addView(QWidget *newWidget) {
- if ( qobject_cast(newWidget) ||
- qobject_cast(newWidget) ) {
- QDockWidget *dock = new QDockWidget( newWidget->windowTitle() );
- dock->setAttribute(Qt::WA_DeleteOnClose, true);
- dock->setWidget(newWidget);
- dock->setObjectName(newWidget->windowTitle());
- splitDockWidget(m_projectDock, dock, Qt::Vertical);
- }
- else {
- if ( QMdiArea *mdiArea = qobject_cast( centralWidget() ) ) {
- mdiArea->addSubWindow(newWidget);
- newWidget->show();
- mdiArea->setActiveSubWindow(qobject_cast(newWidget));
- setActiveView(qobject_cast(newWidget));
- }
- }
- }
- /**
- * Removes All Views in main window, connected to directory signal directoryCleaned()
- */
- void IpceMainWindow::removeAllViews() {
- setWindowTitle("ipce");
- QMdiArea *mdiArea = qobject_cast( centralWidget() );
- if (mdiArea){
- QMdiSubWindow* window = new QMdiSubWindow();
- window->show();
- window->activateWindow();
- mdiArea->addSubWindow(window);
- mdiArea->closeAllSubWindows();
- delete window;
- }
- if (!m_detachedViews.isEmpty()) {
- foreach ( QMainWindow* view, m_detachedViews ) {
- view->close();
- }
- }
-
- QList docks = tabifiedDockWidgets(m_projectDock);
- if(docks.count() > 1) {
- foreach ( QDockWidget* widget, docks ) {
- if(widget != m_projectDock) {
- delete widget;
- }
- }
- }
- }
-
-
- /**
- * Cleans up the directory.
- */
- IpceMainWindow::~IpceMainWindow() {
- m_directory->deleteLater();
- }
-
-
- /**
- * Sets the active view and updates the toolbars and menus.
- *
- * @param[in] view (AbstractProjectItemView *) The active view.
- */
- void IpceMainWindow::setActiveView(AbstractProjectItemView *view) {
- m_activeView = view;
- updateMenuActions();
- updateToolBarActions();
- }
-
-
- /**
- * Clears all the menus, then populates the menus with QActions from
- * several sources. The QActions come from an internal list of
- * QActions, the Directory, and the active view.
- */
- void IpceMainWindow::updateMenuActions() {
-
- m_fileMenu->clear();
- // Get Directory FileMenu actions
- foreach ( QAction *action, m_directory->fileMenuActions() ) {
- m_fileMenu->addAction(action);
- }
- m_fileMenu->addSeparator();
- // Get FileMenu actions for the active view (eg. CubeDnView, Footprint2DView)
- if (m_activeView) {
- foreach ( QAction *action, m_activeView->fileMenuActions() ) {
- m_fileMenu->addAction(action);
- }
- }
- m_fileMenu->addSeparator();
- // Get FileMenu actions from the ipceMainWindow, Exit is the only action
- foreach ( QAction *action, m_fileMenuActions ) {
- m_fileMenu->addAction(action);
- }
-
- m_projectMenu->clear();
- // Get Project menu actions from Directory
- foreach ( QAction *action, m_directory->projectMenuActions() ) {
- m_projectMenu->addAction(action);
- }
- m_projectMenu->addSeparator();
- // Get Project menu actions from the active view
- if (m_activeView) {
- foreach ( QAction *action, m_activeView->projectMenuActions() ) {
- m_projectMenu->addAction(action);
- }
- }
- m_projectMenu->addSeparator();
- // Get Project menu actions from IpceMainWindow
- foreach ( QAction *action, m_projectMenuActions ) {
- m_projectMenu->addAction(action);
- }
-
- m_editMenu->clear();
- // Get Edit menu actions from Directory
- foreach ( QAction *action, m_directory->editMenuActions() ) {
- m_editMenu->addAction(action);
- }
- m_editMenu->addSeparator();
- // Get Edit menu actions from active view
- if (m_activeView) {
- foreach ( QAction *action, m_activeView->editMenuActions() ) {
- m_editMenu->addAction(action);
- }
- }
- m_editMenu->addSeparator();
- // Get Edit menu actions from IpceMainWindow
- foreach ( QAction *action, m_editMenuActions ) {
- m_editMenu->addAction(action);
- }
-
- m_viewMenu->clear();
- // Get View menu actions from Directory
- foreach ( QAction *action, m_directory->viewMenuActions() ) {
- m_viewMenu->addAction(action);
- }
- m_viewMenu->addSeparator();
- // Get View menu actions from IpceMainWindow
- foreach ( QAction *action, m_viewMenuActions ) {
- m_viewMenu->addAction(action);
- }
- m_viewMenu->addSeparator();
- // Get View menu actions from active view
- if (m_activeView) {
- foreach ( QAction *action, m_activeView->viewMenuActions() ) {
- m_viewMenu->addAction(action);
- }
- }
-
- m_settingsMenu->clear();
- // Get Settings menu actions from Directory
- foreach ( QAction *action, m_directory->settingsMenuActions() ) {
- m_settingsMenu->addAction(action);
- }
- m_settingsMenu->addSeparator();
- // Get Settings menu actions from active view
- if (m_activeView) {
- foreach ( QAction *action, m_activeView->settingsMenuActions() ) {
- m_settingsMenu->addAction(action);
- }
- }
- m_settingsMenu->addSeparator();
- // Get Settings menu actions from IpceMainWindow
- foreach ( QAction *action, m_settingsMenuActions ) {
- m_settingsMenu->addAction(action);
- }
-
- m_helpMenu->clear();
- // Get Help menu actions from Directory
- foreach ( QAction *action, m_directory->helpMenuActions() ) {
- m_helpMenu->addAction(action);
- }
- m_helpMenu->addSeparator();
- // Get Help menu actions from active view
- if (m_activeView) {
- foreach ( QAction *action, m_activeView->helpMenuActions() ) {
- m_helpMenu->addAction(action);
- }
- }
- m_helpMenu->addSeparator();
- // Get Help menu actions from IpceMainWindow
- foreach ( QAction *action, m_helpMenuActions ) {
- m_helpMenu->addAction(action);
- }
- }
-
-
- /**
- * Clears the tool bars and repopulates them with QActions from
- * several sources. Actions are taken from an internal list of
- * QActions, the Directory, and the active view.
- */
- void IpceMainWindow::updateToolBarActions() {
-
- m_permToolBar->clear();
- foreach ( QAction *action, m_directory->permToolBarActions() ) {
- m_permToolBar->addAction(action);
- }
- foreach (QAction *action, m_permToolBarActions) {
- m_permToolBar->addAction(action);
- }
- m_permToolBar->addSeparator();
- if (m_activeView) {
- foreach ( QAction *action, m_activeView->permToolBarActions() ) {
- m_permToolBar->addAction(action);
- }
- }
-
- m_activeToolBar->clear();
- if (m_activeView) {
- foreach ( QAction *action, m_activeView->activeToolBarActions() ) {
- m_activeToolBar->addAction(action);
- }
- }
-
- m_toolPad->clear();
- if (m_activeView) {
- foreach ( QAction *action, m_activeView->toolPadActions() ) {
- m_toolPad->addAction(action);
- }
- }
- }
-
-
- /**
- * Filters out events from views so they can be handled by the main
- * window. Filters out DragEnter Drop and ContextMenu events from
- * views.
- *
- * @param[in] watched (QObject *) The object being filtered.
- * @param[in] event (QEvent *) The event that may be filtered.
- */
- bool IpceMainWindow::eventFilter(QObject *watched, QEvent *event) {
- if ( AbstractProjectItemView *view = qobject_cast(watched) ) {
- if (event->type() == QEvent::DragEnter) {
- return true;
- }
- else if (event->type() == QEvent::Drop) {
- return true;
- }
- else if (event->type() == QEvent::ContextMenu) {
- QMenu contextMenu;
-
- QList viewActions = view->contextMenuActions();
-
- if ( !viewActions.isEmpty() ) {
- foreach (QAction *action, viewActions) {
- if (action) {
- contextMenu.addAction(action);
- }
- else {
- contextMenu.addSeparator();
- }
- }
- contextMenu.addSeparator();
- }
-
- QList workOrders = m_directory->supportedActions( view->currentItem() );
-
- if ( !workOrders.isEmpty() ) {
- foreach (QAction *action, workOrders) {
- contextMenu.addAction(action);
- }
- contextMenu.addSeparator();
- }
-
- contextMenu.exec( static_cast(event)->globalPos() );
-
- return true;
- }
- }
-
- return QMainWindow::eventFilter(watched, event);
- }
-
-
- /**
- * This method takes the max thread count setting and asks
- * QtConcurrent to respect it.
- */
- void IpceMainWindow::applyMaxThreadCount() {
- if (m_maxThreadCount <= 1) {
- // Allow QtConcurrent to use every core and starve the GUI thread
- QThreadPool::globalInstance()->setMaxThreadCount(QThread::idealThreadCount());
- }
- else {
- // subtract 1 to account for the GUI thread
- QThreadPool::globalInstance()->setMaxThreadCount(m_maxThreadCount - 1);
- }
- }
-
-
- /**
- * Initializes the internal lists of actions of the main window for
- * use in the menus and toolbars.
- */
- void IpceMainWindow::initializeActions() {
- QAction *exitAction = new QAction("E&xit", this);
- exitAction->setIcon( QIcon::fromTheme("window-close") );
- connect(exitAction, SIGNAL(triggered()), this, SLOT(close()));
- m_fileMenuActions.append(exitAction);
- m_permToolBarActions.append(exitAction);
-
- QAction *undoAction = m_directory->undoAction();
- undoAction->setShortcut(Qt::Key_Z | Qt::CTRL);
-
- QAction *redoAction = m_directory->redoAction();
- redoAction->setShortcut(Qt::Key_Z | Qt::CTRL | Qt::SHIFT);
-
- m_editMenuActions.append(undoAction);
- m_editMenuActions.append(redoAction);
-
-
- QAction *viewModeAction = new QAction("Toggle View Mode", this);
- connect(viewModeAction, SIGNAL( triggered() ),
- this, SLOT( toggleViewMode() ) );
- m_viewMenuActions.append(viewModeAction);
-
- m_cascadeViewsAction = new QAction("Cascade Views", this);
- connect(m_cascadeViewsAction, SIGNAL( triggered() ),
- centralWidget(), SLOT( cascadeSubWindows() ) );
- m_viewMenuActions.append(m_cascadeViewsAction);
-
- m_tileViewsAction = new QAction("Tile Views", this);
- connect(m_tileViewsAction, SIGNAL( triggered() ),
- centralWidget(), SLOT( tileSubWindows() ) );
- m_viewMenuActions.append(m_tileViewsAction);
-
- QAction *detachActiveViewAction = new QAction("Detach Active View", this);
- connect(detachActiveViewAction, SIGNAL( triggered() ),
- this, SLOT( detachActiveView() ) );
- m_viewMenuActions.append(detachActiveViewAction);
-
- QAction *threadLimitAction = new QAction("Set Thread &Limit", this);
- connect(threadLimitAction, SIGNAL(triggered()),
- this, SLOT(configureThreadLimit()));
-
- m_settingsMenuActions.append(m_directory->project()->userPreferenceActions());
- m_settingsMenuActions.append(threadLimitAction);
-
- QAction *activateWhatsThisAct = new QAction("&What's This", this);
- activateWhatsThisAct->setShortcut(Qt::SHIFT | Qt::Key_F1);
- activateWhatsThisAct->setIcon(
- QPixmap(FileName("$base/icons/contexthelp.png").expanded()));
- activateWhatsThisAct->setToolTip("Activate What's This and click on parts "
- "this program to see more information about them");
- connect(activateWhatsThisAct, SIGNAL(triggered()), this, SLOT(enterWhatsThisMode()));
-
- m_helpMenuActions.append(activateWhatsThisAct);
- }
-
-
- /**
- * Creates the main menus of the menu bar.
- */
- void IpceMainWindow::createMenus() {
- m_fileMenu = menuBar()->addMenu(tr("&File"));
- m_fileMenu->setObjectName("fileMenu");
-
- m_projectMenu = menuBar()->addMenu(tr("&Project"));
- m_projectMenu->setObjectName("projectMenu");
-
- // Allow tool tips to be displayed for the project menu's actions (e.g. "Bundle Adjustment")
- // This is a work around for Qt's what this text not working on disabled actions
- // (even though the Qt documentation says it should work on disabled QAction's).
- m_projectMenu->setToolTipsVisible(true);
-
- m_editMenu = menuBar()->addMenu(tr("&Edit"));
- m_editMenu->setObjectName("editMenu");
-
- m_viewMenu = menuBar()->addMenu("&View");
- m_viewMenu->setObjectName("viewMenu");
-
- m_settingsMenu = menuBar()->addMenu("&Settings");
- m_settingsMenu->setObjectName("settingsMenu");
-
- m_helpMenu = menuBar()->addMenu("&Help");
- m_helpMenu->setObjectName("helpMenu");
- }
-
-
- /**
- * Write the window positioning and state information out to a
- * config file. This allows us to restore the settings when we
- * create another main window (the next time this program is run).
- *
- * The state will be saved according to the currently loaded project and its name.
- *
- * When no project is loaded (i.e. the default "Project" is open), the config file used is
- * $HOME/.Isis/$APPNAME/$APPNAME_Project.config.
- * When a project, ProjectName, is loaded, the config file used is
- * $HOME/.Isis/$APPNAME/$APPNAME_ProjectName.config.
- *
- * @param[in] project Pointer to the project that is currently loaded (default is "Project")
- *
- * @internal
- * @history 2016-11-09 Ian Humphrey - Settings are now written according to the loaded project.
- * References #4358.
- */
- void IpceMainWindow::writeSettings(const Project *project) const {
- // Ensure that we are not using a NULL pointer
- if (!project) {
- QString msg = "Cannot write settings with a NULL Project pointer.";
- throw IException(IException::Programmer, msg, _FILEINFO_);
- }
- QString appName = QApplication::applicationName();
- QSettings settings(
- FileName("$HOME/.Isis/" + appName + "/" + appName + "_" + project->name() + ".config")
- .expanded(),
- QSettings::NativeFormat);
-
- settings.setValue("geometry", saveGeometry());
- settings.setValue("windowState", saveState());
- settings.setValue("size", size());
- settings.setValue("pos", pos());
-
- settings.setValue("maxThreadCount", m_maxThreadCount);
- }
-
-
- /**
- * Read the window positioning and state information from the config file.
- *
- * When running ipce without opening a project, the config file read is
- * $HOME/.Isis/$APPNAME/$APPNAME_Project.config
- * Otherwise, when running ipce and opening a project (ProjectName), the config file read is
- * $HOME/.Isis/$APPNAME/$APPNAME_ProjectName.config
- *
- * @param[in] project (Project *) The project that was loaded.
- *
- * @internal
- * @history Ian Humphrey - Settings are now read on a project name basis. References #4358.
- */
- void IpceMainWindow::readSettings(Project *project) {
- // Ensure that the Project pointer is not NULL
- if (!project) {
- QString msg = "Cannot read settings with a NULL Project pointer.";
- throw IException(IException::Programmer, msg, _FILEINFO_);
- }
- if (project->name() == "Project") {
- setWindowTitle("ipce");
- }
- else {
- setWindowTitle( project->name() );
- }
- QString appName = QApplication::applicationName();
- QSettings settings(
- FileName("$HOME/.Isis/" + appName + "/" + appName + "_" + project->name() + ".config")
- .expanded(),
- QSettings::NativeFormat);
-
- restoreGeometry(settings.value("geometry").toByteArray());
- restoreState(settings.value("windowState").toByteArray());
-
- // The geom/state isn't enough for main windows to correctly remember
- // their position and size, so let's restore those on top of
- // the geom and state.
- if (!settings.value("pos").toPoint().isNull())
- move(settings.value("pos").toPoint());
-
- resize(settings.value("size", QSize(800, 600)).toSize());
- m_maxThreadCount = settings.value("maxThreadCount", m_maxThreadCount).toInt();
- applyMaxThreadCount();
- }
-
-
- /**
- * Handle the close event by writing the window positioning and
- * state information before forwarding the event to the QMainWindow.
- */
- void IpceMainWindow::closeEvent(QCloseEvent *event) {
- if (!m_directory->project()->isClean()) {
- QMessageBox *box = new QMessageBox(QMessageBox::NoIcon, QString("Current Project Has Unsaved Changes"),
- QString("Would you like to save your current project?"),
- NULL, qobject_cast(parent()), Qt::Dialog);
- QPushButton *save = box->addButton("Save", QMessageBox::AcceptRole);
- box->addButton("Don't Save", QMessageBox::RejectRole);
- QPushButton *cancel = box->addButton("Cancel", QMessageBox::NoRole);
- box->exec();
-
- if (box->clickedButton() == (QAbstractButton*)cancel) {
- event->ignore();
- return;
- }
- else if (box->clickedButton() == (QAbstractButton*)save) {
- m_directory->project()->save();
- }
- }
- m_directory->project()->clear();
- writeSettings(m_directory->project());
- QMainWindow::closeEvent(event);
-
- }
-
-
- /**
- * Ask the user how many threads to use in this program. This
- * includes the GUI thread.
- */
- void IpceMainWindow::configureThreadLimit() {
- bool ok = false;
-
- QStringList options;
-
- int current = 0;
- options << tr("Use all available");
-
- for(int i = 1; i < 24; i++) {
- QString option = tr("Use %1 threads").arg(i + 1);
-
- options << option;
- if(m_maxThreadCount == i + 1)
- current = i;
- }
-
- QString res = QInputDialog::getItem(NULL, tr("Concurrency"),
- tr("Set the number of threads to use"),
- options, current, false, &ok);
-
- if (ok) {
- m_maxThreadCount = options.indexOf(res) + 1;
-
- if (m_maxThreadCount <= 1)
- m_maxThreadCount = -1;
-
- applyMaxThreadCount();
- }
- }
-
-
- /**
- * Activate the What's This? cursor. This is useful for he What's
- * This? action in the help menu.
- */
- void IpceMainWindow::enterWhatsThisMode() {
- QWhatsThis::enterWhatsThisMode();
- }
-
-
- /**
- * Slot to connect to the subWindowActivated signal from the central
- * QMdiArea. Updates the active view to the active sub window, or
- * sets it to null if the active window is not an AbstractProjectItemView.
- *
- * @param[in] window (QMdiSubWindow *) The active sub window.
- */
- void IpceMainWindow::onSubWindowActivated(QMdiSubWindow * window) {
- if (window) {
- setActiveView( qobject_cast( window->widget() ) );
- }
- else {
- setActiveView(0);
- }
- }
-
-
- /**
- * Toggles the view mode of the central QMdiArea between tabbed and
- * sub window mode.
- */
- void IpceMainWindow::toggleViewMode() {
- QMdiArea *mdiArea = qobject_cast( centralWidget() );
- if (mdiArea->viewMode() == QMdiArea::SubWindowView) {
- setTabbedViewMode();
- }
- else {
- setSubWindowViewMode();
- }
- }
-
-
- /**
- * Sets the QMdiArea in the central widget to the tabbed view mode
- * and updates the appropriate actions.
- */
- void IpceMainWindow::setTabbedViewMode() {
- QMdiArea *mdiArea = qobject_cast( centralWidget() );
- mdiArea->setViewMode(QMdiArea::TabbedView);
- m_cascadeViewsAction->setEnabled(false);
- m_tileViewsAction->setEnabled(false);
- }
-
-
- /**
- * Sets the QMdiArea in the central widget to the sub window view
- * mode and updates the appropriate actions.
- */
- void IpceMainWindow::setSubWindowViewMode() {
- QMdiArea *mdiArea = qobject_cast( centralWidget() );
- mdiArea->setViewMode(QMdiArea::SubWindowView);
- m_cascadeViewsAction->setEnabled(true);
- m_tileViewsAction->setEnabled(true);
- }
-
-
- /**
- * Moves the active view from the mdi area to its own independent
- * window. The view, its toolbars, and menu actions, are removed
- * from the main window and placed in an independent
- * QMainWindow. The new window contains the view as well as its
- * toolbars and menu actions. A detached view will not be set as the
- * active view when it is activated.
- */
- void IpceMainWindow::detachActiveView() {
- AbstractProjectItemView *view = m_activeView;
-
- if (!m_activeView) {
- return;
- }
-
- QMdiArea *mdiArea = qobject_cast( centralWidget() );
- if (mdiArea) {
- mdiArea->removeSubWindow(view);
- mdiArea->closeActiveSubWindow();
- }
-
- QMainWindow *newWindow = new QMainWindow(this, Qt::Window);
- m_detachedViews.append(newWindow);
- newWindow->setCentralWidget(view);
- newWindow->setWindowTitle( view->windowTitle() );
-
- if ( !view->permToolBarActions().isEmpty() ) {
- QToolBar *permToolBar = new QToolBar(newWindow);
- foreach ( QAction *action, view->permToolBarActions() ) {
- permToolBar->addAction(action);
- }
- newWindow->addToolBar(permToolBar);
- }
-
- if ( !view->activeToolBarActions().isEmpty() ) {
- QToolBar *activeToolBar = new QToolBar(newWindow);
- foreach ( QAction *action, view->activeToolBarActions() ) {
- activeToolBar->addAction(action);
- }
- newWindow->addToolBar(activeToolBar);
- }
-
- if ( !view->toolPadActions().isEmpty() ) {
- QToolBar *toolPad = new QToolBar(newWindow);
- foreach ( QAction *action, view->toolPadActions() ) {
- toolPad->addAction(action);
- }
- newWindow->addToolBar(Qt::RightToolBarArea, toolPad);
- }
-
- QMenuBar *menuBar = new QMenuBar(newWindow);
- newWindow->setMenuBar(menuBar);
-
- if ( !view->fileMenuActions().isEmpty() ) {
- QMenu *fileMenu = new QMenu("&File", newWindow);
- foreach ( QAction *action, view->fileMenuActions() ) {
- fileMenu->addAction(action);
- }
- menuBar->addMenu(fileMenu);
- }
-
- if ( !view->projectMenuActions().isEmpty() ) {
- QMenu *projectMenu = new QMenu("&Project", newWindow);
- foreach ( QAction *action, view->projectMenuActions() ) {
- projectMenu->addAction(action);
- }
- menuBar->addMenu(projectMenu);
- }
-
- if ( !view->editMenuActions().isEmpty() ) {
- QMenu *editMenu = new QMenu("&Edit", newWindow);
- foreach ( QAction *action, view->editMenuActions() ) {
- editMenu->addAction(action);
- }
- menuBar->addMenu(editMenu);
- }
-
- QAction *reattachAction = new QAction("Reattach View", newWindow);
- connect( reattachAction, SIGNAL( triggered() ),
- this, SLOT( reattachView() ) );
-
- QMenu *viewMenu = new QMenu("&View", newWindow);
-
- viewMenu->addAction(reattachAction);
-
- if ( !view->viewMenuActions().isEmpty() ) {
- foreach ( QAction *action, view->viewMenuActions() ) {
- viewMenu->addAction(action);
- }
- }
- menuBar->addMenu(viewMenu);
-
- if ( !view->settingsMenuActions().isEmpty() ) {
- QMenu *settingsMenu = new QMenu("&Settings", newWindow);
- foreach ( QAction *action, view->settingsMenuActions() ) {
- settingsMenu->addAction(action);
- }
- menuBar->addMenu(settingsMenu);
- }
-
- if ( !view->helpMenuActions().isEmpty() ) {
- QMenu *helpMenu = new QMenu("&Help", newWindow);
- foreach ( QAction *action, view->helpMenuActions() ) {
- helpMenu->addAction(action);
- }
- menuBar->addMenu(helpMenu);
- }
- newWindow->show();
-
- }
-
-
- /**
- * Reattaches a detached view. This slot can only be called by a QAction
- * from a QMainWindow that contains the view. The view is added to
- * the main window and the window that previously contained it is
- * deleted.
- */
- void IpceMainWindow::reattachView() {
- QAction *reattachAction = qobject_cast( sender() );
- if (!reattachAction) {
- return;
- }
-
- QMainWindow *viewWindow = qobject_cast( reattachAction->parent() );
- if (!viewWindow) {
- return;
- }
-
- AbstractProjectItemView *view = qobject_cast( viewWindow->centralWidget() );
- if (!view) {
- return;
- }
-
- view->setParent(this);
- viewWindow->deleteLater();
-
- addView(view);
- }
-
-
-/**
- * Raises the warningWidget to the front of the tabs. Connected to warning signal from directory.
- */
- void IpceMainWindow::raiseWarningTab() {
- m_warningsDock->raise();
- }
-
-}
diff --git a/isis/src/local/apps/ipce/IpceMainWindow.h b/isis/src/local/apps/ipce/IpceMainWindow.h
deleted file mode 100644
index 629cee400d3c8c23a7c40b414b54a9c24d36d57d..0000000000000000000000000000000000000000
--- a/isis/src/local/apps/ipce/IpceMainWindow.h
+++ /dev/null
@@ -1,193 +0,0 @@
-#ifndef IpceMainWindow_H
-#define IpceMainWindow_H
-/**
- * @file
- * $Revision: 1.19 $
- * $Date: 2010/03/22 19:44:53 $
- *
- * Unless noted otherwise, the portions of Isis written by the USGS are
- * public domain. See individual third-party library and package descriptions
- * for intellectual property information, user agreements, and related
- * information.
- *
- * Although Isis has been used by the USGS, no warranty, expressed or
- * implied, is made by the USGS as to the accuracy and functioning of such
- * software and related material nor shall the fact of distribution
- * constitute any such warranty, and no responsibility is assumed by the
- * USGS in connection therewith.
- *
- * For additional information, launch
- * $ISISROOT/doc//documents/Disclaimers/Disclaimers.html
- * in a browser or see the Privacy & Disclaimers page on the Isis website,
- * http://isis.astrogeology.usgs.gov, and the USGS privacy and disclaimers on
- * http://www.usgs.gov/privacy.html.
- */
-
-#include
-#include
-#include
-#include
-
-namespace Isis {
- class AbstractProjectItemView;
- class Directory;
- class Project;
-
- /**
- * The main window for the ipce appication. This handles most of the top-level GUI aspects of the program.
- *
- * @author 2012-??-?? Steven Lambright and Stuart Sides
- *
- * @internal
- * @history 2012-07-27 Kimberly Oyama and Steven Lambright - Removed progress and warnings
- * tab widgets. They are now dock widgets.
- * @history 2012-08-28 Tracie Sucharski - The Directory no longer takes a container it its
- * constructor.
- * @history 2012-09-17 Steven Lambright - Dock widgets now delete themselves on close. This
- * gives the user the correct options when proceeding in the interface,
- * but undo/redo are not implemented (it needs to eventually be
- * encapsulated in a work order). The undo/redo didn't work correctly
- * anyways before setting this flag, so it's an improvement. Example
- * change: If I close Footprint View 1, I'm no longer asked if I want
- * to view images in footprint view 1.
- * @history 2015-10-05 Jeffrey Covington - Replaced the ProjectTreeWidget
- * with a ProjectItemTreeView. Added the
- * eventFilter() method for intercepting some
- * events from views.
- * @history 2016-01-04 Jeffrey Covington - Added a QMdiArea as the central widget
- * of the main window. The menus and toolbars are now solely
- * handled by the main window. Menus, context menus, and
- * toolbars are populated with actions recieved from the Directory
- * the active view, and the main window. Both WorkOrders and
- * regular QActions can be used in menus and toolbars. Views can
- * now be detached from the main window into their own independent
- * window with internalized menus and toolbars.
- * @history 2016-10-20 Tracie Sucharski - Clean up included headers that are commented out,
- * updated for Qt5, comment call to saveState for window which caused
- * errors. TODO: Determine problem with saveState call.
- * @history 2016-11-09 Tyler Wilson - Move a segment of code in the constructor from the beginning
- * to the end. This code loads a project from the command line instead of the
- * GUI, and it wasn't outputting warnings/errors to the warnings/error tab
- * when the project was loaded because it was being called before the GUI
- * was created. Fixes #4488. References #4526, ##4487.
- * @history 2016-11-09 Ian Humphrey - Modified readSettings() and writeSettings() to take in
- * Project pointers to be used to properly read and write settings
- * for the IpceMainWindow. Note that when running ipce without
- * opening a Project, the config file ipce_Project.config is used.
- * Otherwise, when a project is open, the config file
- * ipce_ProjectName will be used to restore window geom.
- * The m_permToolBar, m_activeToolBar, and m_toolPad now have object
- * names set, so the saveState() call within writeSettings() now works.
- * Fixes #4358.
- * @history 2016-12-09 Tracie Sucharski - One of the previous 2 changes caused a problem with
- * view toolbars not to be restored. Added setActiveSubWindow and
- * show to the ::addView method. Fixes #4546.
- * @history 2017-04-17 Ian Humphrey - Updated createMenus() to set tool tips (hover text)
- * visible so the JigsawWorkOrder tool tip can be displayed to user
- * (which indicates why it is disabled by default). Fixes #4749.
- * @history 2017-06-22 Tracie Sucharski - Renamed from CNetSuiteMainWindow when application was
- * renamed to ipce from cnetsuite.
- * @history 2017-07-12 Cole Neubauer - Added removeAllViews function and m_detachedViews member
- * variable. Needed to clear out an old projects views from the window
- * when opening a new project. Fixes #4969
- * @history 2017-07-14 Cole Neubauer - Added private slot raiseWarningTab to be able to raise
- * the warning tab when a new warning happens.
- * Fixes #5041
- * @history 2017-07-14 Cole Neubauer - Set Object name for Target/Sensor Widgets in addView
- * Fixes #5059
- * Fixes #5041
- * @history 2017-07-26 Cole Neubauer - Changed the closevent funtion to check if a project is
- * and prompt user accordingly Fixes #4960
- * @history 2017-08-09 Marjorie Hahn - Hard-coded the size of the icons in the toolbar to
- * temporarily fix the shift in size when switching between views
- * until docked widgets are implemented. Fixes #5084.
- */
- class IpceMainWindow : public QMainWindow {
- Q_OBJECT
- public:
- explicit IpceMainWindow(QWidget *parent = 0);
- ~IpceMainWindow();
-
- public slots:
- void addView(QWidget *newWidget);
- void removeAllViews();
-
- void setActiveView(AbstractProjectItemView *view);
- void updateMenuActions();
- void updateToolBarActions();
- void readSettings(Project *);
-
- protected:
- void closeEvent(QCloseEvent *event);
- bool eventFilter(QObject *watched, QEvent *event);
-
- private slots:
- void configureThreadLimit();
- void enterWhatsThisMode();
- void onSubWindowActivated(QMdiSubWindow *);
-
- void toggleViewMode();
- void setTabbedViewMode();
- void setSubWindowViewMode();
-
- void detachActiveView();
- void reattachView();
-
- void raiseWarningTab();
- private:
- Q_DISABLE_COPY(IpceMainWindow);
-
- void applyMaxThreadCount();
- void createMenus();
- void writeSettings(const Project *project) const;
-
- void initializeActions();
-
- private:
- /**
- * The directory stores all of the work orders that this program is capable of doing. This
- * drives most of the functionality.
- */
- QPointer m_directory;
-
- QDockWidget *m_projectDock;
- QList m_detachedViews; //!< List to keep track of any detached main windows
- QDockWidget *m_warningsDock;
- /**
- * This is the "goal" or "estimated" maximum number of active threads running in this program
- * at once. For now, the GUI consumes 1 thread and QtConcurrent
- * (QThreadPool::globalInstance) consumes the remaining threads. Anything <= 1 means that we
- * should perform a best-guess for best perfomance.
- */
- int m_maxThreadCount;
-
- QToolBar *m_permToolBar; //!< The toolbar for actions that rarely need to be changed.
- QToolBar *m_activeToolBar; // m_fileMenuActions; //!< Internal list of file actions
- QList m_projectMenuActions;//!< Internal list of project actions
- QList m_editMenuActions;//!< Internal list of edit actions
- QList m_viewMenuActions;//!< Internal list of view actions
- QList m_settingsMenuActions;//!< Internal list of settings actions
- QList m_helpMenuActions;//!< Internal list of help actions
-
- QList m_permToolBarActions;//!< Internal list of permanent toolbar actions
- QList m_activeToolBarActions;//!< Internal list of active toolbar actions
- QList m_toolPadActions;//!< Internal list of toolpad actions
-
- QAction *m_cascadeViewsAction; //!< Action that cascades the mdi area
- QAction *m_tileViewsAction; //!< Action that tiles the mdi area
-
- AbstractProjectItemView *m_activeView; //!< The active view
- };
-}
-
-#endif // IpceMainWindow_H
diff --git a/isis/src/local/apps/ipce/Makefile b/isis/src/local/apps/ipce/Makefile
deleted file mode 100644
index 7578f0b21d038db6a5042c095cda9b34b6bb2570..0000000000000000000000000000000000000000
--- a/isis/src/local/apps/ipce/Makefile
+++ /dev/null
@@ -1,7 +0,0 @@
-ifeq ($(ISISROOT), $(BLANK))
-.SILENT:
-error:
- echo "Please set ISISROOT";
-else
- include $(ISISROOT)/make/isismake.apps
-endif
\ No newline at end of file
diff --git a/isis/src/local/apps/ipce/ProgressWidget.cpp b/isis/src/local/apps/ipce/ProgressWidget.cpp
deleted file mode 100644
index 08c264ae23ee04cad1c597f0914d504286f0cfe8..0000000000000000000000000000000000000000
--- a/isis/src/local/apps/ipce/ProgressWidget.cpp
+++ /dev/null
@@ -1,17 +0,0 @@
-#include "ProgressWidget.h"
-
-#include
-
-#include
-
-namespace Isis {
- ProgressWidget::ProgressWidget(QWidget *parent) : QWidget(parent) {
-
- }
-
-
-
- ProgressWidget::~ProgressWidget() {
-
- }
-}
diff --git a/isis/src/local/apps/ipce/ProgressWidget.h b/isis/src/local/apps/ipce/ProgressWidget.h
deleted file mode 100644
index 0e1ade1528f1ff2fa1c45b07a4bccaf00669a3bc..0000000000000000000000000000000000000000
--- a/isis/src/local/apps/ipce/ProgressWidget.h
+++ /dev/null
@@ -1,29 +0,0 @@
-#ifndef ProgressWidget_H
-#define ProgressWidget_H
-
-#include
-
-namespace Isis {
-
- /**
- * @brief Warning Widget for ipce
- *
- * @author 2012-05-29 Steven Lambright and Tracie Sucharski
- *
- * @internal
- */
- class ProgressWidget : public QWidget {
- Q_OBJECT
- public:
- ProgressWidget(QWidget *parent = 0);
- virtual ~ProgressWidget();
-
-
- private:
- Q_DISABLE_COPY(ProgressWidget);
- QList m_progressBars;
- };
-}
-
-#endif
-
diff --git a/isis/src/local/apps/ipce/WarningTreeWidget.cpp b/isis/src/local/apps/ipce/WarningTreeWidget.cpp
deleted file mode 100644
index 9e8549fd18e9ce57706dac46529429b68d578757..0000000000000000000000000000000000000000
--- a/isis/src/local/apps/ipce/WarningTreeWidget.cpp
+++ /dev/null
@@ -1,34 +0,0 @@
-#include "WarningTreeWidget.h"
-
-#include
-
-#include
-
-namespace Isis {
- /**
- * Create a warning tree widget for the given project.
- *
- * @param parent The widget that goes along with the warnings.
- */
- WarningTreeWidget::WarningTreeWidget(QWidget *parent) : QTreeWidget(parent) {
-
- setHeaderHidden(true);
- }
-
-
- WarningTreeWidget::~WarningTreeWidget() {
-
- }
-
-
- /**
- * Creates a new warning item with the given text.
- *
- * @param text The text of the warning.
- */
- void WarningTreeWidget::showWarning(QString text) {
-
- QTreeWidgetItem *warningItem = new QTreeWidgetItem(this);
- warningItem->setText(0, text);
- }
-}
diff --git a/isis/src/local/apps/ipce/WarningTreeWidget.h b/isis/src/local/apps/ipce/WarningTreeWidget.h
deleted file mode 100644
index 9ff48100da05658bfaf410062b7abca1d7cdeb3e..0000000000000000000000000000000000000000
--- a/isis/src/local/apps/ipce/WarningTreeWidget.h
+++ /dev/null
@@ -1,30 +0,0 @@
-#ifndef WarningTreeWidget_H
-#define WarningTreeWidget_H
-
-#include
-
-namespace Isis {
-
- /**
- * @brief Warning Widget for ipce
- *
- * @author 2012-05-29 Steven Lambright and Tracie Sucharski
- *
- * @internal
- * @histroy 2012-07-31 Kimberly Oyama - Added comments to some of the methods.
- */
- class WarningTreeWidget : public QTreeWidget {
- Q_OBJECT
- public:
- WarningTreeWidget(QWidget *parent = 0);
- virtual ~WarningTreeWidget();
-
- void showWarning(QString text);
-
- private:
- Q_DISABLE_COPY(WarningTreeWidget);
- };
-}
-
-#endif
-
diff --git a/isis/src/local/apps/ipce/ipce.cpp b/isis/src/local/apps/ipce/ipce.cpp
deleted file mode 100644
index 481d0536b9cab3c0c846db65fcbb6596ef8c919d..0000000000000000000000000000000000000000
--- a/isis/src/local/apps/ipce/ipce.cpp
+++ /dev/null
@@ -1,63 +0,0 @@
-/**
- * @file
- * $Revision: 1.19 $
- * $Date: 2010/03/22 19:44:53 $
- *
- * Unless noted otherwise, the portions of Isis written by the USGS are
- * public domain. See individual third-party library and package descriptions
- * for intellectual property information, user agreements, and related
- * information.
- *
- * Although Isis has been used by the USGS, no warranty, expressed or
- * implied, is made by the USGS as to the accuracy and functioning of such
- * software and related material nor shall the fact of distribution
- * constitute any such warranty, and no responsibility is assumed by the
- * USGS in connection therewith.
- *
- * For additional information, launch
- * $ISISROOT/doc//documents/Disclaimers/Disclaimers.html
- * in a browser or see the Privacy & Disclaimers page on the Isis website,
- * http://isis.astrogeology.usgs.gov, and the USGS privacy and disclaimers on
- * http://www.usgs.gov/privacy.html.
- */
-#include "IsisDebug.h"
-
-#include
-#include
-#include
-
-#include "Gui.h"
-#include "IException.h"
-#include "IpceMainWindow.h"
-#include "QIsisApplication.h"
-
-using namespace std;
-using namespace Isis;
-
-int main(int argc, char *argv[]) {
-
- Gui::checkX11();
-
- try {
- QApplication *app = new QIsisApplication(argc, argv);
- QApplication::setApplicationName("ipce");
-
- IpceMainWindow *mainWindow = new IpceMainWindow();
-
- // We do not want a showMaximized call, as that will negate the settings read during the main
- // window's initialization. References #4358.
- mainWindow->show();
- int status = app->exec();
-
- delete mainWindow;
- delete app;
-
- return status;
- }
- catch(IException &e) {
- e.print();
- }
-
-}
-
-
diff --git a/isis/src/local/apps/ipce/ipce.xml b/isis/src/local/apps/ipce/ipce.xml
deleted file mode 100644
index 99cacf50238cb254cfb7346b711bf7ed98367bec..0000000000000000000000000000000000000000
--- a/isis/src/local/apps/ipce/ipce.xml
+++ /dev/null
@@ -1,38 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
- Display
-
-
-
-
- Original version
-
-
- The main window state is now saved properly when running ipce. If running ipce
- without opening a project, the config files are saved as ipce_Project.config (Project is
- the default project name). Otherwise, when a project is loaded, config files are saved as
- ipce_ProjectName.config, where ProjectName is the name of the loaded project.
- Fixes #4358.
-
-
- Changed the alias reference for the data_management.png icon from 'data' to 'data-management'.
- Annoying errors were showing up on the command line when the application was launched due
- to a naming conflict. Fixes #3982.
-
-
- Changed name of application from cnetsuite to ipce.
-
-
- Updated ipce to only include licensed or open source images and icons. Fixes #5105.
-
-
-
diff --git a/isis/src/local/apps/ipce/tsts/Makefile b/isis/src/local/apps/ipce/tsts/Makefile
deleted file mode 100644
index 46d84c74c297304e943452a44e06b111f179a92b..0000000000000000000000000000000000000000
--- a/isis/src/local/apps/ipce/tsts/Makefile
+++ /dev/null
@@ -1,4 +0,0 @@
-BLANKS = "%-6s"
-LENGTH = "%-40s"
-
-include $(ISISROOT)/make/isismake.tststree
diff --git a/isis/src/local/apps/ipce/tsts/default/Makefile b/isis/src/local/apps/ipce/tsts/default/Makefile
deleted file mode 100644
index 2408ca3c360d4ce856a1059efc28ad230657fd80..0000000000000000000000000000000000000000
--- a/isis/src/local/apps/ipce/tsts/default/Makefile
+++ /dev/null
@@ -1,7 +0,0 @@
-APPNAME = ipce
-
-include $(ISISROOT)/make/isismake.tsts
-
-commands:
- $(ECHO) "This should be tested by qisis cat test" > $(OUTPUT)/truth.txt;
-
diff --git a/isis/src/local/apps/m3loc2net/Makefile b/isis/src/local/apps/m3loc2net/Makefile
deleted file mode 100644
index 7578f0b21d038db6a5042c095cda9b34b6bb2570..0000000000000000000000000000000000000000
--- a/isis/src/local/apps/m3loc2net/Makefile
+++ /dev/null
@@ -1,7 +0,0 @@
-ifeq ($(ISISROOT), $(BLANK))
-.SILENT:
-error:
- echo "Please set ISISROOT";
-else
- include $(ISISROOT)/make/isismake.apps
-endif
\ No newline at end of file
diff --git a/isis/src/local/apps/m3loc2net/m3loc2net.cpp b/isis/src/local/apps/m3loc2net/m3loc2net.cpp
deleted file mode 100644
index 3f923128ef6a43621cbb1f86837e1e9335a1ebec..0000000000000000000000000000000000000000
--- a/isis/src/local/apps/m3loc2net/m3loc2net.cpp
+++ /dev/null
@@ -1,129 +0,0 @@
-#include "Isis.h"
-
-#include "Brick.h"
-#include "Camera.h"
-#include "ControlMeasure.h"
-#include "ControlNet.h"
-#include "ControlPoint.h"
-#include "Cube.h"
-#include "Distance.h"
-#include "ID.h"
-#include "IException.h"
-#include "Latitude.h"
-#include "Longitude.h"
-#include "Progress.h"
-#include "SerialNumber.h"
-#include "SpecialPixel.h"
-#include "SurfacePoint.h"
-#include "UserInterface.h"
-
-using namespace std;
-using namespace Isis;
-
-void IsisMain() {
-
- UserInterface &ui = Application::GetUserInterface();
-
- ControlNet cnet;
- if (ui.WasEntered("NETWORKID")) {
- cnet.SetNetworkId(ui.GetString("NETWORKID"));
- }
- if (ui.WasEntered("DESCRIPTION")) {
- cnet.SetDescription(ui.GetString("DESCRIPTION"));
- }
- cnet.SetUserName(Application::Name());
-
- QString filename = ui.GetFileName("FROM");
- Cube inputCube;
- inputCube.open(filename, "r");
-
- QString locFilename = ui.GetFileName("LOC");
- Cube locCube;
- locCube.open(locFilename, "r");
-
- if (inputCube.label()->hasKeyword("TargetName", PvlObject::Traverse)) {
- PvlGroup inst = inputCube.label()->findGroup("Instrument", PvlObject::Traverse);
- QString targetName = inst["TargetName"];
- cnet.SetTarget(targetName);
- }
- else {
- QString msg = "Input cube does not have target.";
- throw IException(IException::User, msg, _FILEINFO_);
- }
-
- // Create serial number list
- QString serialNumber = SerialNumber::Compose(inputCube);
-
- int sampInc = ui.GetInteger("SAMPLEINC");
- int lineInc = ui.GetInteger("LINEINC");
-
- // Set up an automatic id generator for the point ids
- ID pointId = ID(ui.GetString("POINTID"));
-
-//Progress gridStatus;
-//
-//int maxSteps = (inputCube.sampleCount() / sampInc + 1) * (inputCube.lineCount() / lineInc + 1)+100;
-//
-//if (maxSteps > 0) {
-// gridStatus.SetMaximumSteps(maxSteps);
-// gridStatus.SetText("Creating Ground Points");
-// gridStatus.CheckStatus();
-//}
-
- // Set up brick to read a line from the LOC file
- Brick locBrick(locCube, locCube.sampleCount(), 1, 3);
-
- for (int line = 0; line < inputCube.lineCount(); line += lineInc) {
- locBrick.SetBasePosition(1, line + 1, 1);
- locCube.read(locBrick);
- for (int samp = 0; samp < inputCube.sampleCount(); samp += sampInc) {
- qDebug()<<"samp : line = "<SetId(pointId.Next());
- point->SetType(ControlPoint::Fixed);
- double lon = locBrick.at(samp);
- double lat = locBrick.at(locCube.sampleCount() + samp);
- double radius = locBrick.at((locCube.sampleCount() * 2) + samp);
-
- if (!IsValidPixel(lon) || !IsValidPixel(lat) || !IsValidPixel(radius)) {
- continue;
- }
-
- try {
- SurfacePoint pt(Latitude(lat, Angle::Degrees),
- Longitude(lon, Angle::Degrees),
- Distance(radius, Distance::Meters));
- point->SetAprioriSurfacePoint(pt);
- }
- catch (IException &e) {
- continue;
- }
-
- ControlMeasure *measure = new ControlMeasure;
- measure->SetCubeSerialNumber(serialNumber);
- measure->SetCoordinate(samp + 1, line + 1);
- measure->SetType(ControlMeasure::Candidate);
- measure->SetDateTime();
- measure->SetChooserName(Application::Name());
- point->Add(measure);
-
- cnet.AddPoint(point);
-
- // Make sure last sample is always included
- if ((samp != (inputCube.sampleCount() - 1)) && ((samp + sampInc) >= inputCube.sampleCount())) {
- samp = inputCube.sampleCount() - sampInc - 1;
- qDebug()<<"lastSamp = "<= inputCube.lineCount())) {
- line = inputCube.lineCount() - lineInc - 1;
- qDebug()<<"lastLine = "<
-
-
-
-
- Creates a control network containing ground points either using a Chandrayaan LOC file
- or the image camera for lat/lon/radii values.
-
-
-
-
- This program creates a control network containing ground points using
- either the Chandrayaan LOC file or the image camera for latitute, longitude
- and radii values.
-
-
-
-
- Control Networks
-
-
-
-
- Original version
-
-
- Make sure control points are always included for last line and last sample in cube.
-
-
-
-
-
-
- cube
-
- Level 1 cube
-
-
- Ground point will be created for this cube
-
-
- *.cub
-
-
-
- cube
-
- Chandrayaan M3 Location cube
-
-
- Chandrayaan M3 Location cube containing 3 bands: Longitude, Latitude, Radius
-
-
- *.cub
-
-
-
- filename
- output
-
- Output control network
-
-
- This file will contain the control network that is created.
-
-
-
-
-
-
- integer
-
- Sample Increment
-
-
- Sample Increment
-
-
-
- integer
-
- Line Increment
-
-
- Line Increment
-
-
-
-
-
-
- string
-
- Name of this control network
-
-
- The ID or name of the control network that is created. This string
- should be unique.
-
-
- No Id
-
-
-
-
- string
-
- The pattern to be used to create point ids
-
-
- A string with one and only one set of question marks ("?").
- This string will be used to create unique IDs for each control
- point created by this program. The question marks will be replaced
- with a number beginning with zero. For example the pattern
- "User????" would create point IDs "User0001" through
- "User9999". Note: Make sure there are enough "?"s for all the
- control points that may be created during this run. If all question
- marks are exausted the program will throw an error.
-
-
-
-
- string
-
- The description of the network
-
-
- A string describing the purpose of this control network. For
- example, a description might be "LROC NAC MareSmythii GRID NETWORK".
- This description indicates that the control network is for the LROC
- mission using the narrow angle camera instrument, and the feature of
- interest is Mare Smythii. The description string can be literally
- anything, but it is helpful to make it something that is descriptive
- of the control network.
-
-
- No Description
-
-
-
-
-
diff --git a/isis/src/local/apps/m3loc2net/tsts/Makefile b/isis/src/local/apps/m3loc2net/tsts/Makefile
deleted file mode 100644
index 46d84c74c297304e943452a44e06b111f179a92b..0000000000000000000000000000000000000000
--- a/isis/src/local/apps/m3loc2net/tsts/Makefile
+++ /dev/null
@@ -1,4 +0,0 @@
-BLANKS = "%-6s"
-LENGTH = "%-40s"
-
-include $(ISISROOT)/make/isismake.tststree
diff --git a/isis/src/local/apps/m3loc2net/tsts/dummy/Makefile b/isis/src/local/apps/m3loc2net/tsts/dummy/Makefile
deleted file mode 100644
index 3b53d5ae8e4f9d52991b3164bdae835c79a880df..0000000000000000000000000000000000000000
--- a/isis/src/local/apps/m3loc2net/tsts/dummy/Makefile
+++ /dev/null
@@ -1,6 +0,0 @@
-APPNAME = m3loc2net
-
-include $(ISISROOT)/make/isismake.tsts
-
-commands:
- echo "This program has a dummy test for now " > $(OUTPUT)/truth.txt;
diff --git a/isis/src/local/apps/polytool/Makefile b/isis/src/local/apps/polytool/Makefile
deleted file mode 100644
index 7578f0b21d038db6a5042c095cda9b34b6bb2570..0000000000000000000000000000000000000000
--- a/isis/src/local/apps/polytool/Makefile
+++ /dev/null
@@ -1,7 +0,0 @@
-ifeq ($(ISISROOT), $(BLANK))
-.SILENT:
-error:
- echo "Please set ISISROOT";
-else
- include $(ISISROOT)/make/isismake.apps
-endif
\ No newline at end of file
diff --git a/isis/src/local/apps/polytool/polytool.cpp b/isis/src/local/apps/polytool/polytool.cpp
deleted file mode 100644
index 0640f5dc0e828436f030fbb801fcdf14c1cb2d5e..0000000000000000000000000000000000000000
--- a/isis/src/local/apps/polytool/polytool.cpp
+++ /dev/null
@@ -1,103 +0,0 @@
-#include "Isis.h"
-
-#include "PvlGroup.h"
-#include "PvlKeyword.h"
-
-#include
-#include
-
-#include "geos/io/WKTReader.h"
-
-#include "PolygonTools.h"
-
-using namespace std;
-using namespace Isis;
-
-geos::geom::Geometry *GetPolygon(QString name);
-
-void IsisMain() {
- UserInterface &ui = Application::GetUserInterface();
-
- std::string result;
- if(ui.GetString("PROCESS").compare("DESPIKE") == 0) {
- geos::geom::MultiPolygon *polygon1 = PolygonTools::MakeMultiPolygon(GetPolygon(ui.GetFileName("FROM1")));
-
- geos::geom::MultiPolygon *outpoly = PolygonTools::Despike(polygon1);
-
- result = outpoly->toString();
- }
- else if(ui.GetString("PROCESS").compare("DIFFERENCE") == 0) {
- geos::geom::Geometry *polygon1 = GetPolygon(ui.GetFileName("FROM1"));
- geos::geom::Geometry *polygon2 = GetPolygon(ui.GetFileName("FROM2"));
-
- geos::geom::Geometry *outgeom = PolygonTools::Difference(polygon1, polygon2);
-
- result = outgeom->toString();
- }
- else if(ui.GetString("PROCESS").compare("EQUAL") == 0) {
- geos::geom::Geometry *geom1 = GetPolygon(ui.GetFileName("FROM1"));
- geos::geom::MultiPolygon *polygon1 = PolygonTools::MakeMultiPolygon(geom1);
-
- geos::geom::Geometry *geom2 = GetPolygon(ui.GetFileName("FROM2"));
- geos::geom::MultiPolygon *polygon2 = PolygonTools::MakeMultiPolygon(geom2);
-
- PvlGroup grp("Results");
- if(PolygonTools::Equal(polygon1, polygon2)) {
- grp += PvlKeyword("Equal", "true");
- }
- else {
- grp += PvlKeyword("Equal", "false");
- }
-
- delete geom1;
- delete geom2;
- delete polygon1;
- delete polygon2;
-
- Application::Log(grp);
- }
- else if(ui.GetString("PROCESS").compare("INTERSECT") == 0) {
- geos::geom::Geometry *polygon1 = GetPolygon(ui.GetFileName("FROM1"));
- geos::geom::Geometry *polygon2 = GetPolygon(ui.GetFileName("FROM2"));
-
- geos::geom::Geometry *outgeom = PolygonTools::Intersect(polygon1, polygon2);
-
- result = outgeom->toString();
- }
-
- if(!result.empty()) {
- // Output the resultant polygon
- QString outname = ui.GetFileName("TO");
- std::ofstream outfile;
- outfile.open(outname.toLatin1().data());
- outfile << result;
- outfile.close();
- if(outfile.fail()) {
- IString msg = "Unable to write the polygon to [" + outname + "]";
- throw IException(IException::Io, msg, _FILEINFO_);
- }
- }
-}
-
-
-/**
- * Grabs the first line of a file and attempts to create a Multipolygon to from
- * it.
- *
- * @param name The filename containing the multipolygon in its first line
- *
- * @return geos::geom::MultiPolygon*
- */
-geos::geom::Geometry *GetPolygon(QString name) {
- ifstream is;
- is.open(name.toLatin1().data());
-
- std::string fileData = "";
- while(is.good()) {
- fileData += is.get();
- }
- const std::string fileContents = fileData;
-
- geos::io::WKTReader geosReader;
- return geosReader.read(fileContents);
-}
diff --git a/isis/src/local/apps/polytool/polytool.xml b/isis/src/local/apps/polytool/polytool.xml
deleted file mode 100644
index 2f4d51384233fb9149c9617a61847e487efa8fc9..0000000000000000000000000000000000000000
--- a/isis/src/local/apps/polytool/polytool.xml
+++ /dev/null
@@ -1,113 +0,0 @@
-
-
-
-
- A tool for looking at polygon processing
-
- This is a debugging tool made for the purpose of being able to see one or
- more polygons processed by various ISIS 3 processes.
-
-
-
- Geometry
-
-
-
-
- Original version
-
-
- Added the EQUAL option
-
-
- Removed memory leaks in this program in order to do
- memory leak checking for PolygonTools
-
-
-
-
-
-
-
-
- filename
- input
- Input 1
-
- This input should be a file containing a single multipolygon.
-
-
-
-
- filename
- input
- Input 2
-
- This input should be a file containing a single multipolygon.
-
-
-
-
-
-
-
-
- string
- DESPIKE
- Which process to execute
-
- Used to determine which process should be ran on the input
- multipolygon(s)
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- filename
- output
- Output multipolygon
-
- The resultant polygon from the process ran.
-
-
-
-
-
-
-
-
diff --git a/isis/src/local/apps/polytool/tsts/Makefile b/isis/src/local/apps/polytool/tsts/Makefile
deleted file mode 100644
index 46d84c74c297304e943452a44e06b111f179a92b..0000000000000000000000000000000000000000
--- a/isis/src/local/apps/polytool/tsts/Makefile
+++ /dev/null
@@ -1,4 +0,0 @@
-BLANKS = "%-6s"
-LENGTH = "%-40s"
-
-include $(ISISROOT)/make/isismake.tststree
diff --git a/isis/src/local/apps/polytool/tsts/default/Makefile b/isis/src/local/apps/polytool/tsts/default/Makefile
deleted file mode 100644
index df2f163bb325d8b112ab2cebbc999f8c2136bcc8..0000000000000000000000000000000000000000
--- a/isis/src/local/apps/polytool/tsts/default/Makefile
+++ /dev/null
@@ -1,13 +0,0 @@
-APPNAME = polytool
-
-include $(ISISROOT)/make/isismake.tsts
-
-commands:
- $(APPNAME) from1=$(INPUT)/multipolygon1.txt \
- to=$(OUTPUT)/despiked.txt > /dev/null;
- $(APPNAME) from1=$(INPUT)/multipolygon1.txt \
- from2=$(INPUT)/multipolygon2.txt process=difference \
- to=$(OUTPUT)/differenced.txt > /dev/null;
- $(APPNAME) from1=$(INPUT)/multipolygon1.txt \
- from2=$(INPUT)/multipolygon2.txt process=intersect \
- to=$(OUTPUT)/intersected.txt > /dev/null;
diff --git a/isis/src/local/objs/AerialPhotoCamera/AerialPhotoCamera.cpp b/isis/src/local/objs/AerialPhotoCamera/AerialPhotoCamera.cpp
deleted file mode 100644
index e5906b122b60c129b78575550b72c121fee4a317..0000000000000000000000000000000000000000
--- a/isis/src/local/objs/AerialPhotoCamera/AerialPhotoCamera.cpp
+++ /dev/null
@@ -1,225 +0,0 @@
-/**
- * @file
- *
- * Unless noted otherwise, the portions of Isis written by the USGS are public
- * domain. See individual third-party library and package descriptions for
- * intellectual property information,user agreements, and related information.
- *
- * Although Isis has been used by the USGS, no warranty, expressed or implied,
- * is made by the USGS as to the accuracy and functioning of such software
- * and related material nor shall the fact of distribution constitute any such
- * warranty, and no responsibility is assumed by the USGS in connection
- * therewith.
- *
- * For additional information, launch
- * $ISISROOT/doc//documents/Disclaimers/Disclaimers.html in a browser or see
- * the Privacy & Disclaimers page on the Isis website,
- * http://isis.astrogeology.usgs.gov, and the USGS privacy and disclaimers on
- * http://www.usgs.gov/privacy.html.
- */
-#include "AerialPhotoCamera.h"
-
-#include
-#include
-
-#include "Affine.h"
-#include "CameraDetectorMap.h"
-#include "CameraDistortionMap.h"
-#include "CameraFocalPlaneMap.h"
-#include "CameraGroundMap.h"
-#include "CameraSkyMap.h"
-#include "FileName.h"
-#include "IException.h"
-#include "IString.h"
-#include "iTime.h"
-#include "NaifStatus.h"
-
-using namespace std;
-namespace Isis {
- /**
- * Constructs a generic aerial photo camera object using the image labels.
- *
- * @param cube An aerial photo image.
- *
- * @internal
- * @history 2014-01-14 Jeff Anderson - Original version
- */
- AerialPhotoCamera::AerialPhotoCamera(Cube &cube) : FramingCamera(cube) {
- NaifStatus::CheckErrors();
-
- m_instrumentNameLong = "Aerial Photo";
- m_instrumentNameShort = "Aerial";
- m_spacecraftNameLong = "Aircraft";
- m_spacecraftNameShort = "Aircraft";
-
- // Prep for getting information from cube labels
- Pvl &lab = *cube.label();
- const PvlGroup &inst = lab.findGroup("Instrument", Pvl::Traverse);
-
- // Set camera focal length
- double focalLength = inst["FocalLength"];
- SetFocalLength(focalLength);
-
- // Get the fidicual locations which will be needed for the focal plane map
- double fiducialX[8], fiducialY[8], fiducialS[8], fiducialL[8];
- for (int i=0; i<8; i++) {
- fiducialX[i] = inst["FiducialX"][i].toDouble();
- fiducialY[i] = inst["FiducialY"][i].toDouble();
- fiducialS[i] = inst["FiducialSample"][i].toDouble();
- fiducialL[i] = inst["FiducialLine"][i].toDouble();
- }
-
- // Get the min/max range of the fiducial locations so we can estimate the pixel pitch
- double minX = fiducialX[0];
- double maxX = fiducialX[0];
- double minY = fiducialY[0];
- double maxY = fiducialY[0];
-
- double minS = fiducialS[0];
- double maxS = fiducialS[0];
- double minL = fiducialL[0];
- double maxL = fiducialL[0];
-
- for (int i=1; i<8; i++) {
- if (fiducialX[i] < minX) minX = fiducialX[i];
- if (fiducialX[i] > maxX) maxX = fiducialX[i];
- if (fiducialY[i] < minY) minY = fiducialY[i];
- if (fiducialY[i] > maxY) maxY = fiducialY[i];
-
- if (fiducialS[i] < minS) minS = fiducialS[i];
- if (fiducialS[i] > maxS) maxS = fiducialS[i];
- if (fiducialL[i] < minL) minL = fiducialL[i];
- if (fiducialL[i] > maxL) maxL = fiducialL[i];
- }
-
- double XYrange = (maxX - minX) > (maxY - minY) ? maxX - minX : maxY - minY;
- double pixelRange = (maxS - minS) > (maxL - minL) ? maxS - minS : maxL - minL;
-
- double pixelPitch = XYrange / pixelRange;
- SetPixelPitch(pixelPitch); // Just the estimated pixel pitch. Not perfect but should work in
- // cam2map when computing pixel resolution for output map.
-
-
- // Setup detector map. There is no summing or starting sample/line so this map should be the
- // identity (image sample/line == detector sample/line)
- new CameraDetectorMap(this);
-
- // Setup focal plane map. This maps image line/samples to focal plane mm using the fiducials
- Affine affine;
- affine.Solve(fiducialS, fiducialL, fiducialX, fiducialY, 8);
- new CameraFocalPlaneMap(this, affine);
-
- // Setup the optical distortion model. Use the Apollo metric distortion model which allows for decentering.
-#if 0
- double xCalPP = inst["XCalibratedPrinicpalPoint"][0].toDouble();
- double yCalPP = inst["XCalibratedPrinicpalPoint"][0].toDouble();
-
- double odk0 = inst["RadialDistortionCoefficients"][0].toDouble();
- double odk1 = inst["RadialDistortionCoefficients"][1].toDouble();
- double odk2 = inst["RadialDistortionCoefficients"][2].toDouble();
-
- double dc0 = inst["DecenteringDistortionCoefficients"][0].toDouble();
- double dc1 = inst["DecenteringDistortionCoefficients"][1].toDouble();
- double dc2 = inst["DecenteringDistortionCoefficients"][2].toDouble();
-
- new ApolloMetricDistortionMap(this, xCalpp, yCalpp, odk0, odk1, odk2, dc0, dc1, dc2);
-#endif
- new CameraDistortionMap(this, -1.0);
-// new CameraDistortionMap(this);
-
- // Setup the ground and sky map
- new CameraGroundMap(this);
- new CameraSkyMap(this);
-
- // Create a cache and grab spice info since it does not change for
- // a framing camera (fixed spacecraft position and pointing)
- setTime(inst["EphemerisTime"][0].toDouble());
- LoadCache();
- NaifStatus::CheckErrors();
- }
-
- /**
- * Returns the shutter open and close times. The user should pass in the
- * exposure duration in seconds and the StartTime keyword value, converted to
- * ephemeris time. The StartTime keyword value from the labels represents the
- * shutter center time of the observation. To find the shutter open and close
- * times, half of the exposure duration is subtracted from and added to the
- * input time parameter, respectively. This method overrides the
- * FramingCamera class method.
- * @b Note: Apollo did not provide exposure duration in the support data.
- *
- * @param exposureDuration Exposure duration, in seconds.
- * @param time The StartTime keyword value from the labels, converted to
- * ephemeris time.
- *
- * @return @b pair < @b iTime, @b iTime > The first value is the shutter
- * open time and the second is the shutter close time.
- *
- * @author 2011-05-03 Jeannie Walldren
- * @internal
- * @history 2011-05-03 Jeannie Walldren - Original version.
- */
- pair AerialPhotoCamera::ShutterOpenCloseTimes(double time,
- double exposureDuration) {
- pair shuttertimes;
- // To get shutter start (open) time, subtract half exposure duration
- shuttertimes.first = time - (exposureDuration / 2.0);
- // To get shutter end (close) time, add half exposure duration
- shuttertimes.second = time + (exposureDuration / 2.0);
- return shuttertimes;
- }
-
-
- /**
- * This method returns the full instrument name.
- *
- * @return QString
- */
- QString AerialPhotoCamera::instrumentNameLong() const {
- return m_instrumentNameLong;
- }
-
-
- /**
- * This method returns the shortened instrument name.
- *
- * @return QString
- */
- QString AerialPhotoCamera::instrumentNameShort() const {
- return m_instrumentNameShort;
- }
-
-
- /**
- * This method returns the full spacecraft name.
- *
- * @return QString
- */
- QString AerialPhotoCamera::spacecraftNameLong() const {
- return m_spacecraftNameLong;
- }
-
-
- /**
- * This method returns the shortened spacecraft name.
- *
- * @return QString
- */
- QString AerialPhotoCamera::spacecraftNameShort() const {
- return m_spacecraftNameShort;
- }
-}
-
-
-/**
- * This is the function that is called in order to instantiate an
- * AerialPhotoCamera object.
- *
- * @param lab Cube labels
- *
- * @return Camera* AerialPhotoCamera
- * @internal
- */
-extern "C" Isis::Camera *AerialPhotoCameraPlugin(Isis::Cube &cube) {
- return new Isis::AerialPhotoCamera(cube);
-}
diff --git a/isis/src/local/objs/AerialPhotoCamera/AerialPhotoCamera.h b/isis/src/local/objs/AerialPhotoCamera/AerialPhotoCamera.h
deleted file mode 100644
index 04e727169ba99cb949a4ff3d7b80a9d11e211081..0000000000000000000000000000000000000000
--- a/isis/src/local/objs/AerialPhotoCamera/AerialPhotoCamera.h
+++ /dev/null
@@ -1,101 +0,0 @@
-#ifndef AerialPhotoCamera_h
-#define AerialPhotoCamera_h
-/**
- * @file
- * Unless noted otherwise, the portions of Isis written by the USGS are public
- * domain. See individual third-party library and package descriptions for
- * intellectual property information,user agreements, and related information.
- *
- * Although Isis has been used by the USGS, no warranty, expressed or implied,
- * is made by the USGS as to the accuracy and functioning of such software
- * and related material nor shall the fact of distribution constitute any such
- * warranty, and no responsibility is assumed by the USGS in connection
- * therewith.
- *
- * For additional information, launch
- * $ISISROOT/doc//documents/Disclaimers/Disclaimers.html in a browser or see
- * the Privacy & Disclaimers page on the Isis website,
- * http://isis.astrogeology.usgs.gov, and the USGS privacy and disclaimers on
- * http://www.usgs.gov/privacy.html.
- */
-
-#include "FramingCamera.h"
-
-#include
-
-namespace Isis {
- /**
- * @brief Aerial Camera Model
- *
- * This is the camera model for generic aerial photos.
- *
- * @ingroup AerialPhoto
- *
- * @author 2014-03-25 Jeff Anderson
- *
- * @internal
- * @history 2014-03-25 Jeff Anderson - Original Version
- * @history 2015-08-25 Ian Humphrey and Makayla Shepherd - Added new data members and methods
- * to get spacecraft and instrument names. Extended unit test to test
- * these methods.
-
- */
- class AerialPhotoCamera : public FramingCamera {
- public:
- AerialPhotoCamera(Cube &cube);
-
- ~AerialPhotoCamera() {};
-
- virtual std::pair ShutterOpenCloseTimes(double time,
- double exposureDuration);
-
- /**
- * CK frame ID -
- * Naif assigns frame ids. Since aerial photos aren't tied to NASA
- * missions we don't really have a frame id. We will us numbers that the
- * NAIF team allows as documented in their NAIF ID required reading
- * manual. This means that we can really can't create NAIF kernels using
- * spkwriter or ckwriter.
- *
- * @return @b int Return generic frame id
- */
- virtual int CkFrameId() const { return -2000001; }
-
- /**
- * CK Reference ID -
- *
- * @return @b int The appropriate instrument code for the "Camera-matrix" Kernel
- * Reference ID
- */
- virtual int CkReferenceId() const { return -2000000; }
-
- /**
- * SPK Target Body ID -
- *
- * @return @b int The appropriate instrument code for the Spacecraft
- * Kernel Target ID
- */
- virtual int SpkTargetId() const { return -2000; }
-
- /**
- * SPK Reference ID - J2000
- *
- * @return @b int The appropriate instrument code for the Spacecraft
- * Kernel Reference ID,
- */
- virtual int SpkReferenceId() const { return (1); }
-
- virtual QString instrumentNameLong() const;
- virtual QString instrumentNameShort() const;
- virtual QString spacecraftNameLong() const;
- virtual QString spacecraftNameShort() const;
-
- private:
- QString m_instrumentNameLong; //!< Full instrument name
- QString m_instrumentNameShort; //!< Shortened instrument name
- QString m_spacecraftNameLong; //!< Full spacecraft name
- QString m_spacecraftNameShort; //!< Shortened spacecraft name
-
- };
-};
-#endif
diff --git a/isis/src/local/objs/AerialPhotoCamera/AerialPhotoCamera.truth b/isis/src/local/objs/AerialPhotoCamera/AerialPhotoCamera.truth
deleted file mode 100644
index d5063c9346de2f9acd28c23df8a98094f0e5c02c..0000000000000000000000000000000000000000
--- a/isis/src/local/objs/AerialPhotoCamera/AerialPhotoCamera.truth
+++ /dev/null
@@ -1,38 +0,0 @@
-Unit Test for AerialPhotoCamera...
-FileName: eros_ap.lbl
-CK Frame: -2000001
-
-Kernel IDs:
-CK Frame ID = -2000001
-CK Reference ID = -2000000
-SPK Target ID = -2000
-SPK Reference ID = 1
-
-Spacecraft Name Long: Aircraft
-Spacecraft Name Short: Aircraft
-Instrument Name Long: Aerial Photo
-Instrument Name Short: Aerial
-
-Shutter open = -17538835.815374449
-Shutter close = -17538835.815374449
-Focal Length = 152.818000000
-
-For upper left corner ...
-DeltaSample = 0.000000000
-DeltaLine = 0.000000000
-
-For upper right corner ...
-DeltaSample = 0.000000000
-DeltaLine = 0.000000000
-
-For lower left corner ...
-DeltaSample = 0.000000000
-DeltaLine = 0.000000000
-
-For lower right corner ...
-DeltaSample = 0.000000000
-DeltaLine = 0.000000000
-
-For center pixel position ...
-Latitude OK
-Longitude OK
diff --git a/isis/src/local/objs/AerialPhotoCamera/Camera.plugin b/isis/src/local/objs/AerialPhotoCamera/Camera.plugin
deleted file mode 100644
index db75c41038792b0c3cdac47723dd0be70b390722..0000000000000000000000000000000000000000
--- a/isis/src/local/objs/AerialPhotoCamera/Camera.plugin
+++ /dev/null
@@ -1,6 +0,0 @@
-
-Group = Aircraft/AerialPhoto
- Library = AerialPhotoCamera
- Routine = AerialPhotoCameraPlugin
- Version = 1
-EndGroup
diff --git a/isis/src/local/objs/AerialPhotoCamera/Makefile b/isis/src/local/objs/AerialPhotoCamera/Makefile
deleted file mode 100644
index f122bc88227c5c7ebd108dea5d339d1d2e074d82..0000000000000000000000000000000000000000
--- a/isis/src/local/objs/AerialPhotoCamera/Makefile
+++ /dev/null
@@ -1,7 +0,0 @@
-ifeq ($(ISISROOT), $(BLANK))
-.SILENT:
-error:
- echo "Please set ISISROOT";
-else
- include $(ISISROOT)/make/isismake.objs
-endif
\ No newline at end of file
diff --git a/isis/src/local/objs/AerialPhotoCamera/data/eros_ap.History.IsisCube b/isis/src/local/objs/AerialPhotoCamera/data/eros_ap.History.IsisCube
deleted file mode 100644
index 24eb64addab29c24098d9eb7fa65c3abff66b6bb..0000000000000000000000000000000000000000
--- a/isis/src/local/objs/AerialPhotoCamera/data/eros_ap.History.IsisCube
+++ /dev/null
@@ -1,148 +0,0 @@
-Object = std2isis
- IsisVersion = "3.4.6.0 alpha | 2014-01-14"
- ProgramVersion = 2014-01-17
- ProgramPath = /work/projects/isis/latest/m01813/isis/bin
- ExecutionDateTime = 2014-03-28T17:02:46
- HostName = prog6
- UserName = janderson
- Description = "Imports a cube from PNG, JPEG, JP2, BMP or TIFF format"
-
- Group = UserParameters
- FROM = N10NAPPW06666039.tif
- TO = ap.cub
- MODE = AUTO
- SETNULLRANGE = NO
- SETHRSRANGE = NO
- SETLRSRANGE = NO
- End_Group
-End_Object
-
-Object = apinit
- IsisVersion = "3.4.6.0 alpha | 2014-01-14"
- ProgramVersion = 2013-11-15
- ProgramPath = /work/projects/isis/latest/m01813/isis/src/local/apps/a-
- pinit
- ExecutionDateTime = 2014-03-28T17:02:46
- HostName = prog6
- UserName = janderson
- Description = "Initialize aerial photo with interior and exterior
- orientation information."
-
- Group = UserParameters
- FROM = ap.cub
- DATETIME = 1999-06-12T12:05
- ALTITUDE = 6096
- CENTERLAT = 39.9363
- CENTERLON = 255.285823
- SHAPEMODEL = dtm.cub
- FOCALLENGTH = 152.818
- FIDUCIALX = "-106.0, -0.003, 105.999, -110.005, 109.999, -106.008,
- -0.003, 105.998"
- FIDUCIALY = "106.000, 109.999, 105.994, 0.002, 0.002, -105.999,
- -110.004, -105.999"
- FIDUCIALSAMPLE = "574, 2040, 3500, 513, 3562, 578, 2039, 3497"
- FIDUCIALLINE = "255, 194, 261, 1721, 1721, 3182, 3245, 3180"
- FIDUCIALTEMPLATE = None
- KCOEFS = "1.27485E-05, 3.73255E-09, -6.95721E-13, 2.3884E-17,
- 0.0"
- PCOEFS = "0, 0, 0, 0"
- XP = -0.004
- YP = 0
- XIPP = -0.002
- YIPP = 0.001
- ROLLNUMBER = Unknown
- FRAMENUMBER = Unknown
- CAMERASN = Unknown
- LENSESN = Unknown
- CALREPORT = Unknown
- End_Group
-End_Object
-
-Object = jigsaw
- IsisVersion = "3.4.6.0 alpha | 2014-01-14"
- ProgramVersion = 2014-02-13
- ProgramPath = /work/projects/isis/latest/m01813/isis/bin
- ExecutionDateTime = 2014-03-28T17:05:36
- HostName = prog6
- UserName = janderson
- Description = "Improves camera pointing and a whole lot more!"
-
- Group = UserParameters
- FROMLIST = ap.lis
- CNET = handMade.net
- ONET = o.net
- OBSERVATIONS = No
- RADIUS = No
- UPDATE = YES
- METHOD = SPARSE
- OUTLIER_REJECTION = No
- REJECTION_MULTIPLIER = 3.0
- ERRORPROPAGATION = No
- MODEL1 = NONE
- SIGMA0 = 1.0e-10
- MAXITS = 50
- CKDEGREE = 2
- CKSOLVEDEGREE = 2
- CAMSOLVE = ANGLES
- TWIST = Yes
- OVEREXISTING = No
- SPSOLVE = NONE
- BUNDLEOUT_TXT = yes
- OUTPUT_CSV = yes
- RESIDUALS_CSV = yes
- End_Group
-End_Object
-
-Object = jigsaw
- IsisVersion = "3.4.6.0 alpha | 2014-01-14"
- ProgramVersion = 2014-02-13
- ProgramPath = /work/projects/isis/latest/m01813/isis/bin
- ExecutionDateTime = 2014-03-28T17:09:51
- HostName = prog6
- UserName = janderson
- Description = "Improves camera pointing and a whole lot more!"
-
- Group = UserParameters
- FROMLIST = ap.lis
- CNET = handMade.net
- ONET = o.net
- OBSERVATIONS = No
- RADIUS = No
- UPDATE = YES
- METHOD = SPARSE
- OUTLIER_REJECTION = No
- REJECTION_MULTIPLIER = 3.0
- ERRORPROPAGATION = No
- MODEL1 = NONE
- SIGMA0 = 1.0e-10
- MAXITS = 50
- CKDEGREE = 2
- CKSOLVEDEGREE = 2
- CAMSOLVE = ANGLES
- TWIST = Yes
- OVEREXISTING = No
- SPKDEGREE = 2
- SPKSOLVEDEGREE = 2
- SPSOLVE = POSITION
- OVERHERMITE = No
- BUNDLEOUT_TXT = yes
- OUTPUT_CSV = yes
- RESIDUALS_CSV = yes
- End_Group
-End_Object
-
-Object = cubeatt
- IsisVersion = "3.4.6.5759 alpha | 2014-01-14"
- ProgramVersion = 2012-07-03
- ProgramPath = /usgs/pkgs/isis3beta2014-04-04/isis/bin
- ExecutionDateTime = 2014-04-04T16:23:43
- HostName = prog6
- UserName = kbecker
- Description = "Cube attribute editor"
-
- Group = UserParameters
- FROM = ap.cub
- TO = eros_ap.cub+detached
- PROPTABLES = true
- End_Group
-End_Object
diff --git a/isis/src/local/objs/AerialPhotoCamera/data/eros_ap.Table.BodyRotation b/isis/src/local/objs/AerialPhotoCamera/data/eros_ap.Table.BodyRotation
deleted file mode 100644
index b42486d37c477e49e27c150bd8d8b2b81dd64f61..0000000000000000000000000000000000000000
Binary files a/isis/src/local/objs/AerialPhotoCamera/data/eros_ap.Table.BodyRotation and /dev/null differ
diff --git a/isis/src/local/objs/AerialPhotoCamera/data/eros_ap.Table.InstrumentPointing b/isis/src/local/objs/AerialPhotoCamera/data/eros_ap.Table.InstrumentPointing
deleted file mode 100644
index 1d846dcee86bed3f78a4bf0d0afdbcb8a1aaab7b..0000000000000000000000000000000000000000
Binary files a/isis/src/local/objs/AerialPhotoCamera/data/eros_ap.Table.InstrumentPointing and /dev/null differ
diff --git a/isis/src/local/objs/AerialPhotoCamera/data/eros_ap.Table.InstrumentPosition b/isis/src/local/objs/AerialPhotoCamera/data/eros_ap.Table.InstrumentPosition
deleted file mode 100644
index a611ad81c6d90ba26ab68d2d40f87f8a95957ab9..0000000000000000000000000000000000000000
Binary files a/isis/src/local/objs/AerialPhotoCamera/data/eros_ap.Table.InstrumentPosition and /dev/null differ
diff --git a/isis/src/local/objs/AerialPhotoCamera/data/eros_ap.Table.SunPosition b/isis/src/local/objs/AerialPhotoCamera/data/eros_ap.Table.SunPosition
deleted file mode 100644
index 40f8df59d1f07d2c037511f0f6ed0f66671d994b..0000000000000000000000000000000000000000
--- a/isis/src/local/objs/AerialPhotoCamera/data/eros_ap.Table.SunPosition
+++ /dev/null
@@ -1 +0,0 @@
-{]؍evA%CejA_T&wAd*<gU@,a?Mp79evAUejA<8wAf)*
- EstimatedAltitude = 6096.0
- EstimatedCenterLatitude = 39.9363
- EstimatedCenterLongitude = 255.285823
- FocalLength = 152.818
- FiducialX = (-106.0, -0.003, 105.999, -110.005,
- 109.999, -106.008, -0.003,
- 105.998)
- FiducialY = (106.000, 109.999, 105.994, 0.002,
- 0.002, -105.999, -110.004,
- -105.999)
- FiducialSample = (574, 2040, 3500, 513, 3562, 578,
- 2039, 3497)
- FiducialLine = (255, 194, 261, 1721, 1721, 3182,
- 3245, 3180)
- RadialDistortionCoefficients = (1.27485E-05, 3.73255E-09,
- -6.95721E-13, 2.3884E-17, 0.0)
- DecenteringDistortionCoefficients = (0, 0, 0, 0)
- XCalibratedPrincipalPoint = -0.004
- YCalibratedPrincipalPoint = 0.0
- XIndicatedPrincipalPoint = -0.002
- YIndicatedPrincipalPoint = 0.001
- End_Group
-
- Group = Archive
- RollNumber = Unknown
- FrameNumber = Unknown
- CameraSerialNumber = Unknown
- LenseSerialNumber = Unknown
- CalibrationReport = Unknown
- End_Group
-
- Group = BandBin
- Name = Gray
- End_Group
-
- Group = Kernels
- NaifFrameCode = -2000001
- LeapSecond = $base/kernels/lsk/naif0010.tls
- TargetAttitudeShape = $base/kernels/pck/pck00009.tpc
- TargetPosition = (Table, $base/kernels/spk/de405.bsp)
- InstrumentPointing = Table
- Instrument = Null
- SpacecraftClock = Null
- InstrumentPosition = Table
- InstrumentAddendum = Null
-# ShapeModel = dtm.cub
- ShapeModel = Null
- InstrumentPositionQuality = Predict
- InstrumentPointingQuality = Predict
- CameraVersion = 1
- End_Group
-End_Object
-
-Object = Label
- Bytes = 65536
-End_Object
-
-Object = Table
- Name = BodyRotation
- StartByte = 1
- Bytes = 128
- Records = 2
- ByteOrder = Lsb
- TimeDependentFrames = (10013, 1)
- CkTableStartTime = -17538836.815374
- CkTableEndTime = -17538834.815374
- CkTableOriginalSize = 2
- Description = "Created by apinit"
- Kernels = ($base/kernels/spk/de405.bsp,
- $base/kernels/pck/pck00009.tpc)
- SolarLongitude = -9999
- ^Table = data/eros_ap.Table.BodyRotation
-
- Group = Field
- Name = J2000Q0
- Type = Double
- Size = 1
- End_Group
-
- Group = Field
- Name = J2000Q1
- Type = Double
- Size = 1
- End_Group
-
- Group = Field
- Name = J2000Q2
- Type = Double
- Size = 1
- End_Group
-
- Group = Field
- Name = J2000Q3
- Type = Double
- Size = 1
- End_Group
-
- Group = Field
- Name = AV1
- Type = Double
- Size = 1
- End_Group
-
- Group = Field
- Name = AV2
- Type = Double
- Size = 1
- End_Group
-
- Group = Field
- Name = AV3
- Type = Double
- Size = 1
- End_Group
-
- Group = Field
- Name = ET
- Type = Double
- Size = 1
- End_Group
-End_Object
-
-Object = Table
- Name = SunPosition
- StartByte = 1
- Bytes = 112
- Records = 2
- ByteOrder = Lsb
- CacheType = Linear
- SpkTableStartTime = -17538836.815374
- SpkTableEndTime = -17538834.815374
- SpkTableOriginalSize = 2.0
- Description = "Created by apinit"
- Kernels = Null
- ^Table = data/eros_ap.Table.SunPosition
-
- Group = Field
- Name = J2000X
- Type = Double
- Size = 1
- End_Group
-
- Group = Field
- Name = J2000Y
- Type = Double
- Size = 1
- End_Group
-
- Group = Field
- Name = J2000Z
- Type = Double
- Size = 1
- End_Group
-
- Group = Field
- Name = J2000XV
- Type = Double
- Size = 1
- End_Group
-
- Group = Field
- Name = J2000YV
- Type = Double
- Size = 1
- End_Group
-
- Group = Field
- Name = J2000ZV
- Type = Double
- Size = 1
- End_Group
-
- Group = Field
- Name = ET
- Type = Double
- Size = 1
- End_Group
-End_Object
-
-# Jigged = 2014-03-28T17:09:51
-Object = Table
- Name = InstrumentPosition
- StartByte = 1
- Bytes = 96
- Records = 4
- ByteOrder = Lsb
- CacheType = PolyFunction
- ^Table = data/eros_ap.Table.InstrumentPosition
-
- Group = Field
- Name = J2000SVX
- Type = Double
- Size = 1
- End_Group
-
- Group = Field
- Name = J2000SVY
- Type = Double
- Size = 1
- End_Group
-
- Group = Field
- Name = J2000SVZ
- Type = Double
- Size = 1
- End_Group
-End_Object
-
-# Jigged = 2014-03-28T17:09:51
-Object = Table
- Name = InstrumentPointing
- StartByte = 1
- Bytes = 96
- Records = 4
- ByteOrder = Lsb
- TimeDependentFrames = (-2000001, 1)
- ^Table = data/eros_ap.Table.InstrumentPointing
-
- Group = Field
- Name = J2000Ang1
- Type = Double
- Size = 1
- End_Group
-
- Group = Field
- Name = J2000Ang2
- Type = Double
- Size = 1
- End_Group
-
- Group = Field
- Name = J2000Ang3
- Type = Double
- Size = 1
- End_Group
-End_Object
-
-Object = History
- Name = IsisCube
- StartByte = 1
- Bytes = 4784
- ^History = data/eros_ap.History.IsisCube
-End_Object
-
-Object = NaifKeywords
- BODY_FRAME_CODE = 10013
- BODY399_RADII = (6378.14, 6378.14, 6356.75)
-End_Object
-End
diff --git a/isis/src/local/objs/AerialPhotoCamera/unitTest.cpp b/isis/src/local/objs/AerialPhotoCamera/unitTest.cpp
deleted file mode 100644
index 7f5a262a9ab51a9b00400e20bc707d7a1333d884..0000000000000000000000000000000000000000
--- a/isis/src/local/objs/AerialPhotoCamera/unitTest.cpp
+++ /dev/null
@@ -1,141 +0,0 @@
-/**
- * @file
- *
- * Unless noted otherwise, the portions of Isis written by the USGS are public
- * domain. See individual third-party library and package descriptions for
- * intellectual property information,user agreements, and related information.
- *
- * Although Isis has been used by the USGS, no warranty, expressed or implied,
- * is made by the USGS as to the accuracy and functioning of such software
- * and related material nor shall the fact of distribution constitute any such
- * warranty, and no responsibility is assumed by the USGS in connection
- * therewith.
- *
- * For additional information, launch
- * $ISISROOT/doc//documents/Disclaimers/Disclaimers.html in a browser or see
- * the Privacy & Disclaimers page on the Isis website,
- * http://isis.astrogeology.usgs.gov, and the USGS privacy and disclaimers on
- * http://www.usgs.gov/privacy.html.
- */
-#include
-#include
-
-#include "AerialPhotoCamera.h"
-#include "Camera.h"
-#include "CameraFactory.h"
-#include "FileName.h"
-#include "IException.h"
-#include "iTime.h"
-#include "Preference.h"
-#include "Pvl.h"
-#include "PvlGroup.h"
-
-using namespace std;
-using namespace Isis;
-
-void TestLineSamp(Camera *cam, double samp, double line);
-
-int main(void) {
- Preference::Preferences(true);
-
- cout << "Unit Test for AerialPhotoCamera..." << endl;
- try {
- // These should be lat/lon at center of image. To obtain these numbers for a new cube/camera,
- // set both the known lat and known lon to zero and copy the unit test output "Latitude off by: "
- // and "Longitude off by: " values directly into these variables.
- double knownLat = 39.9435108139423818;
- double knownLon = 255.2778747310457561;
-
- Cube c("data/eros_ap.lbl", "r");
- AerialPhotoCamera *cam = (AerialPhotoCamera *) CameraFactory::Create(c);
- cout << "FileName: " << FileName(c.fileName()).name() << endl;
- cout << "CK Frame: " << cam->instrumentRotation()->Frame() << endl << endl;
- cout.setf(std::ios::fixed);
- cout << setprecision(9);
-
- // Test kernel IDs
- cout << "Kernel IDs: " << endl;
- cout << "CK Frame ID = " << cam->CkFrameId() << endl;
- cout << "CK Reference ID = " << cam->CkReferenceId() << endl;
- cout << "SPK Target ID = " << cam->SpkTargetId() << endl;
- cout << "SPK Reference ID = " << cam->SpkReferenceId() << endl << endl;
-
- // Test name methods
- cout << "Spacecraft Name Long: " << cam->spacecraftNameLong() << endl;
- cout << "Spacecraft Name Short: " << cam->spacecraftNameShort() << endl;
- cout << "Instrument Name Long: " << cam->instrumentNameLong() << endl;
- cout << "Instrument Name Short: " << cam->instrumentNameShort() << endl << endl;
-
- // Test Shutter Open/Close
- const PvlGroup &inst = c.label()->findGroup("Instrument", Pvl::Traverse);
- double exposureDuration = 0.0;
- QString stime = inst["StartTime"];
- double et; // StartTime keyword is the center exposure time
- str2et_c(stime.toLatin1().data(), &et);
- pair shuttertimes = cam->ShutterOpenCloseTimes(et, exposureDuration);
- cout << "Shutter open = " << shuttertimes.first.Et() << endl;
- cout << "Shutter close = " << shuttertimes.second.Et() << endl;
- cout << "Focal Length = " << cam->FocalLength() << endl << endl;
-
- // Test all four corners to make sure the conversions are right
- cout << "For upper left corner ..." << endl;
- TestLineSamp(cam, 1.0, 1.0);
-
- cout << "For upper right corner ..." << endl;
- TestLineSamp(cam, cam->Samples(), 1.0);
-
- cout << "For lower left corner ..." << endl;
- TestLineSamp(cam, 1.0, cam->Lines());
-
- cout << "For lower right corner ..." << endl;
- TestLineSamp(cam, cam->Samples(), cam->Lines());
-
- double samp = cam->Samples() / 2;
- double line = cam->Lines() / 2;
- cout << "For center pixel position ..." << endl;
-
- if(!cam->SetImage(samp, line)) {
- cout << "ERROR" << endl;
- return 0;
- }
-
- if(abs(cam->UniversalLatitude() - knownLat) < 1E-10) {
- cout << "Latitude OK" << endl;
- }
- else {
- cout << setprecision(16) << "Latitude off by: " << cam->UniversalLatitude() - knownLat << endl;
- }
-
- if(abs(cam->UniversalLongitude() - knownLon) < 1E-10) {
- cout << "Longitude OK" << endl;
- }
- else {
- cout << setprecision(16) << "Longitude off by: " << cam->UniversalLongitude() - knownLon << endl;
- }
- }
- catch(IException &e) {
- e.print();
- }
-}
-
-void TestLineSamp(Camera *cam, double samp, double line) {
- bool success = cam->SetImage(samp, line);
-
- if(success) {
- success = cam->SetUniversalGround(cam->UniversalLatitude(), cam->UniversalLongitude());
- }
-
- if(success) {
- double deltaSamp = samp - cam->Sample();
- double deltaLine = line - cam->Line();
- if(fabs(deltaSamp) < 0.001) deltaSamp = 0;
- if(fabs(deltaLine) < 0.001) deltaLine = 0;
- cout << "DeltaSample = " << deltaSamp << endl;
- cout << "DeltaLine = " << deltaLine << endl << endl;
- }
- else {
- cout << "DeltaSample = ERROR" << endl;
- cout << "DeltaLine = ERROR" << endl << endl;
- }
-}
-
diff --git a/isis/src/local/objs/Makefile b/isis/src/local/objs/Makefile
deleted file mode 100644
index 59557620183f7dd7697fa322e68819e8bad1884a..0000000000000000000000000000000000000000
--- a/isis/src/local/objs/Makefile
+++ /dev/null
@@ -1 +0,0 @@
-include $(ISISROOT)/make/isismake.objstree