26 #include "../geometry/MultiPoint.h" 
   27 #include "../geometry/Point.h" 
   28 #include "../geometry/Polygon.h" 
   29 #include "../geometry/Envelope.h" 
   30 #include "../geometry/GTFactory.h" 
   31 #include "../geometry/GTFilter.h" 
   32 #include "../memory/CachedRaster.h" 
   33 #include "../raster/Grid.h" 
   34 #include "../common/progress/TaskProgress.h" 
   42 #include <boost/lexical_cast.hpp> 
   68       m_inRasterBands2Process.clear();
 
   69       m_inRasterTPLocationBands.clear();
 
   70       m_referenceRastersPtr = 0;
 
   71       m_referenceRastersWeights.clear();
 
   72       m_referenceTPLocationBands.clear();
 
   73       m_enableMultiThread = 
true;
 
   74       m_enableProgress = 
false;
 
   76       m_locatorParams.reset();
 
   77       m_minInRasterCoveredAreaPercent = 25.0;
 
   78       m_minrReferenceRasterCoveredAreaPercent = 50.0;
 
   79       m_minrReferenceRasterRequiredTiePointsFactor = 1.5;
 
   80       m_inRasterSubSectorsFactor = 3;
 
   81       m_inRasterExpectedRowError = 10;
 
   82       m_inRasterExpectedColError = 10;
 
   83       m_inRasterExpectedRowDisplacement = 0;
 
   84       m_inRasterExpectedColDisplacement = 0;
 
   85       m_processAllReferenceRasters = 
true;
 
   86       m_enableRasterCache = 
true;
 
   87       m_geomTransfName = 
"Affine";
 
   88       m_geomTransfMaxTiePointError = 2.0;
 
   89       m_outliersRemotionAssurance = 0.75;
 
   90       m_outliersRemotionMaxIterations = 0;
 
   91       m_outputNoDataValue = 0.0;
 
  153       m_inRasterCoveredAreaPercent = 0.0;
 
  156       m_outputRasterPtr.reset();
 
  157       m_matchingResult.clear();
 
  158       m_geomTransPtr.reset();
 
  194       throw( te::rp::Exception )
 
  219       std::auto_ptr< te::common::TaskProgress > progressPtr;
 
  224         progressPtr->setTotalSteps( 
 
  227         progressPtr->setMessage( 
"Analysing reference images" );
 
  236       std::auto_ptr< te::mem::CachedRaster > inputCachedRasterPtr;
 
  242         inputRasterPtr = inputCachedRasterPtr.get();
 
  247       std::vector< std::vector< unsigned int > > refRastersIndexesBySector( 
 
  250       unsigned int validReferenceRastersNumber = 0;
 
  255         std::vector< double > referenceRastersWeights;
 
  278           inRasterExpectedXError + inRasterExpectedXDisplacement;
 
  280           inRasterExpectedXError + inRasterExpectedXDisplacement;
 
  283           inRasterExpectedYError + inRasterExpectedYDisplacement;
 
  285           inRasterExpectedYError + inRasterExpectedYDisplacement;          
 
  289         std::vector< te::gm::Envelope > selectedRefRastersBBoxes;
 
  290         std::vector< unsigned int > selectedRefRastersIndexes;
 
  308                  ( refRasterEnvelope.getLowerLeftX() > searchAreaMinX )
 
  309               && ( refRasterEnvelope.getLowerLeftX() < searchAreaMaxX )   
 
  310               && ( refRasterEnvelope.getUpperRightX() > searchAreaMinX )
 
  311               && ( refRasterEnvelope.getUpperRightX() < searchAreaMaxX )   
 
  312               && ( refRasterEnvelope.getLowerLeftY() > searchAreaMinY )
 
  313               && ( refRasterEnvelope.getLowerLeftY() < searchAreaMaxY )
 
  314               && ( refRasterEnvelope.getUpperRightY() > searchAreaMinY )
 
  315               && ( refRasterEnvelope.getUpperRightY() < searchAreaMaxY )              
 
  318             selectedRefRastersBBoxes.push_back( refRasterEnvelope );
 
  319             selectedRefRastersIndexes.push_back( 
 
  321             ++validReferenceRastersNumber;
 
  332             progressPtr->pulse();
 
  333             if( ! progressPtr->isActive() ) 
return false;
 
  339         double sectoXSize = ( searchAreaMaxX - searchAreaMinX ) / 
 
  341         double sectoYSize = ( searchAreaMaxY - searchAreaMinY ) / 
 
  345         unsigned int sectoXOff = 0;
 
  346         unsigned int sectoYOff = 0;
 
  347         unsigned int refRastersIndexesBySectorIdx = 0;
 
  349         for( 
unsigned int selectedRefRastersBBoxesIdx = 0 ; selectedRefRastersBBoxesIdx < 
 
  350           selectedRefRastersBBoxes.size() ; ++selectedRefRastersBBoxesIdx )
 
  352           center = selectedRefRastersBBoxes[ selectedRefRastersBBoxesIdx ].getCenter();
 
  353           sectoXOff = (
unsigned int)std::floor( ( center.
x - searchAreaMinX ) / sectoXSize );
 
  354           sectoYOff = (
unsigned int)std::floor( ( center.
y - searchAreaMinY ) / sectoYSize );
 
  358           assert( refRastersIndexesBySectorIdx < refRastersIndexesBySector.size() );
 
  360           refRastersIndexesBySector[ refRastersIndexesBySectorIdx ].push_back(
 
  361             selectedRefRastersIndexes[ selectedRefRastersBBoxesIdx ] );
 
  367         unsigned int sectorRastersIndexesIdx = 0;
 
  368         unsigned int sectorRastersIndexesIdxBound = 0;
 
  369         unsigned int sectorRastersIndexesNextIdx = 0;
 
  370         unsigned int rasterIdx = 0;
 
  371         unsigned int nextRasterIdx = 0;
 
  373         for( refRastersIndexesBySectorIdx = 0 ; refRastersIndexesBySectorIdx <
 
  374           refRastersIndexesBySector.size() ; ++refRastersIndexesBySectorIdx )
 
  376           std::vector< unsigned int >& sectorRastersIndexes = 
 
  377             refRastersIndexesBySector[ refRastersIndexesBySectorIdx ];
 
  379           if( sectorRastersIndexes.size() > 1 )  
 
  381             sectorRastersIndexesIdxBound = sectorRastersIndexes.size() - 1;
 
  383             while( sectorRastersIndexesIdxBound != 0 )
 
  385               for( sectorRastersIndexesIdx = 0 ; sectorRastersIndexesIdx <
 
  386                 sectorRastersIndexesIdxBound  ; ++sectorRastersIndexesIdx )
 
  388                 sectorRastersIndexesNextIdx = sectorRastersIndexesIdx + 1;
 
  390                 rasterIdx = sectorRastersIndexes[ sectorRastersIndexesIdx ];
 
  391                 nextRasterIdx = sectorRastersIndexes[ sectorRastersIndexesNextIdx ];
 
  394                     referenceRastersWeights[ rasterIdx ]  
 
  396                     referenceRastersWeights[ nextRasterIdx ]  
 
  399                   sectorRastersIndexes[ sectorRastersIndexesIdx ] = nextRasterIdx;
 
  400                   sectorRastersIndexes[ sectorRastersIndexesNextIdx ] = rasterIdx;
 
  404               --sectorRastersIndexesIdxBound;
 
  417         progressPtr->setTotalSteps( validReferenceRastersNumber );
 
  419         progressPtr->setMessage( 
"Matching reference images" );
 
  428       const unsigned int minimumRequiredTiePointsNumber = (
unsigned int)
 
  432           ((
double)outParamsPtr->
m_geomTransPtr->getMinRequiredTiePoints() )
 
  436       std::vector< InternalMatchingInfo > refRastersMatchingInfo;    
 
  438       bool continueOnLoop = 
true;
 
  440       while( continueOnLoop )
 
  442         bool aRefRasterWasProcessed = 
false;
 
  444         for( 
unsigned int refRastersIndexesBySectorIdx = 0 ; refRastersIndexesBySectorIdx <
 
  445           refRastersIndexesBySector.size() ; ++refRastersIndexesBySectorIdx )
 
  447           std::vector< unsigned int >& sector = 
 
  448             refRastersIndexesBySector[ refRastersIndexesBySectorIdx ];
 
  450           for( 
unsigned int sectorIdx = 0 ; sectorIdx < sector.size() ; ++sectorIdx )
 
  452             const unsigned int refRasterIdx = sector[ sectorIdx ];
 
  454             if( refRasterIdx < m_inputParameters.m_referenceRastersPtr->getObjsCount() )
 
  458               sector[ sectorIdx ] = std::numeric_limits< unsigned int >::max();       
 
  460               aRefRasterWasProcessed = 
true; 
 
  465                 "Rasters feeder mover error" ); 
 
  475               std::auto_ptr< te::rst::Raster > reprojectedRefRasterPtr;
 
  477               if( inputRasterPtr->
getSRID() != refRasterPtr->getSRID() )
 
  479                 std::map< std::string, std::string > rInfo;
 
  480                 rInfo[ 
"FORCE_MEM_DRIVER" ] = 
"TRUE";
 
  482                 reprojectedRefRasterPtr.reset( refRasterPtr->transform( 
 
  486                   "Raster reprojection error" );
 
  488                 refRasterPtr = reprojectedRefRasterPtr.get();
 
  496               const double searchAreaULX = refRasterPtr->getGrid()->getExtent()->getLowerLeftX();
 
  497               const double searchAreaULY = refRasterPtr->getGrid()->getExtent()->getUpperRightY();
 
  501               double searchAreaULRow = 0;
 
  502               double searchAreaULCol = 0;
 
  503               inputRasterPtr->
getGrid()->
geoToGrid( searchAreaULX, searchAreaULY, searchAreaULCol, searchAreaULRow );
 
  505               double searchAreaLRRow = searchAreaULRow - 1.0 + ((double)refRasterPtr->getNumberOfRows());
 
  506               double searchAreaLRCol = searchAreaULCol - 1.0 + ((double)refRasterPtr->getNumberOfColumns());
 
  510               searchAreaULRow = std::max( 0.0, searchAreaULRow );
 
  511               searchAreaULRow = std::min( searchAreaULRow, (
double)( inputRasterPtr->
getNumberOfRows() - 1 ) );              
 
  515               searchAreaLRRow = std::max( 0.0, searchAreaLRRow );
 
  516               searchAreaLRRow = std::min( searchAreaLRRow, (
double)( inputRasterPtr->
getNumberOfRows() - 1 ) );              
 
  520               searchAreaULCol = std::max( 0.0, searchAreaULCol );
 
  521               searchAreaULCol = std::min( searchAreaULCol, (
double)( inputRasterPtr->
getNumberOfColumns() - 1 ) );  
 
  525               searchAreaLRCol = std::max( 0.0, searchAreaLRCol );
 
  526               searchAreaLRCol = std::min( searchAreaLRCol, (
double)( inputRasterPtr->
getNumberOfColumns() - 1 ) ); 
 
  528               const unsigned int searchAreaWidth = (
unsigned int)( searchAreaLRCol - searchAreaULCol + 1.0 );
 
  529               const unsigned int searchAreaHeight = (
unsigned int)( searchAreaLRRow - searchAreaULRow + 1.0 );
 
  531               if( ( searchAreaWidth > 1 ) && ( searchAreaHeight > 1 ) )
 
  533                 outParamsPtr->
m_matchingResult[ refRasterIdx ].m_searchAreaRowStart = (
unsigned int)
 
  535                 outParamsPtr->
m_matchingResult[ refRasterIdx ].m_searchAreaColStart = (
unsigned int)
 
  565                   refRasterPtr->getResolutionX();
 
  567                   refRasterPtr->getResolutionY();
 
  576                 if( locator.
initialize( locatorInputParams ) )
 
  580                   if( locator.
execute( locatorOutputParams ) )
 
  588                           minimumRequiredTiePointsNumber
 
  592                       const double convexHullAreaPercent =
 
  598                             refRasterPtr->getNumberOfColumns()
 
  600                             refRasterPtr->getNumberOfRows()
 
  604                       if( ( 100.0 * convexHullAreaPercent ) >=
 
  612                         for( 
unsigned int tpIdx = 0 ; tpIdx < locatorOutputParams.
m_tiePoints.size() ;
 
  615                           tiePoint.first.x = locatorOutputParams.
m_tiePoints[ tpIdx ].first.x;
 
  616                           tiePoint.first.y = locatorOutputParams.
m_tiePoints[ tpIdx ].first.y;
 
  618                           refRasterPtr->getGrid()->gridToGeo( 
 
  629                         refRastersMatchingInfo.push_back( matchingInfo );
 
  637                         for( 
unsigned int tpIdx = 0 ; tpIdx < locatorOutputParams.
m_tiePoints.size() ;
 
  640                           tiePoint.first.x = locatorOutputParams.
m_tiePoints[ tpIdx ].first.x;
 
  641                           tiePoint.first.y = locatorOutputParams.
m_tiePoints[ tpIdx ].first.y;
 
  643                           refRasterPtr->getGrid()->gridToGeo( 
 
  660                         0.0, 0.0, ulCol, ulRow );
 
  665                         (
double)( refRasterPtr->getNumberOfColumns() - 1 ), 
 
  666                         (
double)( refRasterPtr->getNumberOfRows() - 1 ), lrCol, lrRow );                      
 
  669                         (
unsigned int)std::min( ulRow, lrRow );
 
  671                         (
unsigned int)std::min( ulCol, lrCol );                        
 
  674                         (
unsigned int)std::abs( lrCol - ulCol );
 
  676                         (
unsigned int)std::abs( lrRow - ulRow );                      
 
  706               sectorIdx = sector.size();                               
 
  718                   refRastersIndexesBySectorIdx = refRastersIndexesBySector.size();
 
  719                   continueOnLoop = 
false;
 
  727                 progressPtr->pulse();
 
  728                 if( ! progressPtr->isActive() ) 
return false;
 
  734         if( ! aRefRasterWasProcessed )
 
  736           continueOnLoop = 
false;
 
  779       if( ! registerInstance.
initialize( regInParams ) )
 
  784       if( ! registerInstance.
execute( regOutParams ) )
 
  801       throw( te::rp::Exception )
 
  814          "Invalid raster pointer" );
 
  822       for( 
unsigned int inRasterBands2ProcessIdx = 0 ; inRasterBands2ProcessIdx <
 
  824         ++inRasterBands2ProcessIdx )
 
  828           "Invalid raster bands" ); 
 
  831       for( 
unsigned int inRasterTPLocationBandsIdx = 0 ; inRasterTPLocationBandsIdx <
 
  833         ++inRasterTPLocationBandsIdx )
 
  837           "Invalid raster bands" ); 
 
  843         "Invalid reference rasters feeder pointer" )
 
  847         "Invalid number of reference rasters" )
 
  855         "Invalid reference rasters weights" );
 
  862         "Invalid parameter m_minRasterCoveredAreaPercent" );
 
  867         "Invalid parameter m_minrReferenceRasterCoveredAreaPercent" );   
 
  871         "Invalid parameter m_minrReferenceRasterRequiredTiePointsFactor" );           
 
  875         "Invalid parameter m_rasterSubSectorsFactor" );           
 
  879         "Invalid parameter m_inRasterRowMaxError" );           
 
  883         "Invalid parameter m_inRasterColMaxError" );        
 
  896       const std::vector< InternalMatchingInfo >& inTiePoints,
 
  897       std::vector< te::gm::GTParameters::TiePoint >& outTiePoints,
 
  898       std::vector< double >& outTiePointsWeights )
 const 
  900       outTiePoints.clear();
 
  901       outTiePointsWeights.clear();
 
  905       std::auto_ptr< te::gm::GeometricTransformation > baseGeometricTransformPtr(
 
  909       const unsigned int minimumRequiredTiePointsNumber = (
unsigned int)
 
  913           ((
double)baseGeometricTransformPtr->getMinRequiredTiePoints() )
 
  916       double referenceImagesWeightsMin =  std::numeric_limits< double >::max();
 
  917       double referenceImagesWeightsMax = -1.0 * referenceImagesWeightsMin;      
 
  918       unsigned int inTiePointsIdx = 0;
 
  919       unsigned int mInfoTiePointsIdx = 0;
 
  920       double minTPNumberByRefRaster = std::numeric_limits< double >::max();
 
  921       double maxTPNumberByRefRaster = -1.0 * minTPNumberByRefRaster;
 
  922       double minConvexHullAreaPercentByRefRaster = std::numeric_limits< double >::max();
 
  923       double maxConvexHullAreaPercentByRefRaster = -1.0 * minConvexHullAreaPercentByRefRaster;
 
  924       double realTiePointsNumber = 0;
 
  926       for( inTiePointsIdx = 0 ; inTiePointsIdx < inTiePoints.size() ; ++inTiePointsIdx )
 
  930         realTiePointsNumber = (double)( mInfo.
m_tiePoints.size() - minimumRequiredTiePointsNumber );
 
  932         if( minTPNumberByRefRaster > realTiePointsNumber )
 
  934           minTPNumberByRefRaster = realTiePointsNumber;
 
  937         if( maxTPNumberByRefRaster < realTiePointsNumber )
 
  939           maxTPNumberByRefRaster = realTiePointsNumber;
 
  954           if( referenceImagesWeightsMin > 
 
  957             referenceImagesWeightsMin = 
 
  961           if( referenceImagesWeightsMax < 
 
  964             referenceImagesWeightsMax = 
 
  971       const double convexHullAreaPercentGain = ( maxConvexHullAreaPercentByRefRaster == 
 
  972         minConvexHullAreaPercentByRefRaster ) ? 0.0 :
 
  973         1.0 / ( maxConvexHullAreaPercentByRefRaster - minConvexHullAreaPercentByRefRaster );
 
  974       const double convexHullAreaPercentOffset = (convexHullAreaPercentGain == 0.0 ) ? 
 
  975         1.0 : -1.0 * minConvexHullAreaPercentByRefRaster;
 
  976       const double tiePointsNumberGain = ( maxTPNumberByRefRaster == 
 
  977         minTPNumberByRefRaster ) ? 0.0 :
 
  978         1.0 / ( maxTPNumberByRefRaster - minTPNumberByRefRaster );
 
  979       const double tiePointsNumberOffset = ( tiePointsNumberGain == 0.0 ) ? 1.0 : -1.0 * minTPNumberByRefRaster;      
 
  981       double referenceImagesWeightsGain = 0.0;
 
  982       double referenceImagesWeightsOffset = 0.0;
 
  985         referenceImagesWeightsGain = ( referenceImagesWeightsMax == 
 
  986           referenceImagesWeightsMin ) ? 0.0 :
 
  987           1.0 / ( referenceImagesWeightsMax - referenceImagesWeightsMin );
 
  988         referenceImagesWeightsOffset = (referenceImagesWeightsGain == 0.0 ) ? 
 
  989           1.0 : -1.0 * referenceImagesWeightsMin;
 
  992       for( inTiePointsIdx = 0 ; inTiePointsIdx < inTiePoints.size() ; ++inTiePointsIdx )
 
  996         realTiePointsNumber = (double)( mInfo.
m_tiePoints.size() - minimumRequiredTiePointsNumber );
 
 1003               convexHullAreaPercentGain
 
 1007               ( realTiePointsNumber + tiePointsNumberOffset )
 
 1023                   referenceImagesWeightsOffset
 
 1026                 referenceImagesWeightsGain
 
 1033         for( mInfoTiePointsIdx = 0 ; mInfoTiePointsIdx < mInfo.
m_tiePoints.size() ; 
 
 1034           ++mInfoTiePointsIdx )
 
 1036           outTiePoints.push_back( mInfo.
m_tiePoints[ mInfoTiePointsIdx ] );
 
 1037           outTiePointsWeights.push_back( weight );
 
 1043       const std::vector< te::gm::GTParameters::TiePoint >& tiePoints,
 
 1044       const bool useTPSecondCoordPair )
 const 
 1046       std::auto_ptr< te::gm::Surface > convexHullPtr;
 
 1047       if( !
getTPConvexHull( tiePoints, useTPSecondCoordPair, convexHullPtr ) )
 
 1053         return convexHullPtr->getArea();
 
 1058       const std::vector< te::gm::GTParameters::TiePoint >& tiePoints,
 
 1059       const bool useTPSecondCoordPair,
 
 1060       std::auto_ptr< te::gm::Surface >& convexHullPtr )
 const 
 1062       if( tiePoints.size() < 3 )
 
 1070         for( 
unsigned int tiePointsIdx = 0 ; tiePointsIdx < tiePoints.size() ;
 
 1073           if( useTPSecondCoordPair )
 
 1075               tiePoints[ tiePointsIdx ].second.y ) );
 
 1078               tiePoints[ tiePointsIdx ].first.y ) );
 
 1081         std::auto_ptr< te::gm::Geometry > geomPtr( points.
convexHull() );
 
 1083         if( dynamic_cast< te::gm::Surface* >( geomPtr.get() ) )
 
 1085           convexHullPtr.reset( 
 
 1086             dynamic_cast< te::gm::Surface* >( geomPtr.release() ) );
 
 1097       std::auto_ptr< te::gm::GeometricTransformation >& geometricTransformPtr,
 
 1098       std::vector< te::gm::GTParameters::TiePoint >& baseTransAgreementTiePoints,
 
 1099       double& convexHullAreaPercent )
 const 
 1101       geometricTransformPtr.reset();
 
 1102       baseTransAgreementTiePoints.clear();
 
 1103       convexHullAreaPercent = 0.0;
 
 1106       std::vector< double > tiePointsWeights;
 
 1130             baseTransAgreementTiePoints,
 
 1131             geometricTransformPtr
 
 1135         geometricTransformPtr.reset();
 
 1136         baseTransAgreementTiePoints.clear();
 
 1140       convexHullAreaPercent =
 
 1160         geometricTransformPtr.reset();
 
 1161         baseTransAgreementTiePoints.clear();
 
virtual unsigned int getObjsCount() const =0
Return the total number of feeder objects. 
 
te::gm::Envelope * getExtent()
Returns the geographic extension of the raster data. 
 
std::vector< te::gm::GTParameters::TiePoint > m_tiePoints
The generated tie-pionts (te::gm::GTParameters::TiePoint::first are raster 1 line/column indexes...
 
bool getTransformation(const std::vector< InternalMatchingInfo > &inTiePoints, std::auto_ptr< te::gm::GeometricTransformation > &baseGeometricTransformPtr, std::vector< te::gm::GTParameters::TiePoint > &baseTransAgreementTiePoints, double &convexHullAreaPercent) const 
Try to instantiate a valid geometric transformation following the user parameters. 
 
std::vector< TiePoint > m_tiePoints
Tie points. 
 
bool execute(AlgorithmOutputParameters &outputParams)
Executes the algorithm using the supplied parameters. 
 
double m_inRasterCoveredAreaPercent
The area percent (from the input raster ) covered by tie-points - valid range [0,100]. 
 
unsigned int getNumberOfColumns() const 
Returns the raster number of columns. 
 
Performs raster data registering into a SRS using a set of tie points. 
 
const double & getUpperRightX() const 
It returns a constant refernce to the x coordinate of the upper right corner. 
 
bool execute(AlgorithmOutputParameters &outputParams)
Executes the algorithm using the supplied parameters. 
 
This class can be used to inform the progress of a task. 
 
Raster Processing algorithm output parameters base interface. 
 
const double & getLowerLeftY() const 
It returns a constant refernce to the y coordinate of the lower left corner. 
 
An utility struct for representing 2D coordinates. 
 
const double & getUpperRightY() const 
It returns a constant refernce to the x coordinate of the upper right corner. 
 
bool execute(AlgorithmOutputParameters &outputParams)
Executes the algorithm using the supplied parameters. 
 
std::pair< Coord2D, Coord2D > TiePoint
Tie point type definition. 
 
2D Geometric transformation tie-points filter (outliers remotion). 
 
void convert(const std::vector< InternalMatchingInfo > &inTiePoints, std::vector< te::gm::GTParameters::TiePoint > &outTiePoints, std::vector< double > &outTiePointsWeights) const 
Convesion from matching infor tie-points to a vector of tie-points. 
 
void geoToGrid(const double &x, const double &y, double &col, double &row) const 
Get the grid point associated to a spatial location. 
 
Raster Processing functions. 
 
#define TERP_TRUE_OR_RETURN_FALSE(value, message)
Checks if value is true. For false values a warning message will be logged and a return of context wi...
 
const Algorithm & operator=(const Algorithm &)
 
Geometric (and positioning) correction of a already geo-referenced raster using a set of reference ra...
 
te::common::AccessPolicy getAccessPolicy() const 
Returns the raster access policy. 
 
std::string m_rType
Output raster data source type (as described in te::raster::RasterFactory ). 
 
std::auto_ptr< te::gm::GeometricTransformation > m_geomTransPtr
The geometric transformation (direct mapping raster lines/cols to input raster corrected world coords...
 
bool initialize(const AlgorithmInputParameters &inputParams)
Initialize the algorithm instance making it ready for execution. 
 
bool applyRansac(const std::string &transfName, const GTParameters &inputParams, const double maxDirectMapError, const double maxInverseMapError, const RansacItCounterT &maxIterations, const double &assurance, const bool enableMultiThread, const std::vector< double > &tiePointsWeights, std::vector< te::gm::GTParameters::TiePoint > &outTiePoints, std::auto_ptr< GeometricTransformation > &outTransf)
Apply a RANSAC based outliers remotion strategy. 
 
MultiPoint is a GeometryCollection whose elements are restricted to points. 
 
virtual bool moveTo(const unsigned int index)=0
Jump to the given object index. 
 
std::auto_ptr< te::rst::Raster > m_outputRasterPtr
A pointer the generated output raster. 
 
bool m_isInitialized
Tells if this instance is initialized. 
 
AbstractParameters * clone() const 
Create a clone copy of this instance. 
 
A point with x and y coordinate values. 
 
virtual void reset()=0
Reset the feeder to the first position (subsequent accesses will start from the first sequence obejct...
 
An Envelope defines a 2D rectangular region. 
 
std::auto_ptr< te::gm::GeometricTransformation > m_transformationPtr
The generated geometric transformation with the base mininum required tie-points set ( depending on t...
 
An abstract class for raster data strucutures. 
 
unsigned int getNumberOfRows() const 
Returns the raster number of rows. 
 
virtual std::size_t getNumberOfBands() const =0
Returns the number of bands (dimension of cells attribute values) in the raster. 
 
std::map< std::string, std::string > m_rInfo
The necessary information to create the output rasters (as described in te::raster::RasterFactory). 
 
GeometricRefining::InputParameters m_inputParameters
Input execution parameters. 
 
Reference rasters matching info. 
 
double getResolutionX() const 
Returns the raster horizontal (x-axis) resolution. 
 
std::vector< te::gm::GTParameters::TiePoint > m_tiePoints
The tie-points generated by matching (first: input rasters lines/cols, second:input raster world coor...
 
A RAM cache adaptor to an external existent raster that must always be avaliable. ...
 
Grid * getGrid()
It returns the raster grid. 
 
static GeometricTransformation * make(const std::string &factoryKey)
It creates an object with the appropriated factory. 
 
bool isInitialized() const 
Returns true if the algorithm instance is initialized and ready for execution. 
 
TiePointsLocator output parameters. 
 
std::auto_ptr< te::rst::Raster > m_outputRasterPtr
The generated output registered raster. 
 
const OutputParameters & operator=(const OutputParameters ¶ms)
 
Abstract parameters base interface. 
 
double getTPConvexHullArea(const std::vector< te::gm::GTParameters::TiePoint > &tiePoints, const bool useTPSecondCoordPair) const 
Returns the tie points converx hull area. 
 
std::map< std::string, std::string > m_rInfo
The necessary information to create the raster (as described in te::raster::RasterFactory). 
 
int getSRID() const 
Returns the raster spatial reference system identifier. 
 
Performs raster data registering into a SRS using a set of tie points. 
 
unsigned int m_referenceRasterIndex
Reference raster index. 
 
void add(Geometry *g)
It adds the geometry into the collection. 
 
const double & getLowerLeftX() const 
It returns a constant reference to the x coordinate of the lower left corner. 
 
te::gm::Envelope * getExtent()
Returns the geographic extension of the grid. 
 
Register output parameters. 
 
double m_convexHullAreaPercent
The tie points covered area percent [0,1]. 
 
double getResolutionY() const 
Returns the raster vertical (y-axis) resolution. 
 
virtual Geometry * convexHull() const 
This method calculates the Convex Hull of a geometry. 
 
void reset()
Clear all internal allocated resources and reset the parameters instance to its initial state...
 
2D Geometric transformation parameters. 
 
std::string m_rType
Output raster data source type (as described in te::raster::RasterFactory ). 
 
virtual bool moveNext()=0
Advances to the next sequence obeject. 
 
Near neighborhood interpolation method. 
 
#define TERP_DEBUG_TRUE_OR_THROW(value, message)
Checks if value is true and throws an exception if not. 
 
virtual te::rst::Raster const * getCurrentObj() const =0
Return the current sequence object. 
 
std::vector< MatchingResult > m_matchingResult
The matching result status for all given reference rasters. 
 
bool getTPConvexHull(const std::vector< te::gm::GTParameters::TiePoint > &tiePoints, const bool useTPSecondCoordPair, std::auto_ptr< te::gm::Surface > &convexHullPtr) const 
Returns the tie points converx hull. 
 
void transform(int oldsrid, int newsrid)
It will transform the coordinates of the Envelope from the old SRS to the new one. 
 
virtual unsigned int getCurrentOffset() const =0
Return the index of the current object. 
 
#define TERP_TRUE_OR_THROW(value, message)
Checks if value is true and throws an exception if not. 
 
void reset()
Clear all internal allocated objects and reset the algorithm to its initial state. 
 
bool initialize(const AlgorithmInputParameters &inputParams)
Initialize the algorithm instance making it ready for execution. 
 
std::vector< te::gm::GTParameters::TiePoint > m_tiePoints
The tie-points in agreenment with the geometric transformation given by m_geomTransPtr (first: input ...
 
bool initialize(const AlgorithmInputParameters &inputParams)
Initialize the algorithm instance making it ready for execution.