From b422964fbee785f6c337b2a07abab3963c31a7b3 Mon Sep 17 00:00:00 2001
From: dcookastro <34168267+dcookastro@users.noreply.github.com>
Date: Mon, 20 May 2019 17:18:03 -0700
Subject: [PATCH] Lro lidar infrastructure updated with improved documentation
 and exclusions added to jigsaw (#3297)

* Updated the cmake version to 3.10

* Adding configurations for gtest

* Tweaking things for gtest

* Got gtest working and made a small example test

* Updated the cmake version to be 3.10 or greater

* Added test file discovery support and seperated the main into another file

* Added more tests for FileName

* Updated with the new testing guidelines and added new tests.

* Added gmock

* PixelTest (#536)

* initial Pixel test

* Add more test cases for Pixel

* testing parameterization in Pixel test

* testing function parameterization

* parameterize static vs object methods

* basic PixelTests implementation

* clean up and more static tests

* update PixelTests with float/dbl expects

* Refactored stats to a functions

* Modified to have cubeit remove mosaic pixel tracking info from labels. Fixes #5533

* Update cubeit.xml

Fixed a typo

* Fixes conda channels in Jenkinsfile & adds a MacOS node (#633)

* Merged dev and cleaned up header conflicts

* Update for #619.

* Fix libtiff dependency (#636) (#644)

* Upgrade libtiff to 4.0.10 (#636)

* Switch libtiff to 4.0.9 or higher to remove geotiff conflict

* Moved ISIS3 conda-build recipe from ISIS3_deps repository (#650)

* Fixed warning in Pixel unit tests

* Removing build numbers from external libraries (#660)

* Moved ISIS3 conda-build recipe from ISIS3_deps repository

* Un-pinned non-astro build numbers

* Removing build numbers from external libraries in the environment and meta.yeml files

* Final merging

* Added pixel type attribute to the output image of program shadow. Fixes #5187 (#659)

* Removed bolding of some text to decrease distraction.

* Fixed some typos.

* Reworded documentation.

* Added section for Environment and PreferemcesSetup in the Getting Started Section. (#663)

* Updated .gitmodules to use https rather than ssh (#673)

* Added build type release to conda recipe (#676)

* Updates README with Discourse (#690)

* Updates README with Discourse

* Update README.md

* Update README.md

* Added fix to Spice Server to accept clients with version nums >=3.5.*.* (#780)

* Fixed error when trying to export a compressed image using pds2hideal. Fixes #5525. (#2059)

* Added capability to export a compressed image with tables missing RECORD_BYTES keyword. Added test for compressed image.

* Changed names of test output cubes.

* Adding explanatory comments to the meta.yaml file (#2358)

* Adding explanatory comments to the recipes/meta.yaml

* Replacing accidentally erased line

* Added option to sort the output for consistent order in testing and added a test case

* Cleaned up commented out lines in LidarData.h and .cpp

* Added additional documentation for LidarData, LidarControlPoint, and lrolola2isis

* Multisegment DSK support for Bullet engine (#2791)

* Merged multisegment DSKs for Bullet

* basic tests

* removed original tests

* Minor updates to download sizes and some text. (#2790)

* Removed debug lines from LidarData.cpp and old comments from the lrolola2isis twoImage test

* Added an additional comment about the Test format to LidarData.cpp

* Phocube will export RA and declination planes even if the point is not on the planet. Fixes #4446 (#657)

* Made it so that RA and Dec are added last.

* Updated code to be up to standards.

* Added RA and dec test.

* Updated history comment.

* Renamed test.

* Fixed typo in documentation

* Refactored code so that RA and dec are placed in the correct bands instead of moving them to the last two bands.

* Updated documentation, test now checks cube label.

* Fixed SummingMode keyword being set in tgocassis2isis  (#2847)

* Adding Expanded keyword to cassis label and modifying SummingMode keyword

* Updating the window count value

* Adding capacity to handle imports without Expanded tag

* Setting tgocassismos to have tracking turned-on (#2856)

* Adding parameter "tracking=true" to tgocassismos call to automos

* Adding documentation

* Fixing indentation in documentation

* Updates to tgocassisrdrgen and ProcessExportPds4 to add content to exported CaSSIS Label. (#2858)

* Add 32-bit ISIS Special Pixel Constants to ProcessExportPds4

* Add ability to set title and version id in exported PDS4 produce in tgocassisrdrgen and ProcessExportPds4 API

* Fix bug that occurs when exporting mosaics with Archive groups and fixed min/max lat/lon to east/west bounding box positive east flip bug

* Added docs.

* Update schema to most recent versions and comment-out schema that isn't used (temporarily) in tgocassisrdrgen.

* Adds Issue Templates to Issues (#664)

* Adds issue templates

* Verbage update

* Updates issue template for questions (#3131)

Removed a newline in the header that I believe was causing the automatic template detection to fail.

* Added gtest for ID and split TestUtilities into a cpp and h file to fix duplicate symbol error when building. (#2824)

Code reviewed and tested

* tgocassisrdrgen exported label re-order.  (#3135)

* Add 32-bit ISIS Special Pixel Constants to ProcessExportPds4

* Add ability to set title and version id in exported PDS4 produce in tgocassisrdrgen and ProcessExportPds4 API

* Fix bug that occurs when exporting mosaics with Archive groups and fixed min/max lat/lon to east/west bounding box positive east flip bug

* Added docs.

* Update schema to most recent versions and comment-out schema that isn't used (temporarily) in tgocassisrdrgen.

* Added reorder function to ProcessExportPds4 to reorder xml files generated in the wrong order for PDS4 and added cassis-specific schema

* Update label generated by tgocassisrdrgen from additional feedback (#3137)

* Add 32-bit ISIS Special Pixel Constants to ProcessExportPds4

* Add ability to set title and version id in exported PDS4 produce in tgocassisrdrgen and ProcessExportPds4 API

* Fix bug that occurs when exporting mosaics with Archive groups and fixed min/max lat/lon to east/west bounding box positive east flip bug

* Added docs.

* Update schema to most recent versions and comment-out schema that isn't used (temporarily) in tgocassisrdrgen.

* Added reorder function to ProcessExportPds4 to reorder xml files generated in the wrong order for PDS4 and added cassis-specific schema

* Add StopTime to tgocassismos's Mosaic PVL group, as it is required for PDS4 export. Also, fix time formatting and east_azimuth units

* Remove comment

* Changed global variable proj back to projection to avoid build ambiguity errors with the std::proj

* Added option to enter a list of Lidar input files

* Removed deprecated code requiring target body radii to convert point coordinate sigmas from distances to angles in lrololo2isis

* Updated documentation in SpiceRotation, BundleAdjust, and lrolola2isis

* Added multipleInputs test to the lrolola2isis test suite

* Added exclusion to jigsaw to prevent running Lidar without solving for spacecraft position

* Changed history date to today
---
 .../base/objs/SpiceRotation/SpiceRotation.cpp |  4 ++--
 .../base/objs/SpiceRotation/SpiceRotation.h   |  2 ++
 isis/src/control/apps/jigsaw/jigsaw.xml       | 15 ++++++++++++--
 .../objs/BundleAdjust/BundleAdjust.cpp        |  2 +-
 .../lro/apps/lrolola2isis/lrolola2isis.xml    |  3 ++-
 isis/src/lro/apps/lrolola2isis/main.cpp       |  2 +-
 .../lrolola2isis/tsts/multipleInputs/Makefile | 20 +++++++++++++++++++
 7 files changed, 41 insertions(+), 7 deletions(-)
 create mode 100644 isis/src/lro/apps/lrolola2isis/tsts/multipleInputs/Makefile

diff --git a/isis/src/base/objs/SpiceRotation/SpiceRotation.cpp b/isis/src/base/objs/SpiceRotation/SpiceRotation.cpp
index 218327ec62..86943e795d 100644
--- a/isis/src/base/objs/SpiceRotation/SpiceRotation.cpp
+++ b/isis/src/base/objs/SpiceRotation/SpiceRotation.cpp
@@ -2886,9 +2886,9 @@ namespace Isis {
 
 
   /**
-   * Return the full rotation TJ as a matrix
+   * Return the full rotation TJ as a matrix in row major order
    *
-   * @return @b vector<double> Returned matrix.
+   * @return @b vector<double> Returned matrix (as an array of rows).
    */
   std::vector<double> SpiceRotation::Matrix() {
     NaifStatus::CheckErrors();
diff --git a/isis/src/base/objs/SpiceRotation/SpiceRotation.h b/isis/src/base/objs/SpiceRotation/SpiceRotation.h
index d700aada49..671281bfff 100644
--- a/isis/src/base/objs/SpiceRotation/SpiceRotation.h
+++ b/isis/src/base/objs/SpiceRotation/SpiceRotation.h
@@ -217,6 +217,8 @@ namespace Isis {
    *                           The current example is the comet 67P/CHURYUMOV-GERASIMENKO
    *                           imaged by Rosetta. Some future comet/astroid missions are expected
    *                           to use a CK defined body fixed reference frame. Fixes #5408.
+   *  @history 2019-03-20 Debbie A. Cook - Added documentation to the Matrix() method.
+   *                           References #5343.
    *
    *  @todo Downsize using Hermite cubic spline and allow Nadir tables to be downsized again.
    *  @todo Consider making this a base class with child classes based on frame type or
diff --git a/isis/src/control/apps/jigsaw/jigsaw.xml b/isis/src/control/apps/jigsaw/jigsaw.xml
index 6d43034f22..d91aca3abf 100644
--- a/isis/src/control/apps/jigsaw/jigsaw.xml
+++ b/isis/src/control/apps/jigsaw/jigsaw.xml
@@ -279,6 +279,13 @@
     <change name="Ken Edmundson" date="2018-06-22">
       Added output of lidar adjusted csv file and output of adjusted lidar data file.
     </change>
+    <change name="Debbie A. Cook" date="2019-05-20">
+      Added exclusions to SPSOLVE NONE option for LIDARDATA and
+      OLIDARDATA to prevent any attempt to run with lidar points and not 
+      solve for spacecraft position.  The lidar solution includes a constraint  
+      on the range, which requires spacecraft position to be part of
+      the bundle adjustment.  References #3053.
+    </change>
   </history>
 
   <groups>
@@ -355,11 +362,13 @@
         <internalDefault>none</internalDefault>
         <fileMode>input</fileMode>
         <brief>
-          Input Lidar Point File
+          Input Lidar Point File - requires SPSOLVE to be turned on
         </brief>
         <description>
         This file is a <def>lidar point data</def> generated from <b>lrolola2isis.cpp</b>.
         It contains <def>lidar control point</def>s and associated measures for simultaneous images.
+        If <def>lidar point data</def> are used, SPSOLVE must be turned on (anything besides NONE)
+        
         </description>
         <exclusions>
         </exclusions>
@@ -373,7 +382,7 @@
         <internalDefault>none</internalDefault>
         <fileMode>output</fileMode>
         <brief>
-          Output lidar data file
+          Output lidar data file - requires SPSOLVE to be turned on
         </brief>
         <description>
           This output file contains the adjusted <def>lidar data</def> with
@@ -1028,6 +1037,8 @@
               No spacecraft position parameters will be adjusted.
             </description>
             <exclusions>
+              <item>LIDARDATA</item>
+              <item>OLIDARDATA</item>
               <item>SPKDEGREE</item>
               <item>SPKSOLVEDEGREE</item>
               <item>POSITIONSEGMENTS</item>
diff --git a/isis/src/control/objs/BundleAdjust/BundleAdjust.cpp b/isis/src/control/objs/BundleAdjust/BundleAdjust.cpp
index c748aa8229..aa5437fcf2 100644
--- a/isis/src/control/objs/BundleAdjust/BundleAdjust.cpp
+++ b/isis/src/control/objs/BundleAdjust/BundleAdjust.cpp
@@ -1,4 +1,4 @@
- #include "BundleAdjust.h"
+#include "BundleAdjust.h"
 
 // std lib
 #include <iomanip>
diff --git a/isis/src/lro/apps/lrolola2isis/lrolola2isis.xml b/isis/src/lro/apps/lrolola2isis/lrolola2isis.xml
index 80bb8b95a4..3797d4a3c7 100644
--- a/isis/src/lro/apps/lrolola2isis/lrolola2isis.xml
+++ b/isis/src/lro/apps/lrolola2isis/lrolola2isis.xml
@@ -49,7 +49,8 @@
       </change>
     <change name="Debbie A Cook" date="2019-03-11">
       Added new input parameter FROMLIST to allow entering multiple input
-      Lidar CSV files.  All input points are written out into a single Lidar data file.
+      Lidar CSV files.  All input points are written out into a single Lidar data 
+      file.  References #5343.
       </change>
   </history>
 
diff --git a/isis/src/lro/apps/lrolola2isis/main.cpp b/isis/src/lro/apps/lrolola2isis/main.cpp
index a8b88ee828..4f6063c76d 100644
--- a/isis/src/lro/apps/lrolola2isis/main.cpp
+++ b/isis/src/lro/apps/lrolola2isis/main.cpp
@@ -119,7 +119,7 @@ void IsisMain() {
       lidarPoint->setRange(range);
       lidarPoint->setSigmaRange(rangeSigma);
 
-      // Set the point coordinates and their sigmas and add to the Lidar Control Point file
+      // Set the point coordinates and their sigmas and add to the Lidar Control Point 
       SurfacePoint spoint(lat, lon, radius);
       spoint.SetSphericalSigmasDistance(
                                         Distance(latSigma, Distance::Units::Meters),
diff --git a/isis/src/lro/apps/lrolola2isis/tsts/multipleInputs/Makefile b/isis/src/lro/apps/lrolola2isis/tsts/multipleInputs/Makefile
new file mode 100644
index 0000000000..587e6ddf14
--- /dev/null
+++ b/isis/src/lro/apps/lrolola2isis/tsts/multipleInputs/Makefile
@@ -0,0 +1,20 @@
+APPNAME = lrolola2isis
+# This test exercises the ingestion of Lola data from the LRO mission
+# with multiple input files. The output is sorted by id to have consistent 
+# output for comparison with the truth data.  Normal behavior fills the 
+# file from a hash so the order varies.
+#
+# 2019-03-13 Debbie A. Cook - original test
+
+include $(ISISROOT)/make/isismake.tsts
+
+commands:
+#	ls $(INPUT)/*.cub > $(OUTPUT)/multipleInputs.lis
+	cp $(INPUT)/*.lis $(OUTPUT)
+	$(APPNAME) fromlist=$(OUTPUT)/shortCsv.lis cubes=$(OUTPUT)/shortMultipleInput.lis \
+	  to=$(OUTPUT)/LidarTest.json outputtype=test threshold=10  \
+	  point_range_sigma=10 point_latitude_sigma=10 point_longitude_sigma=10 \
+	  point_radius_sigma=10 pointid=Lidar????  \
+	  > /dev/null;
+	rm $(OUTPUT)/*.lis
+	mv $(OUTPUT)/LidarTest.json $(OUTPUT)/LidarTest.txt
-- 
GitLab