[ossim] 02/06: New upstream version 2.3.0
Bas Couwenberg
sebastic at debian.org
Mon Mar 5 19:17:07 UTC 2018
This is an automated email from the git hooks/post-receive script.
sebastic pushed a commit to branch experimental
in repository ossim.
commit 1741c125866ebdc167c1974230a7f6af40b9e611
Author: Bas Couwenberg <sebastic at xs4all.nl>
Date: Mon Mar 5 19:44:26 2018 +0100
New upstream version 2.3.0
---
apps/ossim-cli/ossim-cli.cpp | 10 +-
apps/ossim-rpcgen/ossim-rpcgen.cpp | 6 -
cmake/CMakeModules/FindOpenCV.cmake | 130 +++++++++++--------
include/ossim/init/JsonConfig.h | 7 +-
include/ossim/point_cloud/ossimPointBlock.h | 6 +-
.../point_cloud/ossimPointCloudImageHandler.h | 62 ++++-----
.../point_cloud/ossimPointCloudUtilityFilter.h | 32 +----
include/ossim/projection/ossimRpcModel.h | 2 +-
include/ossim/projection/ossimRpcSolver.h | 13 +-
include/ossim/support_data/ossimSrcRecord.h | 5 +-
include/ossim/util/ossimChipperUtil.h | 3 +-
include/ossim/util/ossimImageUtil.h | 2 +-
include/ossim/util/ossimInfo.h | 10 ++
...ossimPointCloudUtil.h => ossimPointCloudTool.h} | 39 ++----
src/base/ossimRectanglePartitioner.cpp | 2 +-
src/imaging/ossimFilterResampler.cpp | 9 +-
src/imaging/ossimImageHandler.cpp | 29 +++--
src/imaging/ossimImageSourceFilter.cpp | 2 +-
src/imaging/ossimJpegTileSource.cpp | 2 +-
src/imaging/ossimMetadataFileWriter.cpp | 2 +-
src/imaging/ossimResampler.cpp | 56 ++++----
src/imaging/ossimSingleImageChain.cpp | 21 ++-
src/imaging/ossimTiffOverviewBuilder.cpp | 2 +-
src/imaging/ossimVertexExtractor.cpp | 2 +-
src/init/JsonConfig.cpp | 35 +++--
src/point_cloud/ossimPointCloudImageHandler.cpp | 36 +++---
src/point_cloud/ossimPointCloudUtilityFilter.cpp | 18 +--
src/projection/ossimRpcModel.cpp | 6 +-
src/projection/ossimRpcSolver.cpp | 39 +++---
src/reg/Image.cpp | 3 +-
src/reg/TiePoint.cpp | 18 ++-
src/support_data/ossimERS.cpp | 2 +-
src/support_data/ossimSrcRecord.cpp | 27 +++-
src/util/ossimChipperUtil.cpp | 144 ++++++++-------------
src/util/ossimInfo.cpp | 49 ++++++-
...mPointCloudUtil.cpp => ossimPointCloudTool.cpp} | 42 +++---
src/util/ossimToolFactory.cpp | 4 +
src/util/ossimViewshedTool.cpp | 6 +-
38 files changed, 479 insertions(+), 404 deletions(-)
diff --git a/apps/ossim-cli/ossim-cli.cpp b/apps/ossim-cli/ossim-cli.cpp
index 527409f..1b3a7e0 100755
--- a/apps/ossim-cli/ossim-cli.cpp
+++ b/apps/ossim-cli/ossim-cli.cpp
@@ -16,10 +16,8 @@ using namespace std;
#include <ossim/base/ossimStdOutProgress.h>
#include <ossim/base/ossimTimer.h>
#include <ossim/base/ossimKeywordlist.h>
-#include <ossim/base/ossimString.h>
#include <ossim/util/ossimToolRegistry.h>
#include <ossim/base/ossimException.h>
-#include <ossim/base/ossimNotify.h>
#define CINFO ossimNotify(ossimNotifyLevel_INFO)
#define CWARN ossimNotify(ossimNotifyLevel_WARN)
@@ -160,15 +158,11 @@ int main(int argc, char *argv[])
} while (false);
}
- catch (const ossimException& e)
+ catch (const exception& e)
{
- ossimNotify(ossimNotifyLevel_FATAL)<<e.what()<<endl;
+ CFATAL<<e.what()<<endl;
exit(1);
}
- catch( ... )
- {
- CFATAL << "Caught unknown exception!" << endl;
- }
if (status_ok)
exit(0);
diff --git a/apps/ossim-rpcgen/ossim-rpcgen.cpp b/apps/ossim-rpcgen/ossim-rpcgen.cpp
index b9832da..16f7282 100644
--- a/apps/ossim-rpcgen/ossim-rpcgen.cpp
+++ b/apps/ossim-rpcgen/ossim-rpcgen.cpp
@@ -2,16 +2,12 @@
#include <ossim/base/ossimNotifyContext.h>
#include <ossim/base/ossimArgumentParser.h>
#include <ossim/base/ossimApplicationUsage.h>
-#include <ossim/base/ossimTrace.h>
-#include <ossim/base/ossimKeywordNames.h>
#include <ossim/base/ossimRefPtr.h>
#include <ossim/imaging/ossimImageGeometry.h>
#include <ossim/imaging/ossimImageHandler.h>
#include <ossim/imaging/ossimImageHandlerRegistry.h>
#include <ossim/projection/ossimProjectionFactoryRegistry.h>
-#include <ossim/projection/ossimProjection.h>
#include <ossim/projection/ossimRpcSolver.h>
-#include <sstream>
#include <ossim/base/ossimXmlDocument.h>
using namespace std;
@@ -182,8 +178,6 @@ int main(int argc, char* argv[])
ossimNotify(ossimNotifyLevel_INFO) << "\nSolving for RPC coefficients..." << std::endl;
ossimRefPtr<ossimRpcSolver> solver = new ossimRpcSolver(true, false);
bool converged = solver->solve(imageRect, geom.get(), error);
- double meanResidual = solver->getRmsError();
- double maxResidual = solver->getMaxError();
rpc = solver->getRpcModel();
}
diff --git a/cmake/CMakeModules/FindOpenCV.cmake b/cmake/CMakeModules/FindOpenCV.cmake
index c4b388e..f526ecc 100644
--- a/cmake/CMakeModules/FindOpenCV.cmake
+++ b/cmake/CMakeModules/FindOpenCV.cmake
@@ -34,14 +34,13 @@ find_path(OPENCV_INCLUDE_DIR opencv/cv.hpp PATHS ${OPENCV_HOME}/include)
macro(FIND_OPENCV_LIBRARY MYLIBRARY MYLIBRARYNAME)
find_library( ${MYLIBRARY}
NAMES "${MYLIBRARYNAME}${OPENCV_RELEASE_POSTFIX}"
- PATHS ${OPENCV_HOME}/lib)
+ PATHS ${OPENCV_HOME}/lib ${OPENCV_HOME}/share/OpenCV/3rdparty/lib )
endmacro(FIND_OPENCV_LIBRARY MYLIBRARY MYLIBRARYNAME)
# Required
FIND_OPENCV_LIBRARY(OPENCV_CORE_LIBRARY opencv_core)
FIND_OPENCV_LIBRARY(OPENCV_FEATURES2D_LIBRARY opencv_features2d)
FIND_OPENCV_LIBRARY(OPENCV_FLANN_LIBRARY opencv_flann)
-FIND_OPENCV_LIBRARY(OPENCV_HIGHGUI_LIBRARY opencv_highgui)
FIND_OPENCV_LIBRARY(OPENCV_IMGPROC_LIBRARY opencv_imgproc)
FIND_OPENCV_LIBRARY(OPENCV_ML_LIBRARY opencv_ml)
FIND_OPENCV_LIBRARY(OPENCV_OBJDETECT_LIBRARY opencv_objdetect)
@@ -49,61 +48,90 @@ FIND_OPENCV_LIBRARY(OPENCV_XFEATURES2D_LIBRARY opencv_xfeatures2d)
FIND_OPENCV_LIBRARY(OPENCV_PHOTO_LIBRARY opencv_photo)
FIND_OPENCV_LIBRARY(OPENCV_VIDEO_LIBRARY opencv_video)
-# Optional
-FIND_OPENCV_LIBRARY(OPENCV_IMGCODECS_LIBRARY opencv_imgcodecs)
-FIND_OPENCV_LIBRARY(OPENCV_CUDAARITHM_LIBRARY opencv_cudaarithm)
-FIND_OPENCV_LIBRARY(OPENCV_CUDAIMGPROC_LIBRARY opencv_cudaimgproc)
-FIND_OPENCV_LIBRARY(OPENCV_CUDEV_LIBRARY opencv_cudev)
-
-set(OPENCV_LIBRARIES ${OPENCV_OBJDETECT_LIBRARY}
- ${OPENCV_CORE_LIBRARY}
- ${OPENCV_FEATURES2D_LIBRARY}
- ${OPENCV_XFEATURES2D_LIBRARY}
- ${OPENCV_FLANN_LIBRARY}
- ${OPENCV_HIGHGUI_LIBRARY}
- ${OPENCV_IMGPROC_LIBRARY}
- ${OPENCV_ML_LIBRARY}
- ${OPENCV_PHOTO_LIBRARY}
- ${OPENCV_VIDEO_LIBRARY})
+set(OPENCV_LIBRARIES ${OPENCV_OBJDETECT_LIBRARY}
+ ${OPENCV_VIDEO_LIBRARY}
+ ${OPENCV_PHOTO_LIBRARY}
+ ${OPENCV_ML_LIBRARY}
+ ${OPENCV_IMGPROC_LIBRARY}
+ ${OPENCV_FLANN_LIBRARY}
+ ${OPENCV_FEATURES2D_LIBRARY}
+ ${OPENCV_XFEATURES2D_LIBRARY}
+ ${OPENCV_CORE_LIBRARY}
+ )
set(OPENCV_FOUND "NO")
-if ( OPENCV_INCLUDE_DIR AND
- OPENCV_CORE_LIBRARY AND
- OPENCV_FEATURES2D_LIBRARY AND
- OPENCV_XFEATURES2D_LIBRARY AND
- OPENCV_FLANN_LIBRARY AND
- OPENCV_HIGHGUI_LIBRARY AND
- OPENCV_IMGPROC_LIBRARY AND
- OPENCV_ML_LIBRARY AND
- OPENCV_OBJDETECT_LIBRARY AND
- OPENCV_PHOTO_LIBRARY AND
- OPENCV_VIDEO_LIBRARY)
- set(OPENCV_FOUND "YES")
+if ( OPENCV_INCLUDE_DIR AND
+ OPENCV_CORE_LIBRARY AND
+ OPENCV_FEATURES2D_LIBRARY AND
+ OPENCV_XFEATURES2D_LIBRARY AND
+ OPENCV_FLANN_LIBRARY AND
+ OPENCV_IMGPROC_LIBRARY AND
+ OPENCV_ML_LIBRARY AND
+ OPENCV_OBJDETECT_LIBRARY AND
+ OPENCV_PHOTO_LIBRARY AND
+ OPENCV_VIDEO_LIBRARY)
+ set(OPENCV_FOUND "YES")
else()
- message( WARNING "Could not find all OpenCV libraries. Check the list for NOTFOUND:" )
- message( "${OPENCV_LIBRARIES}" )
+ message( WARNING "Could not find all OpenCV libraries. Check the list for NOTFOUND:" )
+ message( "${OPENCV_LIBRARIES}" )
endif()
-set(OPENCV_GPU_FOUND "NO")
-if ( OPENCV_FOUND AND
- OPENCV_CUDAARITHM_LIBRARY AND
- OPENCV_CUDAIMGPROC_LIBRARY AND
- OPENCV_CUDEV_LIBRARY)
- set(OPENCV_GPU_FOUND "YES")
- set(OPENCV_LIBRARIES ${OPENCV_LIBRARIES}
- ${OPENCV_CUDAARITHM_LIBRARY}
- ${OPENCV_CUDAIMGPROC_LIBRARY}
- ${OPENCV_CUDEV_LIBRARY} )
-else()
- message( "Could not find optional OpenCV GPU (CUDA) Libraries. " )
-endif()
+if (OPENCV_FOUND)
+ FIND_OPENCV_LIBRARY(OPENCV_IPPICV_LIBRARY ippicv)
+ if ( OPENCV_IPPICV_LIBRARY )
+ set( OPENCV_LIBRARIES ${OPENCV_LIBRARIES} ${OPENCV_IPPICV_LIBRARY} )
+ else()
+ message( WARNING "Could not find libippicv needed by OpenCV." )
+ endif()
+ FIND_OPENCV_LIBRARY(OPENCV_ILMIMF_LIBRARY IlmImf)
+ if ( OPENCV_ILMIMF_LIBRARY )
+ set( OPENCV_LIBRARIES ${OPENCV_LIBRARIES} ${OPENCV_ILMIMF_LIBRARY} )
+ else()
+ message( WARNING "Could not find IlmImf needed by OpenCV." )
+ endif()
+ FIND_OPENCV_LIBRARY(OPENCV_LIBTIFF_LIBRARY libtiff)
+ if ( OPENCV_LIBTIFF_LIBRARY )
+ set( OPENCV_LIBRARIES ${OPENCV_LIBRARIES} ${OPENCV_LIBTIFF_LIBRARY} )
+ else()
+ message( WARNING "Could not find libtiff needed by OpenCV." )
+ endif()
-set(OPENCV_IMGCODECS_FOUND "NO")
-if(OPENCV_FOUND AND OPENCV_IMGCODECS_LIBRARY)
- set(OPENCV_IMGCODECS_FOUND "YES")
- set(OPENCV_LIBRARIES ${OPENCV_LIBRARIES} ${OPENCV_IMGCODECS_LIBRARY})
-else()
- message( "Could not find optional OpenCV Image Codecs Library" )
+ # Optional
+ FIND_OPENCV_LIBRARY(OPENCV_IMGCODECS_LIBRARY opencv_imgcodecs)
+ FIND_OPENCV_LIBRARY(OPENCV_CUDAARITHM_LIBRARY opencv_cudaarithm)
+ FIND_OPENCV_LIBRARY(OPENCV_CUDAIMGPROC_LIBRARY opencv_cudaimgproc)
+ FIND_OPENCV_LIBRARY(OPENCV_CUDEV_LIBRARY opencv_cudev)
+ FIND_OPENCV_LIBRARY(OPENCV_HIGHGUI_LIBRARY opencv_highgui)
+
+ set(OPENCV_GPU_FOUND "NO")
+ if ( OPENCV_CUDAARITHM_LIBRARY AND OPENCV_CUDAIMGPROC_LIBRARY AND OPENCV_CUDEV_LIBRARY)
+ set(OPENCV_GPU_FOUND "YES")
+ set(OPENCV_LIBRARIES ${OPENCV_LIBRARIES}
+ ${OPENCV_CUDAARITHM_LIBRARY}
+ ${OPENCV_CUDAIMGPROC_LIBRARY}
+ ${OPENCV_CUDEV_LIBRARY} )
+ else()
+ message( "Could not find optional OpenCV GPU (CUDA) Libraries. " )
+ endif()
+
+ set(OPENCV_IMGCODECS_FOUND "NO")
+ if(OPENCV_IMGCODECS_LIBRARY)
+ set(OPENCV_IMGCODECS_FOUND "YES")
+ set(OPENCV_LIBRARIES ${OPENCV_LIBRARIES} ${OPENCV_IMGCODECS_LIBRARY})
+ else()
+ message( "Could not find optional OpenCV Image Codecs Library" )
+ endif()
+
+ set(OPENCV_HIGHGUI_FOUND 0)
+ if(OPENCV_HIGHGUI_LIBRARY)
+ set(OPENCV_HIGHGUI_FOUND 1)
+ set(OPENCV_LIBRARIES ${OPENCV_LIBRARIES} ${OPENCV_HIGHGUI_LIBRARY})
+ else()
+ message( "Could not find optional OpenCV HighGui Library" )
+ endif()
+
+ # Unfortunately, OpenCV inter-library dependency is so complicated, we just list the libs twice:
+ set(OPENCV_LIBRARIES ${OPENCV_LIBRARIES} ${OPENCV_LIBRARIES} )
endif()
if(OPENCV_FOUND)
diff --git a/include/ossim/init/JsonConfig.h b/include/ossim/init/JsonConfig.h
index f20e584..8c2f065 100644
--- a/include/ossim/init/JsonConfig.h
+++ b/include/ossim/init/JsonConfig.h
@@ -164,20 +164,19 @@ public:
bool operator==(const JsonParam& p) const { return (p._name == _name); }
- void setValue(const Json::Value& json_node);
- void setValue(void* value);
- void resetValue();
-
/** Outputs JSON to output stream provided */
friend std::ostream& operator<<(std::ostream& out, const JsonParam& obj);
private:
+ void setValue(void* value);
+ void resetValue();
ossimString _name;
ossimString _label;
ossimString _descr;
ParamType _type;
void* _value;
+ std::vector<ossimString> _allowedValues; // only used for multiple-choice string parameters
};
diff --git a/include/ossim/point_cloud/ossimPointBlock.h b/include/ossim/point_cloud/ossimPointBlock.h
index 22b1f7f..5f07ea7 100755
--- a/include/ossim/point_cloud/ossimPointBlock.h
+++ b/include/ossim/point_cloud/ossimPointBlock.h
@@ -26,9 +26,9 @@ class OSSIMDLLEXPORT ossimPointBlock: public ossimDataObject
public:
typedef std::vector< ossimRefPtr<ossimPointRecord> > PointList;
- ossimPointBlock(ossimSource* owner=0, ossim_uint32 fields=0);
+ explicit ossimPointBlock(ossimSource* owner=0, ossim_uint32 fields=0);
- virtual ~ossimPointBlock();
+ ~ossimPointBlock();
/** Returns allocated size. The pointList may contain only null points if not assigned */
virtual ossim_uint32 size() const { return (ossim_uint32)m_pointList.size(); }
@@ -80,7 +80,7 @@ public:
virtual void initialize() {};
protected:
- ossimPointBlock(const ossimPointBlock& rhs);
+ ossimPointBlock(const ossimPointBlock& rhs) {}
void scanForMinMax() const;
ossimPointRecord m_nullPCR;
diff --git a/include/ossim/point_cloud/ossimPointCloudImageHandler.h b/include/ossim/point_cloud/ossimPointCloudImageHandler.h
index b9eda4b..3b7842a 100644
--- a/include/ossim/point_cloud/ossimPointCloudImageHandler.h
+++ b/include/ossim/point_cloud/ossimPointCloudImageHandler.h
@@ -69,8 +69,8 @@ public:
* corner of the tile to grab from the image.
* Satisfies pure virtual from TileSource class.
*/
- virtual ossimRefPtr<ossimImageData> getTile(const ossimIrect& rect,
- ossim_uint32 resLevel=0);
+ ossimRefPtr<ossimImageData> getTile(const ossimIrect& rect,
+ ossim_uint32 resLevel=0) override;
/**
* Method to get a tile.
@@ -82,14 +82,14 @@ public:
* is undefined so caller should handle appropriately with makeBlank or
* whatever.
*/
- virtual bool getTile(ossimImageData* result, ossim_uint32 resLevel=0);
+ bool getTile(ossimImageData* result, ossim_uint32 resLevel=0) override;
/**
* @brief Gets bands.
* Satisfies ossimImageSource::getNumberOfInputBands pure virtual.
* @retrun Number of bands.
*/
- virtual ossim_uint32 getNumberOfInputBands() const;
+ ossim_uint32 getNumberOfInputBands() const override;
/**
* @brief Gets lines.
@@ -98,7 +98,7 @@ public:
* Default = 0
* @return The number of lines for specified reduced resolution level.
*/
- virtual ossim_uint32 getNumberOfLines(ossim_uint32 resLevel = 0) const;
+ ossim_uint32 getNumberOfLines(ossim_uint32 resLevel = 0) const override;
/**
* @brief Gets samples.
@@ -107,7 +107,7 @@ public:
* Default = 0
* @return The number of samples for specified reduced resolution level.
*/
- virtual ossim_uint32 getNumberOfSamples(ossim_uint32 resLevel = 0) const;
+ ossim_uint32 getNumberOfSamples(ossim_uint32 resLevel = 0) const override;
/**
* @brief Gets tile width.
@@ -117,7 +117,7 @@ public:
* returns the output tile width which can be different than the internal
* image tile width on disk.
*/
- virtual ossim_uint32 getImageTileWidth() const;
+ ossim_uint32 getImageTileWidth() const override;
/**
* @brief Gets tile height.
@@ -127,16 +127,16 @@ public:
* returns the output tile width which can be different than the internal
* image tile width on disk.
*/
- virtual ossim_uint32 getImageTileHeight() const;
+ ossim_uint32 getImageTileHeight() const override;
/** @return The width of the output tile. */
- virtual ossim_uint32 getTileWidth() const;
+ ossim_uint32 getTileWidth() const override;
/** @returns The height of the output tile. */
- virtual ossim_uint32 getTileHeight() const;
+ ossim_uint32 getTileHeight() const override;
/** @return The output pixel type of the tile source. */
- ossimScalarType getOutputScalarType() const;
+ ossimScalarType getOutputScalarType() const override;
/**
* @brief Gets entry list.
@@ -146,51 +146,51 @@ public:
* will be needed to rasterize that data channel as well.
* @param entryList This is the list to initialize with entry indexes.
*/
- virtual void getEntryList(std::vector<ossim_uint32>& entryList) const;
+ void getEntryList(std::vector<ossim_uint32>& entryList) const override;
- virtual void getEntryNames(std::vector<ossimString>& entryNames) const;
+ void getEntryNames(std::vector<ossimString>& entryNames) const override;
/** @return The current entry number. */
- virtual ossim_uint32 getCurrentEntry() const;
+ ossim_uint32 getCurrentEntry() const override;
/**
* @param entryIdx Entry number to select.
* @return true if it was able to set the current entry and false otherwise.
*/
- virtual bool setCurrentEntry(ossim_uint32 entryIdx);
+ bool setCurrentEntry(ossim_uint32 entryIdx) override;
/** @return "point-cloud" */
- virtual ossimString getShortName() const;
+ ossimString getShortName() const override;
/** @return "ossim point cloud to image renderer" */
- virtual ossimString getLongName() const;
+ ossimString getLongName() const override;
/**
* Returns the image geometry object associated with this tile source or
* NULL if non defined. The geometry contains full-to-local image
* transform as well as projection (image-to-world).
*/
- virtual ossimRefPtr<ossimImageGeometry> getImageGeometry();
+ ossimRefPtr<ossimImageGeometry> getImageGeometry() override;
/** @return Min pixel value. */
- virtual double getMinPixelValue(ossim_uint32 band=0) const;
+ double getMinPixelValue(ossim_uint32 band) const override;
/** @return Min pixel value. */
- virtual double getMaxPixelValue(ossim_uint32 band=0) const;
+ double getMaxPixelValue(ossim_uint32 band) const override;
/** @return Min pixel value. */
- virtual double getNullPixelValue(ossim_uint32 band=0) const;
+ double getNullPixelValue(ossim_uint32 band) const override;
/** @return The total number of decimation levels. */
- virtual ossim_uint32 getNumberOfDecimationLevels() const;
+ ossim_uint32 getNumberOfDecimationLevels() const override;
- virtual bool saveState(ossimKeywordlist& kwl, const char* prefix=0) const;
+ bool saveState(ossimKeywordlist& kwl, const char* prefix) const override;
- virtual bool loadState(const ossimKeywordlist& kwl, const char* prefix=0);
+ bool loadState(const ossimKeywordlist& kwl, const char* prefix) override;
- virtual void getValidImageVertices(std::vector<ossimIpt>& validVertices,
- ossimVertexOrdering ordering=OSSIM_CLOCKWISE_ORDER,
- ossim_uint32 resLevel=0) const;
+ void getValidImageVertices(std::vector<ossimIpt>& validVertices,
+ ossimVertexOrdering ordering,
+ ossim_uint32 resLevel) const override;
/**
* The reader properties are:
@@ -201,8 +201,8 @@ public:
* -- the active component ("component") as string with possible values
* "intensity", "highest", "lowest", "returns", or "rgb", respectively (case insensitive)
*/
- void setProperty(ossimRefPtr<ossimProperty> property);
- ossimRefPtr<ossimProperty> getProperty(const ossimString& name) const;
+ void setProperty(ossimRefPtr<ossimProperty> property) override;
+ ossimRefPtr<ossimProperty> getProperty(const ossimString& name) const override;
/**
* Permits backdoor for setting the input point cloud handler object. Useful for debug
@@ -223,7 +223,9 @@ protected:
PcrBucket() : m_bucket(0), m_numSamples(0) {}
PcrBucket(const ossim_float32* init_value, ossim_uint32 numBands);
PcrBucket(const ossim_float32& R, const ossim_float32& G, const ossim_float32& B);
- PcrBucket(const ossim_float32& init_value);
+
+ explicit PcrBucket(const ossim_float32& init_value);
+
~PcrBucket();
ossim_float32* m_bucket;
int m_numSamples;
diff --git a/include/ossim/point_cloud/ossimPointCloudUtilityFilter.h b/include/ossim/point_cloud/ossimPointCloudUtilityFilter.h
index a5fc3ce..7016e5f 100644
--- a/include/ossim/point_cloud/ossimPointCloudUtilityFilter.h
+++ b/include/ossim/point_cloud/ossimPointCloudUtilityFilter.h
@@ -20,46 +20,24 @@
#include <vector>
class ossimImageData;
-class ossimPointCloudUtil;
+class ossimPointCloudTool;
class OSSIMDLLEXPORT ossimPointCloudUtilityFilter : public ossimImageSourceFilter
{
public:
- ossimPointCloudUtilityFilter( ossimPointCloudUtil* pc_util);
+ ossimPointCloudUtilityFilter( ossimPointCloudTool* pc_util);
virtual ~ossimPointCloudUtilityFilter() {}
- virtual bool getTile(ossimImageData* result, ossim_uint32 resLevel=0);
+ virtual bool getTile(ossimImageData* result, ossim_uint32 resLevel);
ossimScalarType getOutputScalarType() const { return OSSIM_FLOAT32; }
-;
+
virtual ossim_uint32 getNumberOfOutputBands() const { return 1; }
virtual ossimRefPtr<ossimImageGeometry> getImageGeometry();
protected:
- class PcrBucket
- {
- public:
- PcrBucket() : m_bucket(0), m_numSamples(0) {}
- PcrBucket(const ossim_float32* init_value, ossim_uint32 numBands);
- PcrBucket(const ossim_float32& R, const ossim_float32& G, const ossim_float32& B);
- PcrBucket(const ossim_float32& init_value);
- ~PcrBucket();
- ossim_float32* m_bucket;
- int m_numSamples;
- };
-
- void initTile();
-
- void addSample(std::map<ossim_int32, PcrBucket*>& accumulator,
- ossim_int32 index,
- const ossimPointRecord* sample);
-
- void normalize(std::map<ossim_int32, PcrBucket*>& accumulator);
-
- ossim_uint32 componentToFieldCode() const;
-
- ossimRefPtr<ossimPointCloudUtil> m_util;
+ ossimRefPtr<ossimPointCloudTool> m_util;
TYPE_DATA
};
diff --git a/include/ossim/projection/ossimRpcModel.h b/include/ossim/projection/ossimRpcModel.h
index 62ab664..e9850a9 100644
--- a/include/ossim/projection/ossimRpcModel.h
+++ b/include/ossim/projection/ossimRpcModel.h
@@ -226,7 +226,7 @@ public:
* Serialize to WorldView-style .RPB file to the stream provided.
* Returns TRUE on successful write.
* */
- bool toRPB(std::ostream& out) const;
+ bool toRPB(std::ostream &out) const;
protected:
enum AdjustParamIndex
diff --git a/include/ossim/projection/ossimRpcSolver.h b/include/ossim/projection/ossimRpcSolver.h
index b8456cd..4b55d4d 100644
--- a/include/ossim/projection/ossimRpcSolver.h
+++ b/include/ossim/projection/ossimRpcSolver.h
@@ -83,7 +83,8 @@ public:
ossimRpcSolver(bool useElevation=false,
bool useHeightAboveMSLFlag=false);
-
+ virtual ~ossimRpcSolver(){}
+
/**
* This will convert any projector to an RPC model
*/
@@ -113,6 +114,13 @@ public:
const double& pixel_tolerance=0.5);
/**
+ * Performs iterative solve using the other solve method, but uses an image filename to
+ * initialize, and computes RPC over entire image rect.
+ */
+ bool solve(const ossimFilename& imageFilename,
+ const double& pixel_tolerance=0.5);
+
+ /**
* takes associated image points and ground points
* and solves the coefficents for the rational polynomial for
* line and sample calculations from world points.
@@ -145,8 +153,6 @@ public:
void setValidImageRect(const ossimIrect& imageRect);
protected:
- virtual ~ossimRpcSolver(){}
-
virtual void solveInitialCoefficients(NEWMAT::ColumnVector& coeff,
const std::vector<double>& f,
const std::vector<double>& x,
@@ -189,7 +195,6 @@ protected:
ossimRefPtr<ossimImageGeometry> theRefGeom;
ossimRefPtr<ossimRpcModel> theRpcModel;
-
};
#endif
diff --git a/include/ossim/support_data/ossimSrcRecord.h b/include/ossim/support_data/ossimSrcRecord.h
index 442acbd..0953ae9 100644
--- a/include/ossim/support_data/ossimSrcRecord.h
+++ b/include/ossim/support_data/ossimSrcRecord.h
@@ -107,6 +107,7 @@ public:
const ossimFilename& getOverviewPath() const { return m_overviewPath; }
const ossimFilename& getHistogramPath() const { return m_histogramPath; }
const ossimFilename& getMaskPath() const { return m_maskPath; }
+ const ossimFilename& getGeomPath() const { return m_geomPath; }
void setFilename(const ossimFilename& f);
void setEntryIndex(ossim_int32 i);
@@ -114,8 +115,9 @@ public:
void setMask(const ossimFilename& f) { m_maskPath = f; }
void setHistogram(const ossimFilename& f) { m_histogramPath = f; }
void setHistogramOp(const ossimString& s) { m_histogramOp = s; }
+ void setGeom(const ossimFilename& f);
void setBands(const std::vector<ossim_uint32>& v) { m_bandList = v; }
- void setWeight(const double& weight) {m_weight = weight; }
+ void setWeight(const double& weight) { m_weight = weight; }
void setRgbDataBool(bool isRgbData) { m_isRgbData = isRgbData; }
//! Sets supplementary data files dir. If the OVR and/or hist dirs are undefined, they are also
@@ -152,6 +154,7 @@ private:
ossimFilename m_overviewPath;
ossimFilename m_histogramPath;
ossimFilename m_maskPath;
+ ossimFilename m_geomPath;
//! The following data members allow users to render vector data
bool m_isVectorData;
diff --git a/include/ossim/util/ossimChipperUtil.h b/include/ossim/util/ossimChipperUtil.h
index cdda53e..859f5a9 100644
--- a/include/ossim/util/ossimChipperUtil.h
+++ b/include/ossim/util/ossimChipperUtil.h
@@ -489,7 +489,8 @@ private:
* @param chain Chain to set up.
* @return true on success, false on error.
*/
- bool setupChainHistogram( ossimRefPtr<ossimSingleImageChain>& chain) const;
+ bool setupChainHistogram( ossimRefPtr<ossimSingleImageChain>& chain,
+ std::shared_ptr<ossimSrcRecord> srcRecordPtr=0) const;
/**
* @brief Sets entry for a chain.
diff --git a/include/ossim/util/ossimImageUtil.h b/include/ossim/util/ossimImageUtil.h
index 0740114..de7912b 100644
--- a/include/ossim/util/ossimImageUtil.h
+++ b/include/ossim/util/ossimImageUtil.h
@@ -141,7 +141,7 @@ public:
/**
* @brief Sets key OVERVIEW_TYPE_KW.
*
- * Available types depens on plugins. Know types:
+ * Available types depends on plugins. Known types:
* ossim_tiff_box ( defualt )
* ossim_tiff_nearest
* ossim_kakadu_nitf_j2k ( kakadu plugin )
diff --git a/include/ossim/util/ossimInfo.h b/include/ossim/util/ossimInfo.h
index f17a907..cbd073e 100644
--- a/include/ossim/util/ossimInfo.h
+++ b/include/ossim/util/ossimInfo.h
@@ -469,6 +469,16 @@ public:
*/
std::ostream& outputHeight(const ossimGpt& gpt, std::ostream& out) const;
+ /** @brief Prints supported image file extensions to stdout. */
+ void printExtensions() const;
+
+ /**
+ * @brief Prints supported image file extensions to stream.
+ * @param out Output to write to out.
+ * @return stream
+ */
+ std::ostream& printExtensions(std::ostream& out) const;
+
/** @brief Prints loaded plugins to stdout. */
void printPlugins() const;
diff --git a/include/ossim/util/ossimPointCloudUtil.h b/include/ossim/util/ossimPointCloudTool.h
similarity index 60%
rename from include/ossim/util/ossimPointCloudUtil.h
rename to include/ossim/util/ossimPointCloudTool.h
index c2570dc..13dc474 100644
--- a/include/ossim/util/ossimPointCloudUtil.h
+++ b/include/ossim/util/ossimPointCloudTool.h
@@ -10,10 +10,8 @@
#ifndef ossimPointCloudUtil_HEADER
#define ossimPointCloudUtil_HEADER
-#include <ossim/base/ossimObject.h>
+#include <ossim/util/ossimTool.h>
#include <ossim/base/ossimRefPtr.h>
-#include <ossim/base/ossimProcessInterface.h>
-#include <ossim/base/ossimListenerManager.h>
#include <ossim/base/ossimFilename.h>
#include <ossim/base/ossimIrect.h>
#include <ossim/base/ossimArgumentParser.h>
@@ -25,41 +23,22 @@
/**
* Utility class for generating point-cloud-derived image products
*/
-class OSSIMDLLEXPORT ossimPointCloudUtil : public ossimObject,
- public ossimProcessInterface,
- public ossimListenerManager
+class OSSIMDLLEXPORT ossimPointCloudTool : public ossimTool
{
friend class ossimPointCloudUtilityFilter;
public:
- ossimPointCloudUtil();
- virtual ~ossimPointCloudUtil();
+ ossimPointCloudTool();
+ ~ossimPointCloudTool();
- /**
- * Initializes from command line arguments.
- */
- bool initialize(ossimArgumentParser& ap);
+ bool initialize(ossimArgumentParser& ap) override;
+ void loadJSON(const Json::Value& json_request) override;
+ void saveJSON(Json::Value& json) const override;
+ virtual bool execute() override;
- /*
- * Initializes after parameter set-methods have been called (in lieu of argument parser init)
- */
+protected:
bool initialize();
-
- /**
- * Returns true if successful
- */
- virtual bool execute();
-
- /**
- * Sets the nominal output resolution in meters
- */
void setGSD(const double& meters_per_pixel);
-
- virtual ossimObject* getObject() { return this; }
- virtual const ossimObject* getObject() const { return this; }
- virtual ossimListenerManager* getManager() { return this; };
-
-protected:
void usage(ossimArgumentParser& ap);
void addArguments(ossimArgumentParser& ap);
bool loadPC();
diff --git a/src/base/ossimRectanglePartitioner.cpp b/src/base/ossimRectanglePartitioner.cpp
index 6d168fe..e7f9e23 100644
--- a/src/base/ossimRectanglePartitioner.cpp
+++ b/src/base/ossimRectanglePartitioner.cpp
@@ -19,7 +19,7 @@
#include <ossim/base/ossimTrace.h>
using namespace std;
-static ossimTrace traceDebug("ossimRectanglePartitioner:degug");
+static ossimTrace traceDebug("ossimRectanglePartitioner:debug");
ossimRectanglePartitioner::ossimRectanglePartitioner()
{
diff --git a/src/imaging/ossimFilterResampler.cpp b/src/imaging/ossimFilterResampler.cpp
index 81ef61e..6afc152 100644
--- a/src/imaging/ossimFilterResampler.cpp
+++ b/src/imaging/ossimFilterResampler.cpp
@@ -915,18 +915,16 @@ bool ossimFilterResampler::loadState(const ossimKeywordlist& kwl,
theScaleFactor.y = ossimString(lookup).toDouble();
}
- ossimString minify;
lookup = kwl.find(prefix, "minify_type");
if (lookup)
{
- minify = lookup;
+ setMinifyFilterType(lookup);
}
- ossimString magnify;
lookup = kwl.find(prefix, "magnify_type");
if (lookup)
{
- magnify = lookup;
+ setMagnifyFilterType(lookup);
}
if(fabs(theScaleFactor.x) <= FLT_EPSILON)
@@ -941,9 +939,6 @@ bool ossimFilterResampler::loadState(const ossimKeywordlist& kwl,
theInverseScaleFactor.x = 1.0/theScaleFactor.x;
theInverseScaleFactor.y = 1.0/theScaleFactor.y;
- setFilterType(getFilterType(minify),
- getFilterType(magnify));
-
return true;
}
diff --git a/src/imaging/ossimImageHandler.cpp b/src/imaging/ossimImageHandler.cpp
index aed5b1c..535e322 100755
--- a/src/imaging/ossimImageHandler.cpp
+++ b/src/imaging/ossimImageHandler.cpp
@@ -303,12 +303,14 @@ bool ossimImageHandler::initVertices(const char* file)
kwl->add("connection_string", file, true);
if (!instream)
{
- if(m_state) m_state->setValidVertices(kwl);
+ //if(m_state)
+ // m_state->setValidVertices(kwl);
return false;
}
kwl->parseStream(*instream);
- if(m_state) m_state->setValidVertices(kwl);
+ if(m_state && kwl->getSize())
+ m_state->setValidVertices(kwl);
}
if (kwl->getErrorStatus() != ossimErrorCodes::OSSIM_OK)
@@ -843,6 +845,11 @@ bool ossimImageHandler::hasOverviews() const
bool ossimImageHandler::openOverview(const ossimFilename& overview_file)
{
bool result = false;
+ if (traceDebug())
+ {
+ ossimNotify(ossimNotifyLevel_DEBUG)
+ << "ossimImageHandler::openOverview(overview_file): ...entered!";
+ }
closeOverview();
if (overview_file != theImageFile) // Make sure we don't open ourselves.
@@ -907,14 +914,11 @@ bool ossimImageHandler::openOverview(const ossimFilename& overview_file)
event.setObjectList(theOverview.get());
fireEvent(event);
}
- else
- {
- if(m_state)
- {
- // create a null state to save the fact that we did not find any overviews
- m_state->setOverviewState(std::make_shared<ossim::ImageHandlerState>());
- }
- }
+ }
+ if (traceDebug())
+ {
+ ossimNotify(ossimNotifyLevel_DEBUG)
+ << "ossimImageHandler::openOverview(overview_file): ...leaving!";
}
return result;
@@ -949,8 +953,6 @@ bool ossimImageHandler::openOverview()
if(theOverview)
{
result = true;
-
-
//---
// Set the owner in case the overview reader needs to get something
// from the it like min/max/null.
@@ -1019,7 +1021,6 @@ bool ossimImageHandler::openOverview()
<< "\n";
}
}
-
if ( !result )
{
if (overviewFilename.empty() || (overviewFilename.exists() == false) )
@@ -1045,6 +1046,7 @@ bool ossimImageHandler::openOverview()
{
overviewFilename = theSupplementaryDirectory;
overviewFilename = overviewFilename.dirCat( getFilename().file() );
+
}
if ( getNumberOfEntries() > 1 )
@@ -1560,7 +1562,6 @@ void ossimImageHandler::setSupplementaryDirectory(const ossimFilename& dir)
theSupplementaryDirectory = dir;
else
theSupplementaryDirectory = dir.path();
-
// A change in supplementary directory presents an opportunity to find the OVR that could not be
// opened previously, as well as other support data items:
if (!theOverview.valid())
diff --git a/src/imaging/ossimImageSourceFilter.cpp b/src/imaging/ossimImageSourceFilter.cpp
index b4ba37f..bdc527b 100644
--- a/src/imaging/ossimImageSourceFilter.cpp
+++ b/src/imaging/ossimImageSourceFilter.cpp
@@ -17,7 +17,7 @@
#include <ossim/base/ossimTrace.h>
#include <ossim/base/ossimProperty.h>
-static ossimTrace traceDebug("ossimImageSourceFilter:degug");
+static ossimTrace traceDebug("ossimImageSourceFilter:debug");
RTTI_DEF2(ossimImageSourceFilter, "ossimImageSourceFilter", ossimImageSource, ossimConnectableObjectListener)
diff --git a/src/imaging/ossimJpegTileSource.cpp b/src/imaging/ossimJpegTileSource.cpp
index 07c928a..a68633d 100644
--- a/src/imaging/ossimJpegTileSource.cpp
+++ b/src/imaging/ossimJpegTileSource.cpp
@@ -53,7 +53,7 @@ extern "C"
RTTI_DEF1_INST(ossimJpegTileSource, "ossimJpegTileSource", ossimImageHandler)
-static ossimTrace traceDebug("ossimJpegTileSource:degug");
+static ossimTrace traceDebug("ossimJpegTileSource:debug");
class ossimJpegTileSource::PrivateData
{
diff --git a/src/imaging/ossimMetadataFileWriter.cpp b/src/imaging/ossimMetadataFileWriter.cpp
index 6368020..9f13fb6 100644
--- a/src/imaging/ossimMetadataFileWriter.cpp
+++ b/src/imaging/ossimMetadataFileWriter.cpp
@@ -27,7 +27,7 @@ RTTI_DEF3(ossimMetadataFileWriter,
ossimProcessInterface,
ossimConnectableObjectListener);
-static ossimTrace traceDebug("ossimMetadataFileWriter:degug");
+static ossimTrace traceDebug("ossimMetadataFileWriter:debug");
ossimMetadataFileWriter::ossimMetadataFileWriter()
:ossimConnectableObject(0),
diff --git a/src/imaging/ossimResampler.cpp b/src/imaging/ossimResampler.cpp
index ab2f213..bcc9596 100644
--- a/src/imaging/ossimResampler.cpp
+++ b/src/imaging/ossimResampler.cpp
@@ -454,12 +454,12 @@ void ossimResampler::resamplePartialTile(T,// not used
ossim_int32 kernelHorizontalShift = (ossim_int32)(-theKernelWidth/2.0+evenKernelW);
ossim_int32 kernelVerticalShift = (ossim_int32)(-theKernelHeight/2.0+evenKernelH);
- for (k = 0; k < maxOutputSize; k++)
+ for (k = 0; k < maxOutputSize; ++k)
{
Lx[k] = (ossim_int32)(scaledOriginShift.x+((k+origin.x)/
theOutputToInputRatio.x));
}
- for (k = 0; k < maxOutputSize; k++)
+ for (k = 0; k < maxOutputSize; ++k)
{
Ly[k] = (ossim_int32)(scaledOriginShift.y+((k+origin.y)/
theOutputToInputRatio.y));
@@ -472,17 +472,17 @@ void ossimResampler::resamplePartialTile(T,// not used
T maxPix = static_cast<T>(input->getMaxPix(band));
T np = static_cast<T>(input->getNullPix(band));
- for (k = 0; k < out_height; k++)
+ for (k = 0; k < out_height; ++k)
{
ossim_int32 indexMod = (ossim_int32)fmod((k+origin.y), theOutputToInputRatio.y);
if(indexMod >= theTableWidthY) indexMod = theTableWidthY - 1;
if(indexMod <0) indexMod = 0;
- for (j = 0; j < in_width; j++)
+ for (j = 0; j < in_width; ++j)
{
h[j] = 0.0;
ossim_int32 count = 0;
double lastValue = ossim::nan();
- for (l = 0; l < theKernelHeight; l++)
+ for (l = 0; l < theKernelHeight; ++l)
{
ossim_int32 index = Ly[k] + l + kernelVerticalShift;
if ((index >= 0) && (index < in_height))
@@ -530,7 +530,7 @@ void ossimResampler::resamplePartialTile(T,// not used
h[j] = ossim::nan();
}
}
- for (ossim_int32 m = 0; m < out_width; m++)
+ for (ossim_int32 m = 0; m < out_width; ++m)
{
double x = 0.0;
ossim_int32 indexMod = (ossim_int32)fmod((m+origin.x), theOutputToInputRatio.x);
@@ -543,7 +543,7 @@ void ossimResampler::resamplePartialTile(T,// not used
}
else
{
- for (l = 0; l < theKernelWidth; l++)
+ for (l = 0; l < theKernelWidth; ++l)
{
ossim_int32 index = Lx[m] + l + kernelHorizontalShift;
if ((index >= 0) && (index < in_width))
@@ -623,12 +623,12 @@ void ossimResampler::resampleFullTile(T,// not used
ossim_int32 kernelHorizontalShift = (ossim_int32)(-theKernelWidth/2.0+evenKernelW);
ossim_int32 kernelVerticalShift = (ossim_int32)(-theKernelHeight/2.0+evenKernelH);
- for (k = 0; k < maxOutputSize; k++)
+ for (k = 0; k < maxOutputSize; ++k)
{
Lx[k] = (ossim_int32)(scaledOriginShift.x+((k+origin.x)/
theOutputToInputRatio.x));
}
- for (k = 0; k < maxOutputSize; k++)
+ for (k = 0; k < maxOutputSize; ++k)
{
Ly[k] = (ossim_int32)(scaledOriginShift.y+((k+origin.y)/
theOutputToInputRatio.y));
@@ -640,15 +640,15 @@ void ossimResampler::resampleFullTile(T,// not used
double minPix = static_cast<T>(input->getMinPix()[band]);
double maxPix = static_cast<T>(input->getMaxPix()[band]);
- for (k = 0; k < out_height; k++)
+ for (k = 0; k < out_height; ++k)
{
int indexMod = (int)fmod((k+origin.y), theOutputToInputRatio.y);
if(indexMod >= theTableWidthY) indexMod = theTableWidthY - 1;
if(indexMod <0) indexMod = 0;
- for (j = 0; j < in_width; j++)
+ for (j = 0; j < in_width; ++j)
{
h[j] = 0.0;
- for (l = 0; l < theKernelHeight; l++)
+ for (l = 0; l < theKernelHeight; ++l)
{
ossim_int32 index = Ly[k] + l + kernelVerticalShift;
if ((index >= 0) && (index < in_height))
@@ -658,14 +658,14 @@ void ossimResampler::resampleFullTile(T,// not used
}
}
}
- for (ossim_int32 m = 0; m < out_width; m++)
+ for (ossim_int32 m = 0; m < out_width; ++m)
{
double x = 0.0;
int indexMod = (int)fmod((m+origin.x), theOutputToInputRatio.x);
if(indexMod >= theTableWidthX) indexMod = theTableWidthX-1;
if(indexMod <0) indexMod = 0;
- for (l = 0; l < theKernelWidth; l++)
+ for (l = 0; l < theKernelWidth; ++l)
{
ossim_int32 index = Lx[m] + l + kernelHorizontalShift;
if ((index >= 0) && (index < in_width))
@@ -769,7 +769,7 @@ void ossimResampler::resampleTile(T,// not used
long outputRectW = outputRect.width();
long resultOffset = (subRectUl.y - outputRectUl.y)*outputRectW + (subRectUl.x - outputRectUl.x);
- for(ossim_uint32 band = 0; band < input->getNumberOfBands(); band++)
+ for(ossim_uint32 band = 0; band < input->getNumberOfBands(); ++band)
{
T* resultBuf = static_cast<T*>(output->getBuf(band))+resultOffset;
const T *sourceBuf = static_cast<T*>(dupIn->getBuf(band));
@@ -777,13 +777,13 @@ void ossimResampler::resampleTile(T,// not used
ossimDpt end = endSave;
T np = (T)output->getNullPix(band);
- for(long y = 0; y < subRectH; y++)
+ for(long y = 0; y < subRectH; ++y)
{
double deltaX = (end.x - start.x)*stepSizeWidth;
double deltaY = (end.y - start.y)*stepSizeHeight;
ossimDpt pointXY = start;
- for(long x = 0; x < subRectW; x++)
+ for(long x = 0; x < subRectW; ++x)
{
int xPixel = pointXY.x<0?(int)floor(pointXY.x):(int)pointXY.x;
int yPixel = pointXY.y<0?(int)floor(pointXY.y):(int)pointXY.y;
@@ -868,7 +868,7 @@ void ossimResampler::resampleTileNearestNeighbor(T, // dummy template variable
long outputRectW = outputRect.width();
long resultOffset = (subRectUl.y - outputRectUl.y)*outputRectW + (subRectUl.x - outputRectUl.x);
- for(ossim_uint32 band = 0; band < input->getNumberOfBands(); band++)
+ for(ossim_uint32 band = 0; band < input->getNumberOfBands(); ++band)
{
T* resultBuf = static_cast<T*>(output->getBuf(band))+resultOffset;
const T *sourceBuf = static_cast<T*>(input->getBuf(band));
@@ -877,13 +877,13 @@ void ossimResampler::resampleTileNearestNeighbor(T, // dummy template variable
T inNp = (T)input->getNullPix(band);
T outNp = (T)output->getNullPix(band);
- for(long y = 0; y < subRectH; y++)
+ for(long y = 0; y < subRectH; ++y)
{
double deltaX = (end.x - start.x)*stepSizeWidth;
double deltaY = (end.y - start.y)*stepSizeHeight;
ossimDpt pointXY = start;
- for(long x = 0; x < subRectW; x++)
+ for(long x = 0; x < subRectW; ++x)
{
int xPixel = pointXY.x<0?(int)floor(pointXY.x):(int)pointXY.x;
int yPixel = pointXY.y<0?(int)floor(pointXY.y):(int)pointXY.y;
@@ -1025,11 +1025,11 @@ void ossimResampler::generateWeightTable()
case ossimResampler_NONE:
{
theResamplerType = ossimResampler_NEAREST_NEIGHBOR;
- for (i = 0; i < theTableWidthY; i++)
+ for (i = 0; i < theTableWidthY; ++i)
{
theWeightTableY[0][i] = 1;
}
- for (i = 0; i < theTableWidthX; i++)
+ for (i = 0; i < theTableWidthX; ++i)
{
theWeightTableX[0][i] = 1;
}
@@ -1037,11 +1037,11 @@ void ossimResampler::generateWeightTable()
}
case ossimResampler_NEAREST_NEIGHBOR:
{
- for (i = 0; i < theTableWidthY; i++)
+ for (i = 0; i < theTableWidthY; ++i)
{
theWeightTableY[0][i] = 1;
}
- for (i = 0; i < theTableWidthX; i++)
+ for (i = 0; i < theTableWidthX; ++i)
{
theWeightTableX[0][i] = 1;
}
@@ -1049,13 +1049,13 @@ void ossimResampler::generateWeightTable()
}
case ossimResampler_BILINEAR:
{
- for (i = 0; i < theTableWidthX; i++)
+ for (i = 0; i < theTableWidthX; ++i)
{
x = (double)i/(double)(theTableWidthX);
theWeightTableX[0][i] = x;
theWeightTableX[1][i] = 1-x;
}
- for (i = 0; i < theTableWidthY; i++)
+ for (i = 0; i < theTableWidthY; ++i)
{
x = (double)i/(double)(theTableWidthY);
theWeightTableY[0][i] = x;
@@ -1065,7 +1065,7 @@ void ossimResampler::generateWeightTable()
}
case ossimResampler_BICUBIC:
{
- for (i = 0; i < theTableWidthX; i++)
+ for (i = 0; i < theTableWidthX; ++i)
{
x = (double)i/(double)(theTableWidthX);
theWeightTableX[0][i] = getCubicC0(x);
@@ -1073,7 +1073,7 @@ void ossimResampler::generateWeightTable()
theWeightTableX[2][i] = getCubicC2(x);
theWeightTableX[3][i] = getCubicC3(x);
}
- for (i = 0; i < theTableWidthY; i++)
+ for (i = 0; i < theTableWidthY; ++i)
{
x = (double)i/(double)(theTableWidthY);
theWeightTableY[0][i] = getCubicC0(x);
diff --git a/src/imaging/ossimSingleImageChain.cpp b/src/imaging/ossimSingleImageChain.cpp
index 261ddff..1480140 100644
--- a/src/imaging/ossimSingleImageChain.cpp
+++ b/src/imaging/ossimSingleImageChain.cpp
@@ -431,7 +431,25 @@ bool ossimSingleImageChain::addImageHandler(const ossimFilename& file, bool open
bool ossimSingleImageChain::addImageHandler(const ossimSrcRecord& src)
{
- bool result = addImageHandler( src.getFilename() );
+ bool result = false;
+
+ close();
+
+ // m_handler = ossimImageHandlerRegistry::instance()->open(file, true, openOverview);
+ m_handler = ossimImageHandlerRegistry::instance()->open(src.getAttributesKwl());
+
+ if ( m_handler.valid() )
+ {
+ // Add to the chain. Note: last is really first.
+ addLast( m_handler.get() );
+
+ result = true;
+ }
+
+ return result;
+
+// bool result = addImageHandler( src.getFilename() );
+#if 0
if (result)
{
//---
@@ -500,6 +518,7 @@ bool ossimSingleImageChain::addImageHandler(const ossimSrcRecord& src)
}
}
}
+ #endif
return result;
}
diff --git a/src/imaging/ossimTiffOverviewBuilder.cpp b/src/imaging/ossimTiffOverviewBuilder.cpp
index 30229d6..82d1890 100644
--- a/src/imaging/ossimTiffOverviewBuilder.cpp
+++ b/src/imaging/ossimTiffOverviewBuilder.cpp
@@ -45,7 +45,7 @@ RTTI_DEF1(ossimTiffOverviewBuilder,
"ossimTiffOverviewBuilder",
ossimOverviewBuilderBase)
-static ossimTrace traceDebug("ossimTiffOverviewBuilder:degug");
+static ossimTrace traceDebug("ossimTiffOverviewBuilder:debug");
// Property keywords.
static const char COPY_ALL_KW[] = "copy_all_flag";
diff --git a/src/imaging/ossimVertexExtractor.cpp b/src/imaging/ossimVertexExtractor.cpp
index 190213e..f2f7fb0 100644
--- a/src/imaging/ossimVertexExtractor.cpp
+++ b/src/imaging/ossimVertexExtractor.cpp
@@ -17,7 +17,7 @@ using namespace std;
#include <ossim/base/ossimTrace.h>
#include <ossim/base/ossimNotifyContext.h>
-static ossimTrace traceDebug("ossimVertexExtractor:degug");
+static ossimTrace traceDebug("ossimVertexExtractor:debug");
RTTI_DEF2(ossimVertexExtractor, "ossimVertexExtractor",
ossimSource, ossimProcessInterface);
diff --git a/src/init/JsonConfig.cpp b/src/init/JsonConfig.cpp
index 841a465..ea689f3 100644
--- a/src/init/JsonConfig.cpp
+++ b/src/init/JsonConfig.cpp
@@ -38,7 +38,8 @@ JsonParam::JsonParam(const JsonParam& copy)
_name (copy._name),
_descr (copy._descr),
_type (copy._type),
- _value (0)
+ _value (0),
+ _allowedValues (copy._allowedValues)
{
setValue(copy._value);
}
@@ -115,6 +116,7 @@ bool JsonParam::loadJSON(const Json::Value& paramNode)
_label = paramNode["label"].asString();
_descr = paramNode["descr"].asString();
Json::Value value = paramNode["value"];
+ Json::Value allowedValues = paramNode["allowedValues"];
ossimString ptype = paramNode["type"].asString();
if (ptype.empty() || _name.empty())
@@ -170,6 +172,11 @@ bool JsonParam::loadJSON(const Json::Value& paramNode)
_type = JsonParam::STRING;
string v = value.asString();
setValue(&v);
+ if (!allowedValues.empty() && allowedValues.isArray())
+ {
+ for (const auto &allowedValue : allowedValues)
+ _allowedValues.emplace_back(allowedValue.asString());
+ }
}
}
}
@@ -225,6 +232,13 @@ void JsonParam::saveJSON(Json::Value& paramNode) const
paramNode["type"] = "string";
s = *(string*)_value;
paramNode["value"] = s;
+ if (!_allowedValues.empty())
+ {
+ Json::Value allowedValues(Json::arrayValue);
+ for (const auto &allowedValue : _allowedValues)
+ allowedValues.append(allowedValue.c_str());
+ paramNode["allowedValues"] = allowedValues;
+ }
break;
case JsonParam::VECTOR:
@@ -234,6 +248,7 @@ void JsonParam::saveJSON(Json::Value& paramNode) const
paramNode["value"][j] = v[j];
break;
+ case UNASSIGNED:
default:
break;
}
@@ -379,7 +394,7 @@ void JsonConfig::setParameter(const JsonParam& p)
bool JsonConfig::paramExists(const char* paramName) const
{
- map<string, JsonParam>::const_iterator i = m_paramsMap.find(string(paramName));
+ auto i = m_paramsMap.find(string(paramName));
if (i != m_paramsMap.end())
return true;
return false;
@@ -387,17 +402,14 @@ bool JsonConfig::paramExists(const char* paramName) const
void JsonConfig::loadJSON(const Json::Value& json_node)
{
- Json::Value paramNode;
-
// Support two forms: long (with full param descriptions and types), or short (just name: value)
if (json_node.isArray())
{
// Long form:
- for (unsigned int i=0; i<json_node.size(); ++i)
+ for (const auto &i : json_node)
{
- paramNode = json_node[i];
JsonParam p;
- if (p.loadJSON(paramNode))
+ if (p.loadJSON(i))
setParameter(p);
}
}
@@ -405,13 +417,13 @@ void JsonConfig::loadJSON(const Json::Value& json_node)
{
// Short form expects a prior entry in the params map whose value will be overriden here:
Json::Value::Members members = json_node.getMemberNames();
- for (size_t i=0; i<members.size(); ++i)
+ for (auto &member : members)
{
- JsonParam& p = getParameter(members[i].c_str());
+ JsonParam& p = getParameter(member.c_str());
if (p.name().empty())
{
ossimNotify(ossimNotifyLevel_WARN)<<"JsonConfig::loadJSON(): Attempted to override "
- "nonexistent parameter <"<< members[i] << ">. Ignoring request."<<endl;
+ "nonexistent parameter <"<< member << ">. Ignoring request."<<endl;
continue;
}
if (p.descr().contains("DEPRECATED"))
@@ -423,6 +435,7 @@ void JsonConfig::loadJSON(const Json::Value& json_node)
// Create a full JSON representation of the named parameter from the default list, replace
// its value, and recreate the parameter from the updated full JSON:
+ Json::Value paramNode;
p.saveJSON(paramNode);
paramNode["value"] = json_node[p.name().string()];
p.loadJSON(paramNode);
@@ -433,12 +446,12 @@ void JsonConfig::loadJSON(const Json::Value& json_node)
void JsonConfig::saveJSON(Json::Value& json_node) const
{
- Json::Value paramNode;
map<string, JsonParam>::const_iterator param = m_paramsMap.begin();
int entry = 0;
while (param != m_paramsMap.end())
{
+ Json::Value paramNode;
param->second.saveJSON(paramNode);
json_node[entry++] = paramNode;
++param;
diff --git a/src/point_cloud/ossimPointCloudImageHandler.cpp b/src/point_cloud/ossimPointCloudImageHandler.cpp
index 885d239..aea01ab 100644
--- a/src/point_cloud/ossimPointCloudImageHandler.cpp
+++ b/src/point_cloud/ossimPointCloudImageHandler.cpp
@@ -94,11 +94,11 @@ ossimPointCloudImageHandler::ossimPointCloudImageHandler()
//---
m_gsd.makeNan();
- m_componentNames.push_back(INTENSITY_KW);
- m_componentNames.push_back(HIGHEST_KW);
- m_componentNames.push_back(LOWEST_KW);
- m_componentNames.push_back(RETURNS_KW);
- m_componentNames.push_back(RGB_KW);
+ m_componentNames.emplace_back(INTENSITY_KW);
+ m_componentNames.emplace_back(HIGHEST_KW);
+ m_componentNames.emplace_back(LOWEST_KW);
+ m_componentNames.emplace_back(RETURNS_KW);
+ m_componentNames.emplace_back(RGB_KW);
}
ossimPointCloudImageHandler::~ossimPointCloudImageHandler()
@@ -167,8 +167,8 @@ ossimRefPtr<ossimImageGeometry> ossimPointCloudImageHandler::getImageGeometry()
theGeometry = new ossimImageGeometry();
ossimString epsgCode ("EPSG:4326");
- ossimMapProjection* proj = dynamic_cast<ossimMapProjection*>(
- ossimEpsgProjectionFactory::instance()->createProjection(epsgCode));
+ ossimMapProjection* proj = dynamic_cast<ossimMapProjection*>( // NOLINT
+ ossimEpsgProjectionFactory::instance()->createProjection(epsgCode));
if (!proj)
return 0;
theGeometry->setProjection(proj);
@@ -208,7 +208,7 @@ ossimRefPtr<ossimImageData> ossimPointCloudImageHandler::getTile(const ossimIrec
// Image rectangle must be set prior to calling getTile.
m_tile->setImageRectangle(tile_rect);
- if (getTile(m_tile.get(), resLevel) == false)
+ if (!getTile(m_tile.get(), resLevel))
{
if (m_tile->getDataObjectStatus() != OSSIM_NULL)
m_tile->makeBlank();
@@ -315,7 +315,7 @@ bool ossimPointCloudImageHandler::getTile(ossimImageData* result, ossim_uint32 r
// Finished accumulating, need to normalize and fill the tile.
// We must always blank out the tile as we may not have a point for every pixel.
normalize(accumulator);
- ossim_float32** buf = new ossim_float32*[numBands];
+ auto buf = new ossim_float32*[numBands];
std::map<ossim_int32, PcrBucket*>::iterator accum_iter;
ossim_float32 null_pixel = OSSIM_DEFAULT_NULL_PIX_FLOAT;
result->setNullPix(null_pixel);
@@ -340,7 +340,7 @@ bool ossimPointCloudImageHandler::getTile(ossimImageData* result, ossim_uint32 r
delete [] buf;
buf = 0;
- std::map<ossim_int32, PcrBucket*>::iterator pcr_iter = accumulator.begin();
+ auto pcr_iter = accumulator.begin();
while (pcr_iter != accumulator.end())
{
delete pcr_iter->second;
@@ -361,7 +361,7 @@ void ossimPointCloudImageHandler::addSample(std::map<ossim_int32, PcrBucket*>& a
//cout << "sample: "<<*sample<<endl;//TODO: REMOVE DEBUG
// Search map for exisiting point in that location:
- std::map<ossim_int32, PcrBucket*>::iterator iter = accumulator.find(index);
+ auto iter = accumulator.find(index);
if (iter == accumulator.end())
{
// First hit. Initialize location with current sample:
@@ -420,7 +420,7 @@ void ossimPointCloudImageHandler::normalize(std::map<ossim_int32, PcrBucket*>& a
if (m_activeComponent == RGB)
numBands = 3;
- std::map<ossim_int32, PcrBucket*>::iterator iter = accumulator.begin();
+ auto iter = accumulator.begin();
ossim_float32 avg;
while (iter != accumulator.end())
{
@@ -510,7 +510,7 @@ void ossimPointCloudImageHandler::getEntryList(std::vector<ossim_uint32>& entryL
entryList.clear();
for (ossim_uint32 i = 0; i < m_componentNames.size(); i++)
{
- entryList.push_back(i);
+ entryList.emplace_back(i);
}
}
@@ -716,18 +716,18 @@ void ossimPointCloudImageHandler::getValidImageVertices(std::vector<ossimIpt>& v
ossimGrect bounds;
m_pch->getBounds(bounds);
theGeometry->worldToLocal(bounds.ul(), r0Pt);
- validVertices.push_back(r0Pt);
+ validVertices.emplace_back(r0Pt);
theGeometry->worldToLocal(bounds.ur(), r0Pt);
- validVertices.push_back(r0Pt);
+ validVertices.emplace_back(r0Pt);
theGeometry->worldToLocal(bounds.lr(), r0Pt);
- validVertices.push_back(r0Pt);
+ validVertices.emplace_back(r0Pt);
theGeometry->worldToLocal(bounds.ll(), r0Pt);
- validVertices.push_back(r0Pt);
+ validVertices.emplace_back(r0Pt);
if (ordering == OSSIM_COUNTERCLOCKWISE_ORDER)
{
for (int i=3; i>=0; i--)
- validVertices.push_back(validVertices[i]/divisor);
+ validVertices.emplace_back(validVertices[i]/divisor);
validVertices.erase(validVertices.begin(), validVertices.begin()+4);
}
}
diff --git a/src/point_cloud/ossimPointCloudUtilityFilter.cpp b/src/point_cloud/ossimPointCloudUtilityFilter.cpp
index 2cf6e88..dd75ef7 100644
--- a/src/point_cloud/ossimPointCloudUtilityFilter.cpp
+++ b/src/point_cloud/ossimPointCloudUtilityFilter.cpp
@@ -14,12 +14,12 @@
#include <ossim/imaging/ossimImageData.h>
#include <ossim/imaging/ossimImageGeometry.h>
#include <ossim/elevation/ossimElevManager.h>
-#include <ossim/util/ossimPointCloudUtil.h>
+#include <ossim/util/ossimPointCloudTool.h>
-RTTI_DEF1(ossimPointCloudUtilityFilter, "ossimPointCloudUtilityFilter", ossimImageSourceFilter);
+RTTI_DEF1(ossimPointCloudUtilityFilter, "ossimPointCloudUtilityFilter", ossimImageSourceFilter); // NOLINT
-ossimPointCloudUtilityFilter::ossimPointCloudUtilityFilter( ossimPointCloudUtil* pc_util)
+ossimPointCloudUtilityFilter::ossimPointCloudUtilityFilter( ossimPointCloudTool* pc_util)
: m_util (pc_util)
{
}
@@ -38,14 +38,14 @@ bool ossimPointCloudUtilityFilter::getTile(ossimImageData* result, ossim_uint32
ossimRefPtr<ossimImageData> lowest = 0;
// Fetch tile from inputs as needed:
- if ((m_util->m_operation == ossimPointCloudUtil::HIGHEST_DEM) ||
- (m_util->m_operation == ossimPointCloudUtil::HIGHEST_LOWEST))
+ if ((m_util->m_operation == ossimPointCloudTool::HIGHEST_DEM) ||
+ (m_util->m_operation == ossimPointCloudTool::HIGHEST_LOWEST))
{
m_util->m_pciHandler->setCurrentEntry(ossimPointCloudImageHandler::HIGHEST);
highest = m_util->m_pciHandler->getTile(irect, resLevel);
}
- if ((m_util->m_operation == ossimPointCloudUtil::LOWEST_DEM) ||
- (m_util->m_operation == ossimPointCloudUtil::HIGHEST_LOWEST))
+ if ((m_util->m_operation == ossimPointCloudTool::LOWEST_DEM) ||
+ (m_util->m_operation == ossimPointCloudTool::HIGHEST_LOWEST))
{
m_util->m_pciHandler->setCurrentEntry(ossimPointCloudImageHandler::LOWEST);
lowest = m_util->m_pciHandler->getTile(irect, resLevel);
@@ -60,13 +60,13 @@ bool ossimPointCloudUtilityFilter::getTile(ossimImageData* result, ossim_uint32
pt_l0 = ipt * (resLevel + 1);
switch (m_util->m_operation)
{
- case ossimPointCloudUtil::HIGHEST_DEM:
+ case ossimPointCloudTool::HIGHEST_DEM:
m_util->m_prodGeom->localToWorld(pt_l0, gpt);
h = elevation->getHeightAboveEllipsoid(gpt);
dh = highest->getPix(ipt) - h;
break;
- case ossimPointCloudUtil::HIGHEST_LOWEST:
+ case ossimPointCloudTool::HIGHEST_LOWEST:
dh = highest->getPix(ipt) - lowest->getPix(ipt);
break;
diff --git a/src/projection/ossimRpcModel.cpp b/src/projection/ossimRpcModel.cpp
index 96ca04d..38b561c 100644
--- a/src/projection/ossimRpcModel.cpp
+++ b/src/projection/ossimRpcModel.cpp
@@ -103,7 +103,7 @@ ossimRpcModel::ossimRpcModel()
theCrtrackOffset(0.0),
theIntrackScale (0.0),
theCrtrackScale (0.0),
- theCosMapRot (0.0),
+ theCosMapRot (1.0),
theSinMapRot (0.0),
theBiasError (0.0),
theRandError (0.0)
@@ -1493,7 +1493,7 @@ bool ossimRpcModel::toJSON(std::ostream& jsonStream) const
#endif
}
-bool ossimRpcModel::toRPB(ostream& out) const
+bool ossimRpcModel::toRPB(ostream &out) const
{
out<<"satId = \"NOT_ASSIGNED\";\n";
out<<"bandId = \"NOT_ASSIGNED\";\n";
@@ -1535,5 +1535,7 @@ bool ossimRpcModel::toRPB(ostream& out) const
out<<"END_GROUP = IMAGE\n";
out<<"END;";
+
+ return true;
}
diff --git a/src/projection/ossimRpcSolver.cpp b/src/projection/ossimRpcSolver.cpp
index 1c0c7ca..54032dd 100644
--- a/src/projection/ossimRpcSolver.cpp
+++ b/src/projection/ossimRpcSolver.cpp
@@ -5,23 +5,15 @@
//
//**************************************************************************************************
-#include <cstdlib>
-#include <ctime>
-#include <iomanip>
-#include <iostream>
-#include <iterator>
-
#include <ossim/projection/ossimRpcSolver.h>
-#include <ossim/projection/ossimRpcModel.h>
-#include <ossim/projection/ossimProjection.h>
-#include <ossim/matrix/newmatap.h>
-#include <ossim/matrix/newmatio.h>
#include <ossim/matrix/newmatnl.h>
-#include <ossim/matrix/newmatio.h>
#include <ossim/elevation/ossimElevManager.h>
#include <ossim/support_data/ossimNitfRpcBTag.h>
-#include <ossim/imaging/ossimImageGeometry.h>
-#include <ossim/base/ossim2dTo2dIdentityTransform.h>
+#include <ossim/imaging/ossimImageHandler.h>
+#include <ossim/imaging/ossimImageHandlerRegistry.h>
+
+using namespace ossim;
+using namespace std;
static const ossim_uint32 STARTING_GRID_SIZE = 8;
static const ossim_uint32 ENDING_GRID_SIZE = 64;
@@ -55,7 +47,7 @@ void ossimRpcSolver::solveCoefficients(const ossimDrect& imageBounds,
std::vector<ossimGpt> groundPoints;
std::vector<ossimDpt> imagePoints;
- ossim_uint32 x,y,img_x, img_y;
+ ossim_uint32 x,y;
ossimGpt gpt;
ossimGpt defaultGround;
if (ySamples <= 1)
@@ -308,10 +300,6 @@ bool ossimRpcSolver::solve(const ossimDrect& imageBounds,
ossimDpt ul = imageBounds.ul();
ossim_float64 w = imageBounds.width();
ossim_float64 h = imageBounds.height();
- ossimDpt gsd (geom->getMetersPerPixel());
-
- double dxRms = 0;
- double dyRms = 0;
ossimDpt ipt, irpc;
ossimGpt gpt;
@@ -415,6 +403,21 @@ bool ossimRpcSolver::solve(const ossimDrect& imageBounds,
return converged;
}
+bool ossimRpcSolver::solve(const ossimFilename& imageFilename,
+ const double& pixel_tolerance)
+{
+ // Establish input geometry:
+ ossimRefPtr<ossimImageHandler> h = ossimImageHandlerRegistry::instance()->open(imageFilename);
+ if(!h.valid())
+ return false;
+
+ ossimRefPtr<ossimImageGeometry> geom = h->getImageGeometry();
+ ossimDrect imageRect (h->getBoundingRect());
+
+ return solve(imageRect, geom.get(), pixel_tolerance);
+}
+
+
double ossimRpcSolver::getRmsError()const
{
return theMeanResidual;
diff --git a/src/reg/Image.cpp b/src/reg/Image.cpp
index 6fa6ad1..9097138 100644
--- a/src/reg/Image.cpp
+++ b/src/reg/Image.cpp
@@ -30,7 +30,8 @@ Image::Image(const std::string& imageId,
}
Image::Image(const Json::Value& json_node)
-: m_entryIndex (0)
+: m_entryIndex (0),
+ m_activeBand (1)
{
loadJSON(json_node);
}
diff --git a/src/reg/TiePoint.cpp b/src/reg/TiePoint.cpp
index 8b0a885..c76ea44 100644
--- a/src/reg/TiePoint.cpp
+++ b/src/reg/TiePoint.cpp
@@ -81,7 +81,8 @@ void TiePoint::getImagePoint(unsigned int index,
imageId = m_images[index]->getImageId();
imagePoint = m_imagePoints[index];
- cov = m_covariances[index];
+ if (m_covariances.size() > index)
+ cov = m_covariances[index];
}
void TiePoint::setImagePoint(std::shared_ptr<Image> image,
@@ -164,7 +165,7 @@ void TiePoint::loadJSON(const Json::Value& json_node)
for (int i=0; i<imagePoints.size(); ++i)
{
const Json::Value& p = imagePoints[i];
- if (!p || !(p["imageId"].isString()) || !(p["x"]) || !(p["y"]) || (p["covariance"].size()!=3))
+ if (!p || !(p["imageId"].isString()) || !(p["x"]) || !(p["y"]))
{
xmsg<<"Tiepoint JSON field \"imagePoints\" entry is ill-formed or not complete:\n"
<<p.toStyledString()<<endl;
@@ -180,11 +181,14 @@ void TiePoint::loadJSON(const Json::Value& json_node)
m_imagePoints.push_back(xy);
const Json::Value& covariance = p["covariance"];
- NEWMAT::SymmetricMatrix c (2);
- c(1,1) = covariance[0].asDouble();
- c(2,2) = covariance[1].asDouble();
- c(1,2) = covariance[2].asDouble();
- m_covariances.push_back(c);
+ if (covariance.size() == 3)
+ {
+ NEWMAT::SymmetricMatrix c(2);
+ c(1, 1) = covariance[0].asDouble();
+ c(2, 2) = covariance[1].asDouble();
+ c(1, 2) = covariance[2].asDouble();
+ m_covariances.push_back(c);
+ }
}
}
diff --git a/src/support_data/ossimERS.cpp b/src/support_data/ossimERS.cpp
index 07e2184..5525596 100644
--- a/src/support_data/ossimERS.cpp
+++ b/src/support_data/ossimERS.cpp
@@ -23,7 +23,7 @@
#include <ossim/base/ossimKeywordNames.h>
#include <ossim/base/ossimNotifyContext.h>
-static ossimTrace traceDebug("ossimERS:degug");
+static ossimTrace traceDebug("ossimERS:debug");
ossimERS::ossimERS()
diff --git a/src/support_data/ossimSrcRecord.cpp b/src/support_data/ossimSrcRecord.cpp
index b947463..097b752 100644
--- a/src/support_data/ossimSrcRecord.cpp
+++ b/src/support_data/ossimSrcRecord.cpp
@@ -120,13 +120,21 @@ bool ossimSrcRecord::loadState(const ossimKeywordlist& kwl, const char* prefix)
lookup = kwl.find(prefix, "ovr");
if (!lookup.empty())
{
- m_overviewPath = ossimFilename(lookup);
- m_attributesKwl.add(ossimKeywordNames::OVERVIEW_FILE_KW, m_overviewPath.chars());
+ setOverview(ossimFilename(lookup));
}
else
{
m_overviewPath.clear();
}
+ lookup = kwl.find(prefix, "geom");
+ if (!lookup.empty())
+ {
+ setGeom(ossimFilename(lookup));
+ }
+ else
+ {
+ m_geomPath.clear();
+ }
lookup = kwl.find(prefix, "mask");
if (!lookup.empty())
@@ -266,12 +274,15 @@ bool ossimSrcRecord::loadState(const ossimKeywordlist& kwl, const char* prefix)
void ossimSrcRecord::setSupportDir(const ossimFilename& f)
{
m_supportDir = f;
- if (m_overviewPath.empty())
- setOverview(m_supportDir);
+ m_attributesKwl.add("supplementary_directory", f.c_str());
+ // if (m_overviewPath.empty())
+ // setOverview(m_supportDir);
if (m_histogramPath.empty())
m_histogramPath = m_supportDir;
if (m_maskPath.empty())
m_maskPath = m_supportDir;
+ // if(m_geomPath.empty())
+ // m_geomPath = m_supportDir;
}
//*************************************************************************************************
@@ -300,4 +311,12 @@ void ossimSrcRecord::setOverview(const ossimFilename& f)
m_overviewPath = f;
m_attributesKwl.add(ossimKeywordNames::OVERVIEW_FILE_KW, m_overviewPath.chars());
}
+//*************************************************************************************************
+// METHOD
+//*************************************************************************************************
+void ossimSrcRecord::setGeom(const ossimFilename& f)
+{
+ m_geomPath = f;
+ m_attributesKwl.add(ossimKeywordNames::GEOM_FILE_KW, m_overviewPath.chars());
+}
diff --git a/src/util/ossimChipperUtil.cpp b/src/util/ossimChipperUtil.cpp
index b38913d..6d6d346 100644
--- a/src/util/ossimChipperUtil.cpp
+++ b/src/util/ossimChipperUtil.cpp
@@ -1536,27 +1536,19 @@ void ossimChipperUtil::addDemSources()
ossimNotify(ossimNotifyLevel_DEBUG) << MODULE << " entered...\n";
}
- // Add the images from the options keyword list.
- ossim_uint32 demCount = m_kwl->numberOf( DEM_KW.c_str() );
- ossim_uint32 maxIndex = demCount + 100; // Allow for skippage in numbering.
- ossim_uint32 foundRecords = 0;
- ossim_uint32 i = 0;
- while ( foundRecords < demCount )
- {
- ossimString key = DEM_KW;
- key += ossimString::toString(i);
- key += ".";
- key += FILE_KW;
- ossimFilename f = m_kwl->findKey( key.string() );
+ std::vector<ossimString> sortedList;
+ m_kwl->getSortedList(sortedList, DEM_KW);
+ for(auto record:sortedList)
+ {
+ ossimString key = record + ".";
+ ossimString file = key + FILE_KW;
+ ossimString entry = key + ossimKeywordNames::ENTRY_KW;
+ ossimFilename f = m_kwl->findKey( file.string() );
if ( f.size() )
{
// Look for the entry key, e.g. dem0.entry: 10
ossim_uint32 entryIndex = 0;
- key = DEM_KW;
- key += ossimString::toString(i);
- key += ".";
- key += ossimKeywordNames::ENTRY_KW;
- std::string value = m_kwl->findKey( key.string() );
+ std::string value = m_kwl->findKey( entry.string() );
if ( value.size() )
{
entryIndex = ossimString(value).toUInt32();
@@ -1566,34 +1558,26 @@ void ossimChipperUtil::addDemSources()
// Get global entry. Set by "-e" on command line apps.
entryIndex = getEntryNumber();
}
-
- addDemSource( f, entryIndex );
- ++foundRecords;
+ ossimSrcRecord srcRecord;
+ srcRecord.setFilename(f);
+ srcRecord.setEntryIndex(entryIndex);
+ // addDemSource( f, entryIndex );
+ addDemSource( srcRecord );
}
- ++i;
- if ( i >= maxIndex ) break;
}
-
+ sortedList.clear();
if ( m_srcKwl.valid() )
{
// Add stuff from src keyword list.
- demCount = m_srcKwl->numberOf( DEM_KW.c_str() );
- maxIndex = demCount + 100;
- foundRecords = 0;
- i = 0;
- while ( foundRecords < demCount )
- {
- ossimString prefix = DEM_KW;
- prefix += ossimString::toString(i);
- prefix += ".";
+ m_srcKwl->getSortedList(sortedList, DEM_KW);
+ for(auto record:sortedList)
+ {
+ ossimString prefix = record+".";
ossimSrcRecord src;
if ( src.loadState( *(m_srcKwl.get()), prefix ) )
{
addDemSource(src);
- ++foundRecords;
}
- ++i;
- if ( i >= maxIndex ) break;
}
}
@@ -1653,64 +1637,34 @@ void ossimChipperUtil::addImgSources()
{
ossimNotify(ossimNotifyLevel_DEBUG) << MODULE << " entered...\n";
}
-
- ossim_uint32 imgCount = m_kwl->numberOf( IMG_KW.c_str() );
- ossim_uint32 maxIndex = imgCount + 100; // Allow for skippage in numbering.
- ossim_uint32 foundRecords = 0;
- ossim_uint32 i = 0;
- while ( foundRecords < imgCount )
+ std::vector<ossimString> sortedList;
+ m_kwl->getSortedList(sortedList, IMG_KW);
+ for(auto record:sortedList)
{
- ossimString key = IMG_KW;
- key += ossimString::toString(i);
- key += ".";
- key += FILE_KW;
- ossimFilename f = m_kwl->findKey( key.string() );
- if ( f.size() )
+ ossimString fileKey = record + "." + FILE_KW;
+ ossimFilename f = m_kwl->findKey( fileKey.string() );
+ if ( !f.empty())
{
- // Look for the entry key, e.g. image0.entry: 10
- ossim_uint32 entryIndex = 0;
- key = IMG_KW;
- key += ossimString::toString(i);
- key += ".";
- key += ossimKeywordNames::ENTRY_KW;
- std::string value = m_kwl->findKey( key.string() );
- if ( value.size() )
- {
- entryIndex = ossimString(value).toUInt32();
- }
- else
+ ossimString imagePrefix = record+".";
+ std::shared_ptr<ossimSrcRecord> srcRecord = std::make_shared<ossimSrcRecord>();
+ if(srcRecord->loadState(*m_kwl, imagePrefix.c_str()))
{
- // Get global entry. Set by "-e" on command line apps.
- entryIndex = getEntryNumber();
+ addImgSource(*srcRecord);
}
- // Add it:
- addImgSource(f, entryIndex );
- ++foundRecords;
}
- ++i;
- if ( i >= maxIndex ) break;
}
-
+ sortedList.clear();
if ( m_srcKwl.valid() )
{
- // Add stuff from src keyword list.
- imgCount = m_srcKwl->numberOf( IMG_KW.c_str() );
- maxIndex = imgCount + 100;
- foundRecords = 0;
- i = 0;
- while ( foundRecords < imgCount )
- {
- ossimString prefix = IMG_KW;
- prefix += ossimString::toString(i);
- prefix += ".";
- ossimSrcRecord src;
- if ( src.loadState( *(m_srcKwl.get()), prefix ) )
+ m_srcKwl->getSortedList(sortedList, IMG_KW);
+ for(auto record:sortedList)
+ {
+ ossimString prefix = record+".";
+ std::shared_ptr<ossimSrcRecord> src = std::make_shared<ossimSrcRecord>();
+ if ( src->loadState( *(m_srcKwl.get()), prefix ) )
{
- addImgSource(src);
- ++foundRecords;
+ addImgSource(*src);
}
- ++i;
- if ( i >= maxIndex ) break;
}
}
@@ -2081,7 +2035,7 @@ ossimRefPtr<ossimSingleImageChain> ossimChipperUtil::createChain(const ossimSrcR
// Histogram setup.
if ( hasHistogramOperation() )
{
- setupChainHistogram( ic );
+ setupChainHistogram( ic , std::make_shared<ossimSrcRecord>(rec));
}
// Brightness constrast setup:
@@ -4224,7 +4178,8 @@ void ossimChipperUtil::addCrossHairAnnotation(
} // End: ossimChipperUtil::addCrossHairAnnotations( ... )
-bool ossimChipperUtil::setupChainHistogram( ossimRefPtr<ossimSingleImageChain>& chain) const
+bool ossimChipperUtil::setupChainHistogram( ossimRefPtr<ossimSingleImageChain>& chain,
+ std::shared_ptr<ossimSrcRecord> srcRecordPtr) const
{
static const char MODULE[] = "ossimChipperUtil::setupChainHistogram(chain)";
if ( traceDebug() )
@@ -4259,15 +4214,24 @@ bool ossimChipperUtil::setupChainHistogram( ossimRefPtr<ossimSingleImageChain>&
bool openedHistogram = false;
if ( remapper->getHistogramFile() == ossimFilename::NIL )
{
+ ossimFilename f;
+ if(srcRecordPtr)
+ {
+ f = srcRecordPtr->getHistogramPath();
+ }
// Open histogram file.
- ossimFilename f = ih->getFilenameWithThisExtension( ossimString("his") );
- if ( f.empty() || (f.exists() == false) )
+ if(f.empty() || !f.exists())
{
- // For backward compatibility check if single entry and _e0.his
- f = ih->getFilenameWithThisExtension( ossimString("his"), true );
+ f = ih->getFilenameWithThisExtension( ossimString("his") );
+ if ( f.empty() || (f.exists() == false) )
+ {
+ // For backward compatibility check if single entry and _e0.his
+ f = ih->getFilenameWithThisExtension( ossimString("his"), true );
+ if(!f.exists()) f.clear();
+ }
}
- if ( f.exists() )
+ if ( !f.empty() )
{
openedHistogram = remapper->openHistogram( f );
if ( !openedHistogram && traceDebug() )
diff --git a/src/util/ossimInfo.cpp b/src/util/ossimInfo.cpp
index 6ff097d..9e02bf4 100644
--- a/src/util/ossimInfo.cpp
+++ b/src/util/ossimInfo.cpp
@@ -64,6 +64,7 @@ static const char DATUMS_KW[] = "datums";
static const char DEG2RAD_KW[] = "deg2rad";
static const char DUMP_KW[] = "dump";
static const char DUMP_NO_OVERVIEWS_KW[] = "dump_no_overviews";
+static const char EXTENSIONS_KW[] = "extensions";
static const char FACTORIES_KW[] = "factories";
static const char FACTORY_KEYWORD_LIST_KW[] = "factory_keyword_list";
static const char FONTS_KW[] = "fonts";
@@ -162,7 +163,9 @@ void ossimInfo::setUsage(ossimArgumentParser& ap)
au->addCommandLineOption("--ecef2llh", "<X> <Y> <Z> in ECEF coordinates and returns latitude longitude height position.");
- au->addCommandLineOption("-f", "<format> Will output the information specified format [KWL | XML]. Default is KWL.");
+ au->addCommandLineOption("--extensions", "Prints list of supported image extensions.");
+
+ au->addCommandLineOption("-f", "<format> Will output the information specified format [KWL | XML]. Default is KWL.");
au->addCommandLineOption("--factories", "<keyword_list_flag> Prints factory list. If keyword_list_flag is true, the result of a saveState will be output for each object.");
@@ -420,6 +423,13 @@ bool ossimInfo::initialize(ossimArgumentParser& ap)
}
}
+ if( ap.read("--extensions") )
+ {
+ m_kwl.add( EXTENSIONS_KW, TRUE_KW );
+ if ( ap.argc() < 2 )
+ break;
+ }
+
if( ap.read("-f", sp1) )
{
m_kwl.add( FORMAT_KW, ts1.c_str());
@@ -882,6 +892,7 @@ bool ossimInfo::execute()
value = lookup;
deg2rad( value.toFloat64() );
}
+
lookup = m_kwl.find(ECEF2LLH_KW);
if(lookup)
{
@@ -892,6 +903,17 @@ bool ossimInfo::execute()
ecef2llh(ecefPoint, ossimNotify(ossimNotifyLevel_INFO));
}
+ lookup = m_kwl.find(EXTENSIONS_KW);
+ if ( lookup )
+ {
+ ++consumedKeys;
+ value = lookup;
+ if ( value.toBool() )
+ {
+ printExtensions();
+ }
+ }
+
lookup = m_kwl.find(FACTORIES_KW);
if ( lookup )
{
@@ -3029,6 +3051,31 @@ std::ostream& ossimInfo::outputHeight(const ossimGpt& gpt, std::ostream& out) co
return out;
}
+void ossimInfo::printExtensions() const
+{
+ printExtensions(ossimNotify(ossimNotifyLevel_INFO));
+}
+
+std::ostream& ossimInfo::printExtensions(std::ostream& out) const
+{
+ ossimImageHandlerFactoryBase::UniqueStringList extList;
+ ossimImageHandlerRegistry::instance()->getSupportedExtensions(extList);
+ const vector<ossimString>& list = extList.getList();
+
+ if (list.empty())
+ {
+ out << "No image file extensions handled. This should never happen!" << std::endl;
+ return out;
+ }
+
+ out<<"\nImage Entensions Supported:"<< endl;
+ for (const auto& extension : list)
+ out<<" "<<extension<<endl;
+
+ out<<endl;
+ return out;
+}
+
void ossimInfo::printPlugins() const
{
printPlugins(ossimNotify(ossimNotifyLevel_INFO));
diff --git a/src/util/ossimPointCloudUtil.cpp b/src/util/ossimPointCloudTool.cpp
similarity index 88%
rename from src/util/ossimPointCloudUtil.cpp
rename to src/util/ossimPointCloudTool.cpp
index f13aa34..3ce4f89 100644
--- a/src/util/ossimPointCloudUtil.cpp
+++ b/src/util/ossimPointCloudTool.cpp
@@ -10,7 +10,7 @@
//*******************************************************************
// $Id$
-#include <ossim/util/ossimPointCloudUtil.h>
+#include <ossim/util/ossimPointCloudTool.h>
#include <ossim/init/ossimInit.h>
#include <ossim/base/ossimApplicationUsage.h>
#include <ossim/base/ossimCommon.h>
@@ -24,20 +24,20 @@
using namespace std;
-ossimPointCloudUtil::ossimPointCloudUtil()
+ossimPointCloudTool::ossimPointCloudTool()
: m_operation (LOWEST_DEM),
m_gsd (0)
{
}
-ossimPointCloudUtil::~ossimPointCloudUtil()
+ossimPointCloudTool::~ossimPointCloudTool()
{
m_pcHandler = 0;
m_prodGeom = 0;
m_pcuFilter = 0;
}
-void ossimPointCloudUtil::addArguments(ossimArgumentParser& ap)
+void ossimPointCloudTool::addArguments(ossimArgumentParser& ap)
{
// Set the general usage:
ossimApplicationUsage* au = ap.getApplicationUsage();
@@ -61,7 +61,7 @@ void ossimPointCloudUtil::addArguments(ossimArgumentParser& ap)
"in the ossimIndexToRgbLutFilter format and must handle the three output "
"viewshed values (see --values option).");
au->addCommandLineOption(
- "--op",
+ "--method",
"Specify the desired operation. Possible values are:\n"
" \"highest-dem\", \"lowest-dem\" (default), or \"highest-lowest\". \n"
"Alternatively can be specified in shorthand as \"h-d\", \"l-d\", or \"h-l\", "
@@ -76,7 +76,7 @@ void ossimPointCloudUtil::addArguments(ossimArgumentParser& ap)
"For engineering/debug purposes ");
}
-void ossimPointCloudUtil::usage(ossimArgumentParser& ap)
+void ossimPointCloudTool::usage(ossimArgumentParser& ap)
{
// Add global usage options.
ossimInit::instance()->addOptions(ap);
@@ -92,7 +92,7 @@ void ossimPointCloudUtil::usage(ossimArgumentParser& ap)
<< std::endl;
}
-bool ossimPointCloudUtil::initialize(ossimArgumentParser& ap)
+bool ossimPointCloudTool::initialize(ossimArgumentParser& ap)
{
if ( (ap.argc() == 1) || ap.read("-h") || ap.read("--help") )
{
@@ -112,7 +112,7 @@ bool ossimPointCloudUtil::initialize(ossimArgumentParser& ap)
if ( ap.read("--lut", sp1) )
m_lutFile = ts1;
- if ( ap.read("--op", sp1) )
+ if ( ap.read("--method", sp1) )
{
if (ts1.contains("highest-dem") || ts1.contains("h-d"))
m_operation = HIGHEST_DEM;
@@ -151,12 +151,17 @@ bool ossimPointCloudUtil::initialize(ossimArgumentParser& ap)
return initialize();
}
-bool ossimPointCloudUtil::initialize()
+void ossimPointCloudTool::loadJSON(const Json::Value &json_request)
+{
+
+}
+
+bool ossimPointCloudTool::initialize()
{
if (loadPC())
{
ossimNotify(ossimNotifyLevel_WARN)
- << "ossimPointCloudUtil::initialize ERR: Cannot open PC file at <"<<m_pcFile
+ << "ossimPointCloudTool::initialize ERR: Cannot open PC file at <"<<m_pcFile
<<">\n"<< endl;
return false;
}
@@ -168,14 +173,14 @@ bool ossimPointCloudUtil::initialize()
return true;
}
-bool ossimPointCloudUtil::loadPC()
+bool ossimPointCloudTool::loadPC()
{
// DEM provided as file on command line, reset the elev manager to use only this:
m_pcHandler = ossimPointCloudHandlerRegistry::instance()->open(m_pcFile);
if(!m_pcHandler.valid())
{
ossimNotify(ossimNotifyLevel_WARN)
- << "ossimPointCloudUtil::initialize ERR: Cannot open PC file at <"<<m_pcFile
+ << "ossimPointCloudTool::initialize ERR: Cannot open PC file at <"<<m_pcFile
<<">\n" << std::endl;
return false;
}
@@ -193,7 +198,7 @@ bool ossimPointCloudUtil::loadPC()
return true;
}
-bool ossimPointCloudUtil::loadDem()
+bool ossimPointCloudTool::loadDem()
{
// DEM provided as file on command line, reset the elev manager to use only this:
ossimElevManager* elevMgr = ossimElevManager::instance();
@@ -217,7 +222,7 @@ bool ossimPointCloudUtil::loadDem()
return true;
}
-void ossimPointCloudUtil::setGSD(const double& meters_per_pixel)
+void ossimPointCloudTool::setGSD(const double& meters_per_pixel)
{
if (m_prodGeom->getAsMapProjection() && (meters_per_pixel > 0))
{
@@ -226,7 +231,7 @@ void ossimPointCloudUtil::setGSD(const double& meters_per_pixel)
}
}
-bool ossimPointCloudUtil::execute()
+bool ossimPointCloudTool::execute()
{
// See if an LUT is requested:
ossimImageSource* last_source = m_pcuFilter.get();
@@ -238,7 +243,7 @@ bool ossimPointCloudUtil::execute()
lutSource = new ossimIndexToRgbLutFilter;
if (!lutSource->loadState(lut_kwl))
{
- ossimNotify(ossimNotifyLevel_WARN) << "ossimViewshedUtil::writeFile() ERROR: The LUT "
+ ossimNotify(ossimNotifyLevel_WARN) << "ossimPointCloudTool::writeFile() ERROR: The LUT "
"file <"<<m_lutFile<<"> could not be read. Ignoring remap request.\n"<< std::endl;
lutSource = 0;
}
@@ -264,3 +269,8 @@ bool ossimPointCloudUtil::execute()
}
+void ossimPointCloudTool::saveJSON(Json::Value &json_request) const
+{
+
+}
+
diff --git a/src/util/ossimToolFactory.cpp b/src/util/ossimToolFactory.cpp
index 5ab8980..c52667a 100644
--- a/src/util/ossimToolFactory.cpp
+++ b/src/util/ossimToolFactory.cpp
@@ -17,6 +17,7 @@
#include <ossim/util/ossimVerticesFinderTool.h>
#include <ossim/util/ossimViewshedTool.h>
#include <ossim/util/ossimSubImageTool.h>
+#include <ossim/util/ossimPointCloudTool.h>
#if OSSIM_HAS_HDF5
#include <ossim/hdf5/ossimHdf5Tool.h>
#endif
@@ -74,6 +75,9 @@ ossimTool* ossimToolFactory::createTool(const std::string& argName) const
if ((utilName == "subimage") || (argName == "ossimSubImageTool"))
return new ossimSubImageTool;
+ if ((utilName == "pointcloud") || (argName == "ossimPointCloudTool"))
+ return new ossimPointCloudTool;
+
#if OSSIM_HAS_HDF5
if ((utilName == "hdf5") || (argName == "ossimHdf5Tool"))
return new ossimHdf5Tool;
diff --git a/src/util/ossimViewshedTool.cpp b/src/util/ossimViewshedTool.cpp
index e5ab9cd..f0eec0a 100644
--- a/src/util/ossimViewshedTool.cpp
+++ b/src/util/ossimViewshedTool.cpp
@@ -472,7 +472,7 @@ bool ossimViewshedTool::computeViewshed()
// Allocate the output image buffer:
m_outBuffer = ossimImageDataFactory::instance()->create(0, OSSIM_UINT8, 1, m_aoiViewRect.width(),
m_aoiViewRect.height());
- cerr<<"ossimViewshedUtil:"<<__LINE__<<endl;//TODO:remove debug
+
ostringstream xmsg;
if (!m_outBuffer.valid() || !m_memSource.valid())
{
@@ -543,8 +543,8 @@ bool ossimViewshedTool::computeViewshed()
if (m_radials[sector] == 0)
continue;
- SectorProcessorJob spj (this, sector, m_halfWindow);
- spj.start();
+ std::shared_ptr<SectorProcessorJob> spj = std::make_shared<SectorProcessorJob>(this, sector, m_halfWindow);
+ spj->start();
if (needsAborting())
return false;
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-grass/ossim.git
More information about the Pkg-grass-devel
mailing list