void visitData( const IData& d ) override { SpatialIndex::IShape* shape; d.getShape( &shape ); mNewIndex->insertData( 0, 0, *shape, d.getIdentifier() ); delete shape; }
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() ); }
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; } }
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; } }
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; }
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; }
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; }