TeProxMatrixLocalDistanceStrategy< Set > Class Template Reference

#include <TeProxMatrixConstructionStrategy.h>

Inheritance diagram for TeProxMatrixLocalDistanceStrategy< Set >:

TeProxMatrixConstructionStrategy< Set >

Detailed Description

template<typename Set>
class TeProxMatrixLocalDistanceStrategy< Set >

Examples:

createProximityMatrix.cpp.

Definition at line 210 of file TeProxMatrixConstructionStrategy.h.


Public Member Functions

virtual bool Construct (TeProxMatrixImplementation *imp)
 Construct the proximity matrix through local distance strategy.
TeProxMatrixConstructionParamsconstructionParams ()
 Returns the construction params.
virtual bool IsEqual (const TeProxMatrixConstructionStrategy< Set > &other) const
 Verify if the type of the strategy, the object set and its geometry representation are equal.
Set * objects ()
 Get the objects used to construct the matrix.
TeProxMatrixLocalDistanceStrategy
< Set > & 
operator= (const TeProxMatrixLocalDistanceStrategy< Set > &rhs)
 Assignment operator.
bool operator== (const TeProxMatrixLocalDistanceStrategy< Set > &s) const
 Equal operator.
void setSTObjects (Set *objects, TeGeomRep geomRep)
 Set the set of objects and its geometry representation.
 TeProxMatrixLocalDistanceStrategy (const TeProxMatrixLocalDistanceStrategy< Set > &st)
 Copy constructor.
 TeProxMatrixLocalDistanceStrategy (Set *objects, TeGeomRep geomRep, double max_distance)
 Constructor.
 TeProxMatrixLocalDistanceStrategy ()
 Constructor.
virtual ~TeProxMatrixLocalDistanceStrategy ()
 Destructor.

Protected Attributes

Set * objects_
 Set of objetcs used to construct the matrix.
TeProxMatrixConstructionParams params_
 Construction paramas.

Constructor & Destructor Documentation

template<typename Set>
TeProxMatrixLocalDistanceStrategy< Set >::TeProxMatrixLocalDistanceStrategy (  )  [inline]

Definition at line 383 of file TeProxMatrixConstructionStrategy.h.

template<typename Set>
TeProxMatrixLocalDistanceStrategy< Set >::TeProxMatrixLocalDistanceStrategy ( Set *  objects,
TeGeomRep  geomRep,
double  max_distance 
) [inline]

Definition at line 389 of file TeProxMatrixConstructionStrategy.h.

00389                                                                                                                                : 
00390                 TeProxMatrixConstructionStrategy<Set>(objects, geomRep, TeDistanceStrategy)
00391                 {
00392                         TeProxMatrixConstructionStrategy<Set>::params_.max_distance_ = max_distance; 
00393                 }

template<typename Set>
TeProxMatrixLocalDistanceStrategy< Set >::TeProxMatrixLocalDistanceStrategy ( const TeProxMatrixLocalDistanceStrategy< Set > &  st  )  [inline]

Definition at line 397 of file TeProxMatrixConstructionStrategy.h.

00397                                                                                                                           : 
00398                 TeProxMatrixConstructionStrategy<Set>(st)
00399                 {} 

template<typename Set>
virtual TeProxMatrixLocalDistanceStrategy< Set >::~TeProxMatrixLocalDistanceStrategy (  )  [inline, virtual]

Definition at line 224 of file TeProxMatrixConstructionStrategy.h.

00224 {}


Member Function Documentation

template<typename Set>
bool TeProxMatrixLocalDistanceStrategy< Set >::Construct ( TeProxMatrixImplementation imp  )  [inline, virtual]

Implements TeProxMatrixConstructionStrategy< Set >.

Definition at line 402 of file TeProxMatrixConstructionStrategy.h.

References TeProxMatrixAttributes::CentroidDistance(), TeProxMatrixImplementation::connectObjects(), TeSingleton< TePrecision >::instance(), TeProgress::instance(), TeProxMatrixImplementation::isConnected(), TeProgressBase::reset(), TePrecision::setPrecision(), TeProgressBase::setProgress(), TeProgressBase::setTotalSteps(), TeDistance(), TeGetPrecision(), TeBox::x1(), TeBox::x2(), TeBox::y1(), and TeBox::y2().

Referenced by TeProxMatrixOpenNetworkStrategy::Construct(), and TeProxMatrixClosedNetworkStrategy::Construct().

00403 {
00404         if (imp == 0) 
00405                 return false;
00406         
00407         // Iterate over all selected objects, selecting their neighbours
00408         TeSTElementSet::iterator itobj1 = TeProxMatrixConstructionStrategy<Set>::objects_->begin();
00409         
00410         // ----- progress bar
00411         int step = 0;
00412         if(TeProgress::instance())
00413                 TeProgress::instance()->setTotalSteps(TeProxMatrixConstructionStrategy<Set>::objects_->numSTInstance());
00414         // -----
00415 
00416         TeProjection* proj = 0;
00417         if(TeProxMatrixConstructionStrategy<Set>::objects_->theme())
00418                 proj = TeProxMatrixConstructionStrategy<Set>::objects_->theme()->layer()->projection();
00419         else if(TeProxMatrixConstructionStrategy<Set>::objects_->getLayer())
00420                 proj = TeProxMatrixConstructionStrategy<Set>::objects_->getLayer()->projection();
00421 
00422         TePrecision::instance().setPrecision(TeGetPrecision(proj));
00423         double max_d = TeProxMatrixConstructionStrategy<Set>::params_.max_distance_;
00424                 
00425         while ( itobj1 != TeProxMatrixConstructionStrategy<Set>::objects_->end())
00426         {
00427                 // Gets the possible objects from RTree in the element set
00428                 vector<TeSTInstance*> result;
00429                 TeBox b = (*itobj1).getGeometries().getBox();
00430                 TeBox bAux(b.x1()-max_d, b.y1()-max_d, b.x2()+max_d, b.y2()+max_d);
00431                 
00432                 TeProxMatrixConstructionStrategy<Set>::objects_->search(bAux, result);
00433 
00434                 string object_id1 = (*itobj1).getObjectId();
00435                 TeCoord2D coord1 = itobj1->getCentroid();
00436                 for(unsigned int index =0; index<result.size(); ++index)
00437                 {
00438                         string object_id2 = result[index]->getObjectId();
00439                         if(object_id1==object_id2)
00440                                 continue;
00441                         
00442                         TeCoord2D coord2 = result[index]->getCentroid();
00443                         double dist = TeDistance(coord1, coord2);
00444                         if(dist <= max_d)
00445                         {
00446                                 if(!imp->isConnected (object_id1,object_id2))
00447                                 {
00448                                         TeProxMatrixAttributes attr;
00449                                         attr.CentroidDistance (dist);
00450                                         imp->connectObjects (object_id1, object_id2, attr);
00451                                         imp->connectObjects (object_id2, object_id1, attr);
00452                                 }
00453                         }
00454                 }
00455 
00456                 if(TeProgress::instance())
00457                 {
00458                         if (TeProgress::instance()->wasCancelled())
00459                         {
00460                                 TeProgress::instance()->reset();
00461                                 return false;
00462                         }
00463                         else
00464                                 TeProgress::instance()->setProgress(step);
00465                 }       
00466                 ++step;
00467                 ++itobj1;
00468         }
00469         
00470         if (TeProgress::instance())
00471                 TeProgress::instance()->reset();
00472         return true;
00473 }

TeProxMatrixConstructionParams& TeProxMatrixConstructionStrategy< Set >::constructionParams (  )  [inline, inherited]

Definition at line 133 of file TeProxMatrixConstructionStrategy.h.

00133 { return params_; }

virtual bool TeProxMatrixConstructionStrategy< Set >::IsEqual ( const TeProxMatrixConstructionStrategy< Set > &  other  )  const [virtual, inherited]

Set * TeProxMatrixConstructionStrategy< Set >::objects (  )  [inline, inherited]

Definition at line 130 of file TeProxMatrixConstructionStrategy.h.

00130 { return objects_; } 

template<typename Set>
TeProxMatrixLocalDistanceStrategy< Set > & TeProxMatrixLocalDistanceStrategy< Set >::operator= ( const TeProxMatrixLocalDistanceStrategy< Set > &  rhs  )  [inline]

Definition at line 482 of file TeProxMatrixConstructionStrategy.h.

References TeProxMatrixConstructionStrategy< Set >::objects_, and TeProxMatrixConstructionStrategy< Set >::params_.

00483 {
00484         if ( this != &rhs )
00485         {
00486                 TeProxMatrixConstructionStrategy<Set>::objects_ = rhs.objects_;
00487                 TeProxMatrixConstructionStrategy<Set>::params_ = rhs.params_;
00488         }
00489         return *this;
00490 }

template<typename Set>
bool TeProxMatrixLocalDistanceStrategy< Set >::operator== ( const TeProxMatrixLocalDistanceStrategy< Set > &  s  )  const [inline]

Definition at line 476 of file TeProxMatrixConstructionStrategy.h.

00477 {
00478         return ( TeProxMatrixConstructionStrategy<Set>::IsEqual(s)); 
00479 }

void TeProxMatrixConstructionStrategy< Set >::setSTObjects ( Set *  objects,
TeGeomRep  geomRep 
) [inherited]


Field Documentation

Set * TeProxMatrixConstructionStrategy< Set >::objects_ [protected, inherited]

Definition at line 104 of file TeProxMatrixConstructionStrategy.h.

Referenced by TeProxMatrixLocalDistanceStrategy< Set >::operator=().

TeProxMatrixConstructionParams TeProxMatrixConstructionStrategy< Set >::params_ [protected, inherited]

Definition at line 107 of file TeProxMatrixConstructionStrategy.h.

Referenced by TeProxMatrixLocalDistanceStrategy< Set >::operator=().


The documentation for this class was generated from the following file:
Generated on Sun Jul 29 04:09:15 2012 for TerraLib - Development Source by  doxygen 1.5.3