[Git][debian-gis-team/ossim][upstream] New upstream version 2.3.1
Bas Couwenberg
gitlab at salsa.debian.org
Thu Apr 5 06:05:08 UTC 2018
Bas Couwenberg pushed to branch upstream at Debian GIS Project / ossim
Commits:
82efad2a by Bas Couwenberg at 2018-04-05T07:19:21+02:00
New upstream version 2.3.1
- - - - -
11 changed files:
- apps/ossim-orthoigen/ossim-orthoigen.cpp
- + include/ossim/imaging/ossimNitfCodecFactory.h
- include/ossim/init/JsonConfig.h
- include/ossim/point_cloud/ossimPointBlock.h
- include/ossim/util/ossimImageUtil.h
- share/ossim/templates/ossim_preferences_template
- src/imaging/ossimImageHandlerFactory.cpp
- + src/imaging/ossimNitfCodecFactory.cpp
- src/imaging/ossimScaleFilter.cpp
- src/util/ossimImageUtil.cpp
- test/src/ossim-foo.cpp
Changes:
=====================================
apps/ossim-orthoigen/ossim-orthoigen.cpp
=====================================
--- a/apps/ossim-orthoigen/ossim-orthoigen.cpp
+++ b/apps/ossim-orthoigen/ossim-orthoigen.cpp
@@ -1,6 +1,6 @@
//*******************************************************************
//
-// License: LGPL
+// License: MIT
//
// See LICENSE.txt file in the top level directory for more details.
//
=====================================
include/ossim/imaging/ossimNitfCodecFactory.h
=====================================
--- /dev/null
+++ b/include/ossim/imaging/ossimNitfCodecFactory.h
@@ -0,0 +1,35 @@
+//----------------------------------------------------------------------------
+//
+// License: MIT
+//
+// See LICENSE.txt file in the top level directory for more details.
+//
+// Description: Factory class declaration for codec(encoder/decoder).
+//
+//----------------------------------------------------------------------------
+// $Id$
+#ifndef ossimNitfCodecFactory_HEADER
+#define ossimNitfCodecFactory_HEADER
+#include <ossim/imaging/ossimCodecBase.h>
+#include <ossim/support_data/ossimNitfImageHeader.h>
+#include <mutex>
+
+/**
+* This is a convenience class that is used by the NITF handler to create the proper keywordlist
+* from the TREs and then calls the CodecRegistry to actuall return and allocate a new codec
+*/
+class ossimNitfCodecFactory
+{
+public:
+ ~ossimNitfCodecFactory();
+ static ossimNitfCodecFactory* instance();
+
+ ossimCodecBase* createCodec(ossimRefPtr<ossimNitfImageHeader> imageHeader);
+protected:
+ static std::mutex m_mutex;
+ static ossimNitfCodecFactory* m_instance;
+ ossimNitfCodecFactory();
+};
+
+
+#endif
=====================================
include/ossim/init/JsonConfig.h
=====================================
--- a/include/ossim/init/JsonConfig.h
+++ b/include/ossim/init/JsonConfig.h
@@ -64,9 +64,9 @@ class JsonParam;
class OSSIM_DLL JsonConfig : public ossim::JsonInterface
{
public:
+ /** Default Ctor loads all default .json files in the share/ossim system dir */
JsonConfig();
- /** Default Ctor loads all default .json files in the share/ossim system dir */
JsonConfig(const ossimFilename& configFile);
//! Destructor
=====================================
include/ossim/point_cloud/ossimPointBlock.h
=====================================
--- a/include/ossim/point_cloud/ossimPointBlock.h
+++ b/include/ossim/point_cloud/ossimPointBlock.h
@@ -80,7 +80,7 @@ public:
virtual void initialize() {};
protected:
- ossimPointBlock(const ossimPointBlock& rhs) {}
+ ossimPointBlock(const ossimPointBlock& /* rhs */) {}
void scanForMinMax() const;
ossimPointRecord m_nullPCR;
=====================================
include/ossim/util/ossimImageUtil.h
=====================================
--- a/include/ossim/util/ossimImageUtil.h
+++ b/include/ossim/util/ossimImageUtil.h
@@ -33,6 +33,7 @@ class ossimFileWalker;
class ossimGpt;
class ossimPropertyInterface;
class ossimApplicationUsage;
+class ossimImageHandler;
/**
* @brief ossimImageUtil class.
*
@@ -107,11 +108,34 @@ public:
* @note Number of required overviews is controlled by the ossim preferences
* keyword overview_stop_dimension.
*/
- void setCreateOverviewsFlag( bool flag );
+ void setCreateOverviewsFlag(bool flag);
/** @return true if CREATE_OVERVIEWS_KW is found and set to true. */
bool createOverviews() const;
-
+
+ /**
+ * @brief Sets create thumbnails flag keyword CREATE_THUMBNAILS_KW used by
+ * processFile method.
+ *
+ * @param flag If true thumbnail will be created if image does not already.
+ *
+ * @note Overviews must be created before this works
+ */
+ void setCreateThumbnailsFlag(bool flag);
+
+ /**
+ * @param value can be of values png or jpeg
+ */
+ void setThumbnailType(const std::string& value);
+
+ /**
+ * @param value can be of values none,auto-minmax,auto-percentile,std-stretch-1,std-stretch-2,std-stretch-3
+ */
+ void setThumbnailStretchType(const std::string& value);
+
+ /** @return true if CREATE_THUMBNAILS_KW is found and set to true. */
+ bool createThumbnails() const;
+
/**
* @brief Sets the rebuild overview flag keyword REBUILD_OVERVIEWS_KW used by
* processFile method.
@@ -405,6 +429,8 @@ private:
bool useEntryIndex,
bool& consumedHistogramOptions);
+ void createThumbnail(ossimRefPtr<ossimImageHandler> &ih);
+
/** @return true if entry has required overviews. */
bool hasRequiredOverview( ossimRefPtr<ossimImageHandler>& ih,
ossimRefPtr<ossimOverviewBuilderBase>& ob );
@@ -452,15 +478,21 @@ private:
/** @return the next writer prop index. */
ossim_uint32 getNextWriterPropIndex() const;
- /** @return the next reader prop index. */
+ /** @return the next reader prop index. */
ossim_uint32 getNextReaderPropIndex() const;
+ /** @return the next reader prop index. */
+ ossim_uint32 getThumbnailSize() const;
+
+ int getThumbnailStretchType()const;
+ std::string getThumbnailType()const;
+ std::string getThumbnailFilename(ossimImageHandler *ih) const;
/**
* @brief Adds option to m_kwl with mutex lock.
* @param key
* @param value
*/
- void addOption( const std::string& key, ossim_uint32 value );
+ void addOption(const std::string &key, ossim_uint32 value);
void addOption( const std::string& key, const std::string& value );
/**
=====================================
share/ossim/templates/ossim_preferences_template
=====================================
--- a/share/ossim/templates/ossim_preferences_template
+++ b/share/ossim/templates/ossim_preferences_template
@@ -760,6 +760,11 @@ ossim.plugins.aws.s3.cacheInvalidLocations: true
//ossim.stream.factory.registry.istream.buffer1.size: 65536
+// State cache settings
+// ossim.imaging.handler.registry.state_cache.enabled: true or false
+// ossim.imaging.handler.registry.state_cache.min_size: min number of items
+// ossim.imaging.handler.registry.state_cache.max_size: max number of items
+
// Default the DES parser to true
des_parser: true
=====================================
src/imaging/ossimImageHandlerFactory.cpp
=====================================
--- a/src/imaging/ossimImageHandlerFactory.cpp
+++ b/src/imaging/ossimImageHandlerFactory.cpp
@@ -417,10 +417,6 @@ ossimImageHandler* ossimImageHandlerFactory::open(const ossimKeywordlist& kwl,
result = new ossimQbTileFilesHandler;
if (result->loadState(kwl, prefix)) break;
- if(traceDebug()) ossimNotify(ossimNotifyLevel_DEBUG)<<M<<"trying ossimQbTileFilesHandler...\n"<<std::endl;
- result = new ossimQbTileFilesHandler;
- if (result->loadState(kwl, prefix)) break;
-
if (traceDebug()) ossimNotify(ossimNotifyLevel_DEBUG)<<M<< "Trying band-separated files...\n";
result = new ossimBandSeparateHandler();
if (result->loadState(kwl, prefix)) break;
=====================================
src/imaging/ossimNitfCodecFactory.cpp
=====================================
--- /dev/null
+++ b/src/imaging/ossimNitfCodecFactory.cpp
@@ -0,0 +1,57 @@
+//----------------------------------------------------------------------------
+//
+// License: MIT
+//
+// See LICENSE.txt file in the top level directory for more details.
+//
+// Description: Factory class declaration for codec(encoder/decoder).
+//
+//----------------------------------------------------------------------------
+// $Id$
+#include <ossim/imaging/ossimNitfCodecFactory.h>
+#include <ossim/imaging/ossimCodecFactoryRegistry.h>
+
+ossimNitfCodecFactory* ossimNitfCodecFactory::m_instance=0;
+std::mutex ossimNitfCodecFactory::m_mutex;
+
+ossimNitfCodecFactory::ossimNitfCodecFactory()
+{
+ m_instance = this;
+}
+
+ossimNitfCodecFactory::~ossimNitfCodecFactory()
+{
+ std::lock_guard<std::mutex> lock(m_mutex);
+ m_instance = 0;
+}
+
+
+ossimNitfCodecFactory* ossimNitfCodecFactory::instance()
+{
+ std::lock_guard<std::mutex> lock(m_mutex);
+ if(!m_instance)
+ {
+ m_instance = new ossimNitfCodecFactory();
+ }
+
+ return m_instance;
+}
+
+ossimCodecBase* ossimNitfCodecFactory::createCodec(ossimRefPtr<ossimNitfImageHeader> imageHeader)
+{
+ ossimCodecBase* result=0;
+
+ if(imageHeader.valid()&&imageHeader->isCompressed())
+ {
+ ossimKeywordlist kwl;
+
+ imageHeader->saveState(kwl);
+ // rename the type to be a NITF IC compression type
+ // J2K should be C8
+ //
+ kwl.add("type", imageHeader->getCompressionCode().c_str(), true);
+ result = ossimCodecFactoryRegistry::instance()->createCodec(kwl);
+ }
+
+ return result;
+}
=====================================
src/imaging/ossimScaleFilter.cpp
=====================================
--- a/src/imaging/ossimScaleFilter.cpp
+++ b/src/imaging/ossimScaleFilter.cpp
@@ -251,10 +251,6 @@ ossimIrect ossimScaleFilter::getBoundingRect(ossim_uint32 resLevel)const
if(!result.hasNans())
{
- result = ossimIrect(result.ul().x,
- result.ul().y,
- result.lr().x+1,
- result.lr().y+1);
result *= m_ScaleFactor;
}
=====================================
src/util/ossimImageUtil.cpp
=====================================
--- a/src/util/ossimImageUtil.cpp
+++ b/src/util/ossimImageUtil.cpp
@@ -52,6 +52,16 @@
#include <ossim/projection/ossimProjectionFactoryRegistry.h>
#include <ossim/support_data/ossimSupportFilesList.h>
#include <ossim/util/ossimFileWalker.h>
+#include <ossim/imaging/ossimBandSelector.h>
+#include <ossim/imaging/ossimImageHistogramSource.h>
+#include <ossim/imaging/ossimImageSourceFactoryRegistry.h>
+#include <ossim/imaging/ossimImageRenderer.h>
+#include <ossim/imaging/ossimScaleFilter.h>
+#include <ossim/imaging/ossimImageWriterFactoryRegistry.h>
+#include <ossim/imaging/ossimHistogramRemapper.h>
+#include <ossim/imaging/ossimScalarRemapper.h>
+#include <ossim/imaging/ossimRectangleCutFilter.h>
+#include <ossim/projection/ossimImageViewAffineTransform.h>
#include <cstdlib>
#include <iomanip>
@@ -66,6 +76,7 @@ static std::string CREATE_HISTOGRAM_KW = "create_histogram";
static std::string CREATE_HISTOGRAM_FAST_KW = "create_histogram_fast";
static std::string CREATE_HISTOGRAM_R0_KW = "create_histogram_r0";
static std::string CREATE_OVERVIEWS_KW = "create_overviews";
+static std::string CREATE_THUMBNAILS_KW = "create_thumbnails";
static std::string DUMP_FILTERED_IMAGES_KW = "dump_filter_image";
static std::string FALSE_KW = "false";
static std::string FILE_KW = "file";
@@ -81,6 +92,9 @@ static std::string REBUILD_OVERVIEWS_KW = "rebuild_overviews";
static std::string SCAN_MIN_MAX_KW = "scan_for_min_max";
static std::string SCAN_MIN_MAX_NULL_KW = "scan_for_min_max_null";
static std::string THREADS_KW = "threads";
+static std::string THUMBNAIL_SIZE_KW = "thumbnail_size";
+static std::string THUMBNAIL_STRETCH_TYPE_KW = "thumbnail_stretch_type";
+static std::string THUMBNAIL_TYPE_KW = "thumbnail_type";
static std::string TILE_SIZE_KW = "tile_size";
static std::string TRUE_KW = "true";
static std::string WRITER_PROP_KW = "writer_prop";
@@ -115,9 +129,12 @@ void ossimImageUtil::addOptions(ossimApplicationUsage* au)
au->addCommandLineOption("-a or --include-fullres", "Copy full res dataset to overview file as well as building reduced res sets. Option only valid with tiff overview builder. Requires -o option.");
au->addCommandLineOption("--ch or --create-histogram", "Computes full histogram alongside overview.");
-
+
au->addCommandLineOption("--chf or --create-histogram-fast", "Computes a histogram in fast mode which samples partial tiles.");
-
+ au->addCommandLineOption("--ct or --create-thumbnail", "computes a thumbnail of the image");
+ au->addCommandLineOption("--tt or --thumbnail-type", "Can be of of values png or jpeg");
+ au->addCommandLineOption("--tst or --thumbnail-stretch-type", "Can be of values none,auto-minmax,auto-percentile,std-stretch-1,std-stretch-2,std-stretch-3");
+
au->addCommandLineOption("--compression-quality", "Compression quality for TIFF JPEG takes values from 0 to 100, where 100 is best. For J2K plugin, numerically_lossless, visually_lossless, lossy");
au->addCommandLineOption("--compute-min-max", "Turns on min, max scanning when reading tiles and writes a dot omd file. This option assumes the null is known.");
@@ -261,7 +278,7 @@ bool ossimImageUtil::initialize(ossimArgumentParser& ap)
break;
}
}
-
+
if( ap.read("--compute-min-max") )
{
setScanForMinMax( true );
@@ -371,17 +388,41 @@ bool ossimImageUtil::initialize(ossimArgumentParser& ap)
break;
}
}
-
- if( ap.read("-o") )
+
+ if (ap.read("-o"))
{
- setCreateOverviewsFlag( true );
- if ( ap.argc() < 2 )
+ setCreateOverviewsFlag(true);
+ if (ap.argc() < 2)
{
break;
}
- }
-
- if( ap.read("--ot", sp1) )
+ }
+ if (ap.read("--ct"))
+ {
+ setCreateThumbnailsFlag(true);
+ if (ap.argc() < 2)
+ {
+ break;
+ }
+ }
+ if (ap.read("--tt", sp1) || ap.read("--thumbnail-type", sp1))
+ {
+ setThumbnailType(ts1);
+ if (ap.argc() < 2)
+ {
+ break;
+ }
+ }
+ if (ap.read("--tst", sp1) || ap.read("--thumbnail-stretch-type", sp1))
+ {
+ setThumbnailStretchType(ts1);
+ if (ap.argc() < 2)
+ {
+ break;
+ }
+ }
+
+ if (ap.read("--ot", sp1))
{
setOverviewType( ts1 );
if ( ap.argc() < 2 )
@@ -712,7 +753,19 @@ void ossimImageUtil::processFile(const ossimFilename& file)
createOverview(ih, consumedHistogramOptions, consumedCmmOptions);
}
}
-
+ if(createThumbnails())
+ {
+ for(ossim_uint32 idx = 0; idx < ih->getNumberOfEntries();++idx)
+ {
+ ih->setCurrentEntry(idx);
+ if(ih->getNumberOfDecimationLevels() <=1)
+ {
+ ih->getState()->setOverviewState(0);
+ ih->openOverview();
+ }
+ }
+ createThumbnail(ih);
+ }
// Build stand alone histogram. Note the overview sequencer may have computed for us.
if ( hasHistogramOption() && !consumedHistogramOptions)
{
@@ -952,7 +1005,103 @@ void ossimImageUtil::createOverview(ossimRefPtr<ossimImageHandler>& ih,
ossimNotify(ossimNotifyLevel_DEBUG) << M << " exited...\n";
}
}
-
+void ossimImageUtil::createThumbnail(ossimRefPtr<ossimImageHandler> &ih)
+{
+ ossimKeywordlist bandsKeywordList;
+ bandsKeywordList.add("type", "ossimBandSelector");
+ bandsKeywordList.add(ossimKeywordNames::BANDS_KW, "default");
+ ossimRefPtr<ossimImageSource> bs = ossimImageSourceFactoryRegistry::instance()->createImageSource(bandsKeywordList);
+ if (!bs)
+ return;
+ ossimIrect cutRect;
+ ossimRefPtr<ossimImageRenderer> renderer = new ossimImageRenderer();
+ ossimRefPtr<ossimScalarRemapper> scalarRemapper = new ossimScalarRemapper();
+ ossimRefPtr<ossimRectangleCutFilter> cutFilter = new ossimRectangleCutFilter();
+ ossimRefPtr<ossimImageViewAffineTransform> trans = new ossimImageViewAffineTransform();
+ ossimDrect bounds = ih->getBoundingRect();
+ ossim_float64 maxSize = ossim::max(bounds.width(), bounds.height());
+ ossim_float64 thumbnailSize = getThumbnailSize();
+ ossim_float64 scale = thumbnailSize / maxSize;
+ ossimFilename thumbnailFilename = getThumbnailFilename(ih.get());
+ ossimHistogramRemapper::StretchMode thumbnailStretchType = static_cast<ossimHistogramRemapper::StretchMode> (getThumbnailStretchType());
+ if (scale > 1.0)
+ {
+ scale = 1.0;
+ cutRect = bounds;
+ }
+ else
+ {
+ cutRect = bounds * scale;
+ }
+ cutFilter->setRectangle(cutRect);
+ if ((scale < .5) && (ih->getNumberOfDecimationLevels() < 2))
+ {
+ return;
+ }
+
+ trans->scale(scale, scale);
+ renderer->setImageViewTransform(trans.get());
+ if (!bs.valid())
+ return;
+ bs->connectMyInputTo(ih.get());
+ bs->initialize();
+ ossim_uint32 bandCount = bs->getNumberOfInputBands();
+ if ((bandCount == 2) || (bandCount > 3))
+ {
+ ossimBandSelector *tempBs = dynamic_cast<ossimBandSelector *>(bs.get());
+ if (tempBs)
+ {
+ tempBs->setThreeBandRgb();
+ }
+ }
+
+ ossimRefPtr<ossimHistogramRemapper> stretch = new ossimHistogramRemapper();
+ stretch->setStretchMode(thumbnailStretchType);
+ ossimFilename histogramFilename = ih->createDefaultHistogramFilename();
+
+ //if (!histogramFilename.empty())
+ //{
+ // histogramFile = m_histogramFilename;
+ // }
+ stretch->connectMyInputTo(bs.get());
+ stretch->openHistogram(histogramFilename);
+ renderer->connectMyInputTo(stretch.get());
+
+ scalarRemapper->connectMyInputTo(renderer.get());
+ cutFilter->connectMyInputTo(scalarRemapper.get());
+ ossimKeywordlist writerKwl;
+ ossimString ext = thumbnailFilename.ext();
+ ext = ext.downcase();
+ writerKwl.add("type", "image/" + ext);
+ writerKwl.add("filename", thumbnailFilename.c_str());
+ writerKwl.add("create_external_geometry", "false");
+ if (ext == "png")
+ {
+ writerKwl.add("add_alpha_channel", "true");
+ }
+ ossimRefPtr<ossimImageFileWriter> writer = ossimImageWriterFactoryRegistry::instance()->createWriter(writerKwl);
+
+ if (writer)
+ {
+ writer->connectMyInputTo(cutFilter.get());
+
+ writer->execute();
+
+ writer->disconnect();
+ writer = 0;
+ }
+ scalarRemapper->disconnect();
+ scalarRemapper = 0;
+ cutFilter->disconnect();
+ cutFilter = 0;
+ renderer->disconnect();
+ renderer = 0;
+ stretch->disconnect();
+ stretch = 0;
+ bs->disconnect();
+ bs = 0;
+}
+
bool ossimImageUtil::hasRequiredOverview( ossimRefPtr<ossimImageHandler>& ih,
ossimRefPtr<ossimOverviewBuilderBase>& ob )
{
@@ -1512,6 +1661,15 @@ bool ossimImageUtil::createOverviews() const
{
return keyIsTrue( CREATE_OVERVIEWS_KW );
}
+void ossimImageUtil::setCreateThumbnailsFlag(bool flag)
+{
+ addOption(CREATE_THUMBNAILS_KW, (flag ? TRUE_KW : FALSE_KW));
+}
+
+bool ossimImageUtil::createThumbnails() const
+{
+ return keyIsTrue(CREATE_THUMBNAILS_KW);
+}
void ossimImageUtil::setRebuildOverviewsFlag( bool flag )
{
@@ -1924,10 +2082,106 @@ ossim_uint32 ossimImageUtil::getNextReaderPropIndex() const
}
return result;
}
+ossim_uint32 ossimImageUtil::getThumbnailSize() const
+{
+ ossim_uint32 result;
+ std::string lookup = m_kwl->findKey(THUMBNAIL_SIZE_KW);
+ if (lookup.size())
+ {
+ result = ossimString(lookup).toUInt32();
+ }
+ else
+ {
+ result = 256;
+ }
+ return result;
+}
+void ossimImageUtil::setThumbnailStretchType(const std::string &value)
+{
+ addOption(THUMBNAIL_STRETCH_TYPE_KW, value);
+}
+
+int ossimImageUtil::getThumbnailStretchType()const
+{
+ int result = ossimHistogramRemapper::LINEAR_AUTO_MIN_MAX;
+
+ ossimString typeString = m_kwl->findKey(THUMBNAIL_STRETCH_TYPE_KW);
+
+ if (typeString.empty())
+ {
+ typeString = "auto-minmax";
+ }
+
+ typeString = typeString.downcase();
+
+ if ((typeString == "auto-minmax"))
+ {
+ result = ossimHistogramRemapper::StretchMode::LINEAR_AUTO_MIN_MAX;
+ }
+ else if ((typeString == "auto-percentile"))
+ {
+ result = ossimHistogramRemapper::StretchMode::LINEAR_AUTO_PERCENTILE;
+ }
+ else if ((typeString == "std-stretch-1") || (typeString == "std-stretch 1"))
+ {
+ result = ossimHistogramRemapper::StretchMode::LINEAR_1STD_FROM_MEAN;
+ }
+ else if ((typeString == "std-stretch-2") || (typeString == "std-stretch 2"))
+ {
+ result = ossimHistogramRemapper::StretchMode::LINEAR_2STD_FROM_MEAN;
+ }
+ else if ((typeString == "std-stretch-3") || (typeString == "std-stretch 3"))
+ {
+ result = ossimHistogramRemapper::StretchMode::LINEAR_3STD_FROM_MEAN;
+ }
+ else if (typeString == "auto-minmax")
+ {
+ result = ossimHistogramRemapper::StretchMode::STRETCH_UNKNOWN;
+ }
+ return result;
+}
+
+void ossimImageUtil::setThumbnailType(const std::string& value)
+{
+ addOption(THUMBNAIL_TYPE_KW, value);
+}
+
+std::string ossimImageUtil::getThumbnailType() const
+{
+ ossimString typeString = m_kwl->findKey(THUMBNAIL_TYPE_KW);
+ std::string result = "jpeg";
+
+ typeString = typeString.downcase();
+
+ if(typeString != "png" && typeString != "jpeg")
+ {
+ typeString = "jpeg";
+ }
+
+ result = typeString.string();
+
+ return result;
+}
+
+std::string ossimImageUtil::getThumbnailFilename(ossimImageHandler* ih) const
+{
+ ossimFilename thumbnailFilename = ih->getFilenameWithThisExtension("");
+ std::string thumbnailType = getThumbnailType();
+ if (thumbnailType == "png")
+ {
+ thumbnailFilename = ossimFilename(thumbnailFilename + "thumb.png");
+ }
+ else
+ {
+ thumbnailFilename = ossimFilename(thumbnailFilename + "thumb.jpg");
+ }
+
+ return thumbnailFilename.string();
+}
-void ossimImageUtil::addOption( const std::string& key, ossim_uint32 value )
+void ossimImageUtil::addOption(const std::string &key, ossim_uint32 value)
{
- addOption( key, ossimString::toString( value ).string() );
+ addOption(key, ossimString::toString(value).string());
}
void ossimImageUtil::addOption( const std::string& key, const std::string& value )
=====================================
test/src/ossim-foo.cpp
=====================================
--- a/test/src/ossim-foo.cpp
+++ b/test/src/ossim-foo.cpp
@@ -86,6 +86,7 @@
#include <ossim/projection/ossimUtmProjection.h>
#include <ossim/support_data/ossimSrcRecord.h>
+#include <ossim/support_data/ossimNitfFile.h>
#include <ossim/support_data/ossimWkt.h>
#include <ossim/base/Barrier.h>
@@ -93,10 +94,12 @@
#include <ossim/base/Thread.h>
#include <ossim/support_data/TiffHandlerState.h>
#include <ossim/support_data/ImageHandlerStateRegistry.h>
+#include <ossim/imaging/ossimNitfCodecFactory.h>
+#include <ossim/projection/ossimNitfRpcModel.h>
+#include <ossim/projection/ossimQuickbirdRpcModel.h>
+#include <ossim/imaging/ossimNitfCodecFactory.h>
// Put your includes here:
-#include<ossim/projection/ossimNitfRpcModel.h>
-#include<ossim/projection/ossimQuickbirdRpcModel.h>
int main(int argc, char *argv[])
{
@@ -110,54 +113,24 @@ int main(int argc, char *argv[])
try
{
- ossimImageHandlerRegistry* handlerReg = ossimImageHandlerRegistry::instance();
- ossimProjectionFactoryRegistry* projReg = ossimProjectionFactoryRegistry::instance();
+ ossimRefPtr<ossimNitfFile> file = new ossimNitfFile();
- // Open the image and fetch the geometry via the plugin:
- ossimRefPtr<ossimImageHandler> pluginHandler = handlerReg->open(fname, true, false);
- ossimRefPtr<ossimImageGeometry> pluginGeom = pluginHandler->getImageGeometry();
- cout<<"pluginGeom's projection: "<<pluginGeom->getProjection()->getClassName()<<endl;
- // NITF:
- ossimRefPtr<ossimNitfRpcModel> nitfProj = new ossimNitfRpcModel(fname);
- ossimRefPtr<ossimImageGeometry> nitfGeom = new ossimImageGeometry(0, nitfProj.get());
- cout<<"NITF projection: "<<nitfProj->getClassName()<<endl;
-
- // QB:
- ossimRefPtr<ossimQuickbirdRpcModel> dgqbProj = new ossimQuickbirdRpcModel();
- dgqbProj->parseFile(fname);
- ossimRefPtr<ossimImageGeometry> dgqbGeom = new ossimImageGeometry(0, dgqbProj.get());
- cout<<"DG/QB projection: "<<dgqbProj->getClassName()<<endl;
-
- // Establish even image point distribution:
- ossimIrect imageRect;
- pluginGeom->getBoundingRect(imageRect);
- int dx = (imageRect.width()-1)/2;
- int dy = (imageRect.height()-1)/2;
- ossimGpt pluginGpt, nitfGpt, dgqbGpt;
- ossimDpt ip0;
- double nitfDist, dgqbDist;
-
- // Compute residual error between models:
- for (int Y=0; Y<3; Y++)
+ if(file->parseFile(ossimFilename(argv[1])))
{
- ip0.y = dy*Y;
- for (int X=0; X<3; X++)
+ ossimRefPtr<ossimNitfImageHeader> imageHeader = file->getNewImageHeader(0);
+
+ if(imageHeader.valid())
{
- ip0.x = dx*X;
- pluginGeom->localToWorld(ip0, 0, pluginGpt);
-
- nitfGeom->localToWorld(ip0, 0, nitfGpt);
- nitfDist = pluginGpt.distanceTo(nitfGpt);
-
- dgqbGeom->localToWorld(ip0, 0, dgqbGpt);
- dgqbDist = pluginGpt.distanceTo(dgqbGpt);
-
- cout <<"\nGround residuals for image point "<<ip0<<":"
- <<"\n NITF: "<<nitfDist<<" m"
- <<"\n DGQB: "<<dgqbDist<<" m"<<endl;
+ ossimRefPtr<ossimCodecBase> codec = ossimNitfCodecFactory::instance()->createCodec(imageHeader);
+ if(codec.valid())
+ {
+ std::cout << "WE WERE ABLE TO ALLOCATE A CODEC!!!!!!\n";
+ }
}
}
+
+
}
catch(const ossimException& e)
{
View it on GitLab: https://salsa.debian.org/debian-gis-team/ossim/commit/82efad2adad3299342b6a068794b0cf649ea0196
---
View it on GitLab: https://salsa.debian.org/debian-gis-team/ossim/commit/82efad2adad3299342b6a068794b0cf649ea0196
You're receiving this email because of your account on salsa.debian.org.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.alioth.debian.org/pipermail/pkg-grass-devel/attachments/20180405/f8e13fc1/attachment-0001.html>
More information about the Pkg-grass-devel
mailing list