Example #1
0
 void visitData( const IData& d ) override
 {
   SpatialIndex::IShape* shape;
   d.getShape( &shape );
   mNewIndex->insertData( 0, 0, *shape, d.getIdentifier() );
   delete shape;
 }
Example #2
0
 void visitData( const IData& d ) override
 {
   QgsFeatureId id = d.getIdentifier();
   QgsGeometry* g = mLocator->mGeoms.value( id );
   if ( g->intersects( mGeomPt ) )
     mList << QgsPointLocator::Match( QgsPointLocator::Area, mLocator->mLayer, id, 0, QgsPoint() );
 }
Example #3
0
	virtual void visitData(const IData& in) 
	{
		uint64_t id = in.getIdentifier();

		const bool doDataDeserialization = true;
		if(doDataDeserialization)
		{
			uint32_t dataLen;
			byte* data;
			in.getData(dataLen, &data);

			MGArchive archive((const char*)data, dataLen);
			Way way;
			archive << way;

			for (size_t i = 0; i < way.tags.size(); i++)
			{
				if (way.tags[i].key == key)
				{
					ways.push_back(id);
					break;
				}
			}

			delete data;
		}
	}
Example #4
0
    void visitData( const IData& d ) override
    {
      QgsFeatureId id = d.getIdentifier();
      QgsGeometry* geom = mLocator->mGeoms.value( id );

      Q_FOREACH ( const QgsPointLocator::Match& m, _geometrySegmentsInRect( geom, mSrcRect, mLocator->mLayer, id ) )
      {
        // in range queries the filter may reject some matches
        if ( mFilter && !mFilter->acceptMatch( m ) )
          continue;

        mList << m;
      }
    }
Example #5
0
    void visitData( const IData& d ) override
    {
      QgsFeatureId id = d.getIdentifier();
      QgsGeometry* geom = mLocator->mGeoms.value( id );
      int vertexIndex, beforeVertex, afterVertex;
      double sqrDist;
      QgsPoint pt = geom->closestVertex( mSrcPoint, vertexIndex, beforeVertex, afterVertex, sqrDist );

      QgsPointLocator::Match m( QgsPointLocator::Vertex, mLocator->mLayer, id, sqrt( sqrDist ), pt, vertexIndex );
      // in range queries the filter may reject some matches
      if ( mFilter && !mFilter->acceptMatch( m ) )
        return;

      if ( !mBest.isValid() || m.distance() < mBest.distance() )
        mBest = m;
    }
Example #6
0
    void visitData( const IData& d ) override
    {
      QgsFeatureId id = d.getIdentifier();
      QgsGeometry* geom = mLocator->mGeoms.value( id );
      QgsPoint pt;
      int afterVertex;
      double sqrDist = geom->closestSegmentWithContext( mSrcPoint, pt, afterVertex, nullptr, POINT_LOC_EPSILON );
      if ( sqrDist < 0 )
        return;

      QgsPoint edgePoints[2];
      edgePoints[0] = geom->vertexAt( afterVertex - 1 );
      edgePoints[1] = geom->vertexAt( afterVertex );
      QgsPointLocator::Match m( QgsPointLocator::Edge, mLocator->mLayer, id, sqrt( sqrDist ), pt, afterVertex - 1, edgePoints );
      // in range queries the filter may reject some matches
      if ( mFilter && !mFilter->acceptMatch( m ) )
        return;

      if ( !mBest.isValid() || m.distance() < mBest.distance() )
        mBest = m;
    }
Example #7
0
 void visitData( const IData& d ) override
 {
   mList.append( d.getIdentifier() );
 }
	void visitData(const IData& d)
	{
	    hits.push_back(d.getIdentifier());
	    //std::cout << d.getIdentifier()<< std::endl;
	}