mirror of
https://github.com/qgis/QGIS.git
synced 2025-04-13 00:03:09 -04:00
update calls to new api
This commit is contained in:
parent
94491b8479
commit
dc728f6c39
@ -67,13 +67,14 @@ int QgsInterpolator::cacheBaseData()
|
||||
attList.push_back( v_it->interpolationAttribute );
|
||||
}
|
||||
|
||||
vlayer->select( attList );
|
||||
|
||||
QgsFeature theFeature;
|
||||
double attributeValue = 0.0;
|
||||
bool attributeConversionOk = false;
|
||||
|
||||
while ( vlayer->nextFeature( theFeature ) )
|
||||
QgsFeatureIterator fit = vlayer->getFeatures( QgsFeatureRequest().setSubsetOfAttributes( attList ) );
|
||||
|
||||
QgsFeature theFeature;
|
||||
while ( fit.nextFeature( theFeature ) )
|
||||
{
|
||||
if ( !v_it->zCoordInterpolation )
|
||||
{
|
||||
|
@ -113,8 +113,10 @@ void QgsTINInterpolator::initialize()
|
||||
{
|
||||
attList.push_back( layerDataIt->interpolationAttribute );
|
||||
}
|
||||
layerDataIt->vectorLayer->select( attList );
|
||||
while ( layerDataIt->vectorLayer->nextFeature( f ) )
|
||||
|
||||
QgsFeatureIterator fit = layerDataIt->vectorLayer->getFeatures( QgsFeatureRequest().setSubsetOfAttributes( attList ) );
|
||||
|
||||
while ( fit.nextFeature( f ) )
|
||||
{
|
||||
if ( mShowProgressDialog )
|
||||
{
|
||||
|
@ -158,11 +158,12 @@ void QgsLineVectorLayerDirector::makeGraph( QgsGraphBuilderInterface *builder, c
|
||||
//Graph's points;
|
||||
QVector< QgsPoint > points;
|
||||
|
||||
QgsFeatureIterator fit = vl->getFeatures( QgsFeatureRequest().setSubsetOfAttributes( QgsAttributeList() ) );
|
||||
|
||||
// begin: tie points to the graph
|
||||
QgsAttributeList la;
|
||||
vl->select( la );
|
||||
QgsFeature feature;
|
||||
while ( vl->nextFeature( feature ) )
|
||||
while ( fit.nextFeature( feature ) )
|
||||
{
|
||||
QgsMultiPolyline mpl;
|
||||
if ( feature.geometry()->wkbType() == QGis::WKBMultiLineString )
|
||||
@ -233,7 +234,6 @@ void QgsLineVectorLayerDirector::makeGraph( QgsGraphBuilderInterface *builder, c
|
||||
QVector< QgsPoint >::iterator tmp = std::unique( points.begin(), points.end() );
|
||||
points.resize( tmp - points.begin() );
|
||||
|
||||
|
||||
for ( i = 0;i < points.size();++i )
|
||||
builder->addVertex( i, points[ i ] );
|
||||
|
||||
@ -242,7 +242,8 @@ void QgsLineVectorLayerDirector::makeGraph( QgsGraphBuilderInterface *builder, c
|
||||
|
||||
qSort( pointLengthMap.begin(), pointLengthMap.end(), TiePointInfoCompare );
|
||||
|
||||
{ // fill attribute list 'la'
|
||||
{
|
||||
// fill attribute list 'la'
|
||||
QgsAttributeList tmpAttr;
|
||||
if ( mDirectionFieldId != -1 )
|
||||
{
|
||||
@ -277,8 +278,8 @@ void QgsLineVectorLayerDirector::makeGraph( QgsGraphBuilderInterface *builder, c
|
||||
} // end fill attribute list 'la'
|
||||
|
||||
// begin graph construction
|
||||
vl->select( la );
|
||||
while ( vl->nextFeature( feature ) )
|
||||
fit = vl->getFeatures( QgsFeatureRequest().setSubsetOfAttributes( la ) );
|
||||
while ( fit.nextFeature( feature ) )
|
||||
{
|
||||
int directionType = mDefaultDirection;
|
||||
|
||||
|
@ -73,7 +73,7 @@ bool QgsGeometryAnalyzer::simplify( QgsVectorLayer* layer,
|
||||
{
|
||||
break;
|
||||
}
|
||||
if ( !layer->featureAtId( *it, currentFeature, true, true ) )
|
||||
if ( !layer->getFeatures( QgsFeatureRequest().setFilterFid( *it ) ).nextFeature( currentFeature ) )
|
||||
{
|
||||
continue;
|
||||
}
|
||||
@ -89,8 +89,7 @@ bool QgsGeometryAnalyzer::simplify( QgsVectorLayer* layer,
|
||||
//take all features
|
||||
else
|
||||
{
|
||||
layer->select( layer->pendingAllAttributesList(), QgsRectangle(), true, false );
|
||||
|
||||
QgsFeatureIterator fit = layer->getFeatures();
|
||||
|
||||
int featureCount = layer->featureCount();
|
||||
if ( p )
|
||||
@ -99,7 +98,7 @@ bool QgsGeometryAnalyzer::simplify( QgsVectorLayer* layer,
|
||||
}
|
||||
int processedFeatures = 0;
|
||||
|
||||
while ( layer->nextFeature( currentFeature ) )
|
||||
while ( fit.nextFeature( currentFeature ) )
|
||||
{
|
||||
if ( p )
|
||||
{
|
||||
@ -189,7 +188,7 @@ bool QgsGeometryAnalyzer::centroids( QgsVectorLayer* layer, const QString& shape
|
||||
{
|
||||
break;
|
||||
}
|
||||
if ( !layer->featureAtId( *it, currentFeature, true, true ) )
|
||||
if ( !layer->getFeatures( QgsFeatureRequest().setFilterFid( *it ) ).nextFeature( currentFeature ) )
|
||||
{
|
||||
continue;
|
||||
}
|
||||
@ -205,7 +204,7 @@ bool QgsGeometryAnalyzer::centroids( QgsVectorLayer* layer, const QString& shape
|
||||
//take all features
|
||||
else
|
||||
{
|
||||
layer->select( layer->pendingAllAttributesList(), QgsRectangle(), true, false );
|
||||
QgsFeatureIterator fit = layer->getFeatures( QgsFeatureRequest().setSubsetOfAttributes( QgsAttributeList() ) );
|
||||
|
||||
int featureCount = layer->featureCount();
|
||||
if ( p )
|
||||
@ -214,7 +213,7 @@ bool QgsGeometryAnalyzer::centroids( QgsVectorLayer* layer, const QString& shape
|
||||
}
|
||||
int processedFeatures = 0;
|
||||
|
||||
while ( layer->nextFeature( currentFeature ) )
|
||||
while ( fit.nextFeature( currentFeature ) )
|
||||
{
|
||||
if ( p )
|
||||
{
|
||||
@ -435,7 +434,7 @@ bool QgsGeometryAnalyzer::convexHull( QgsVectorLayer* layer, const QString& shap
|
||||
return false;
|
||||
}
|
||||
#endif
|
||||
if ( !layer->featureAtId( *it, currentFeature, true, true ) )
|
||||
if ( !layer->getFeatures( QgsFeatureRequest().setFilterFid( *it ) ).nextFeature( currentFeature ) )
|
||||
{
|
||||
continue;
|
||||
}
|
||||
@ -444,8 +443,8 @@ bool QgsGeometryAnalyzer::convexHull( QgsVectorLayer* layer, const QString& shap
|
||||
}
|
||||
else
|
||||
{
|
||||
layer->select( layer->pendingAllAttributesList(), QgsRectangle(), true, false );
|
||||
while ( layer->nextFeature( currentFeature ) )
|
||||
QgsFeatureIterator fit = layer->getFeatures();
|
||||
while ( fit.nextFeature( currentFeature ) )
|
||||
{
|
||||
#if 0
|
||||
if ( p )
|
||||
@ -489,7 +488,7 @@ bool QgsGeometryAnalyzer::convexHull( QgsVectorLayer* layer, const QString& shap
|
||||
{
|
||||
p->setValue( processedFeatures );
|
||||
}
|
||||
if ( !layer->featureAtId( jt.value(), currentFeature, true, true ) )
|
||||
if ( !layer->getFeatures( QgsFeatureRequest().setFilterFid( jt.value() ) ).nextFeature( currentFeature ) )
|
||||
{
|
||||
continue;
|
||||
}
|
||||
@ -535,7 +534,7 @@ bool QgsGeometryAnalyzer::convexHull( QgsVectorLayer* layer, const QString& shap
|
||||
{
|
||||
break;
|
||||
}
|
||||
if ( !layer->featureAtId( jt.value(), currentFeature, true, true ) )
|
||||
if ( !layer->getFeatures( QgsFeatureRequest().setFilterFid( jt.value() ) ).nextFeature( currentFeature ) )
|
||||
{
|
||||
continue;
|
||||
}
|
||||
@ -629,7 +628,7 @@ bool QgsGeometryAnalyzer::dissolve( QgsVectorLayer* layer, const QString& shapef
|
||||
QgsFeatureIds::const_iterator it = selection.constBegin();
|
||||
for ( ; it != selection.constEnd(); ++it )
|
||||
{
|
||||
if ( !layer->featureAtId( *it, currentFeature, true, true ) )
|
||||
if ( !layer->getFeatures( QgsFeatureRequest().setFilterFid( *it ) ).nextFeature( currentFeature ) )
|
||||
{
|
||||
continue;
|
||||
}
|
||||
@ -638,8 +637,8 @@ bool QgsGeometryAnalyzer::dissolve( QgsVectorLayer* layer, const QString& shapef
|
||||
}
|
||||
else
|
||||
{
|
||||
layer->select( layer->pendingAllAttributesList(), QgsRectangle(), true, false );
|
||||
while ( layer->nextFeature( currentFeature ) )
|
||||
QgsFeatureIterator fit = layer->getFeatures();
|
||||
while ( fit.nextFeature( currentFeature ) )
|
||||
{
|
||||
map.insert( currentFeature.attribute( uniqueIdField ).toString(), currentFeature.id() );
|
||||
}
|
||||
@ -674,7 +673,7 @@ bool QgsGeometryAnalyzer::dissolve( QgsVectorLayer* layer, const QString& shapef
|
||||
{
|
||||
p->setValue( processedFeatures );
|
||||
}
|
||||
if ( !layer->featureAtId( jt.value(), currentFeature, true, true ) )
|
||||
if ( !layer->getFeatures( QgsFeatureRequest().setFilterFid( jt.value() ) ).nextFeature( currentFeature ) )
|
||||
{
|
||||
continue;
|
||||
}
|
||||
@ -708,7 +707,7 @@ bool QgsGeometryAnalyzer::dissolve( QgsVectorLayer* layer, const QString& shapef
|
||||
{
|
||||
break;
|
||||
}
|
||||
if ( !layer->featureAtId( jt.value(), currentFeature, true, true ) )
|
||||
if ( !layer->getFeatures( QgsFeatureRequest().setFilterFid( jt.value() ) ).nextFeature( currentFeature ) )
|
||||
{
|
||||
continue;
|
||||
}
|
||||
@ -798,7 +797,7 @@ bool QgsGeometryAnalyzer::buffer( QgsVectorLayer* layer, const QString& shapefil
|
||||
{
|
||||
break;
|
||||
}
|
||||
if ( !layer->featureAtId( *it, currentFeature, true, true ) )
|
||||
if ( !layer->getFeatures( QgsFeatureRequest().setFilterFid( *it ) ).nextFeature( currentFeature ) )
|
||||
{
|
||||
continue;
|
||||
}
|
||||
@ -814,8 +813,7 @@ bool QgsGeometryAnalyzer::buffer( QgsVectorLayer* layer, const QString& shapefil
|
||||
//take all features
|
||||
else
|
||||
{
|
||||
layer->select( layer->pendingAllAttributesList(), QgsRectangle(), true, false );
|
||||
|
||||
QgsFeatureIterator fit = layer->getFeatures();
|
||||
|
||||
int featureCount = layer->featureCount();
|
||||
if ( p )
|
||||
@ -824,7 +822,7 @@ bool QgsGeometryAnalyzer::buffer( QgsVectorLayer* layer, const QString& shapefil
|
||||
}
|
||||
int processedFeatures = 0;
|
||||
|
||||
while ( layer->nextFeature( currentFeature ) )
|
||||
while ( fit.nextFeature( currentFeature ) )
|
||||
{
|
||||
if ( p )
|
||||
{
|
||||
@ -920,10 +918,9 @@ bool QgsGeometryAnalyzer::eventLayer( QgsVectorLayer* lineLayer, QgsVectorLayer*
|
||||
|
||||
//create line field / id map for line layer
|
||||
QMultiHash< QString, QgsFeatureId > lineLayerIdMap; //1:n possible (e.g. several linear reference geometries for one feature in the event layer)
|
||||
lineLayer->select( QgsAttributeList() << lineField,
|
||||
QgsRectangle(), false, false );
|
||||
QgsFeatureIterator fit = lineLayer->getFeatures( QgsFeatureRequest().setFlags( QgsFeatureRequest::NoGeometry ).setSubsetOfAttributes( QgsAttributeList() << lineField ) );
|
||||
QgsFeature fet;
|
||||
while ( lineLayer->nextFeature( fet ) )
|
||||
while ( fit.nextFeature( fet ) )
|
||||
{
|
||||
lineLayerIdMap.insert( fet.attribute( lineField ).toString(), fet.id() );
|
||||
}
|
||||
@ -955,7 +952,7 @@ bool QgsGeometryAnalyzer::eventLayer( QgsVectorLayer* lineLayer, QgsVectorLayer*
|
||||
}
|
||||
|
||||
//iterate over eventLayer and write new features to output file or layer
|
||||
eventLayer->select( eventLayer->pendingAllAttributesList(), QgsRectangle(), false, false );
|
||||
fit = eventLayer->getFeatures( QgsFeatureRequest().setFlags( QgsFeatureRequest::NoGeometry ) );
|
||||
QgsGeometry* lrsGeom = 0;
|
||||
QgsFeature lineFeature;
|
||||
double measure1, measure2 = 0.0;
|
||||
@ -971,7 +968,7 @@ bool QgsGeometryAnalyzer::eventLayer( QgsVectorLayer* lineLayer, QgsVectorLayer*
|
||||
p->show();
|
||||
}
|
||||
|
||||
while ( eventLayer->nextFeature( fet ) )
|
||||
while ( fit.nextFeature( fet ) )
|
||||
{
|
||||
nOutputFeatures = 0;
|
||||
|
||||
@ -996,7 +993,7 @@ bool QgsGeometryAnalyzer::eventLayer( QgsVectorLayer* lineLayer, QgsVectorLayer*
|
||||
QList<QgsFeatureId>::const_iterator featureIdIt = featureIdList.constBegin();
|
||||
for ( ; featureIdIt != featureIdList.constEnd(); ++featureIdIt )
|
||||
{
|
||||
if ( !lineLayer->featureAtId( *featureIdIt, lineFeature, true, false ) )
|
||||
if ( !lineLayer->getFeatures( QgsFeatureRequest().setFilterFid( *featureIdIt ).setSubsetOfAttributes( QgsAttributeList() ) ).nextFeature( lineFeature ) )
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
@ -60,7 +60,7 @@ bool QgsOverlayAnalyzer::intersection( QgsVectorLayer* layerA, QgsVectorLayer* l
|
||||
QgsFeatureIds::const_iterator it = selectionB.constBegin();
|
||||
for ( ; it != selectionB.constEnd(); ++it )
|
||||
{
|
||||
if ( !layerB->featureAtId( *it, currentFeature, true, true ) )
|
||||
if ( !layerB->getFeatures( QgsFeatureRequest().setFilterFid( *it ) ).nextFeature( currentFeature ) )
|
||||
{
|
||||
continue;
|
||||
}
|
||||
@ -86,7 +86,7 @@ bool QgsOverlayAnalyzer::intersection( QgsVectorLayer* layerA, QgsVectorLayer* l
|
||||
{
|
||||
break;
|
||||
}
|
||||
if ( !layerA->featureAtId( *it, currentFeature, true, true ) )
|
||||
if ( !layerA->getFeatures( QgsFeatureRequest().setFilterFid( *it ) ).nextFeature( currentFeature ) )
|
||||
{
|
||||
continue;
|
||||
}
|
||||
@ -102,13 +102,11 @@ bool QgsOverlayAnalyzer::intersection( QgsVectorLayer* layerA, QgsVectorLayer* l
|
||||
//take all features
|
||||
else
|
||||
{
|
||||
layerB->select( layerB->pendingAllAttributesList(), QgsRectangle(), true, false );
|
||||
while ( layerB->nextFeature( currentFeature ) )
|
||||
QgsFeatureIterator fit = layerB->getFeatures();
|
||||
while ( fit.nextFeature( currentFeature ) )
|
||||
{
|
||||
index.insertFeature( currentFeature );
|
||||
}
|
||||
QgsFeature currentFeature;
|
||||
layerA->select( layerA->pendingAllAttributesList(), QgsRectangle(), true, false );
|
||||
|
||||
int featureCount = layerA->featureCount();
|
||||
if ( p )
|
||||
@ -117,7 +115,10 @@ bool QgsOverlayAnalyzer::intersection( QgsVectorLayer* layerA, QgsVectorLayer* l
|
||||
}
|
||||
int processedFeatures = 0;
|
||||
|
||||
while ( layerA->nextFeature( currentFeature ) )
|
||||
fit = layerA->getFeatures();
|
||||
|
||||
QgsFeature currentFeature;
|
||||
while ( fit.nextFeature( currentFeature ) )
|
||||
{
|
||||
if ( p )
|
||||
{
|
||||
@ -156,7 +157,7 @@ void QgsOverlayAnalyzer::intersectFeature( QgsFeature& f, QgsVectorFileWriter* v
|
||||
QgsFeature outFeature;
|
||||
for ( ; it != intersects.constEnd(); ++it )
|
||||
{
|
||||
if ( !vl->featureAtId( *it, overlayFeature, true, true ) )
|
||||
if ( !vl->getFeatures( QgsFeatureRequest().setFilterFid( *it ) ).nextFeature( overlayFeature ) )
|
||||
{
|
||||
continue;
|
||||
}
|
||||
@ -192,7 +193,7 @@ void QgsOverlayAnalyzer::combineFieldLists( QgsFields& fieldListA, const QgsFiel
|
||||
int count = 0;
|
||||
while ( names.contains( field.name() ) )
|
||||
{
|
||||
QString name = QString("%1_%2").arg( field.name() ).arg( count );
|
||||
QString name = QString( "%1_%2" ).arg( field.name() ).arg( count );
|
||||
field = QgsField( name, field.type() );
|
||||
++count;
|
||||
}
|
||||
|
@ -140,7 +140,6 @@ int QgsZonalStatistics::calculateStatistics( QProgressDialog* p )
|
||||
QgsFeatureRequest request;
|
||||
request.setSubsetOfAttributes( QgsAttributeList() );
|
||||
QgsFeatureIterator fi = vectorProvider->getFeatures( request );
|
||||
//vectorProvider->select( QgsAttributeList(), QgsRectangle(), true, false );
|
||||
QgsFeature f;
|
||||
double count = 0;
|
||||
double sum = 0;
|
||||
|
@ -687,11 +687,11 @@ void QgsLegendLayer::updateItemListCount( QgsVectorLayer* layer, const QList<Qgs
|
||||
p.setWindowModality( Qt::WindowModal );
|
||||
int featuresCounted = 0;
|
||||
|
||||
layer->select( layer->pendingAllAttributesList(), QgsRectangle(), false, false );
|
||||
QgsFeatureIterator fit = layer->getFeatures( QgsFeatureRequest().setFlags( QgsFeatureRequest::NoGeometry ) );
|
||||
QgsFeature f;
|
||||
QgsSymbol* currentSymbol = 0;
|
||||
|
||||
while ( layer->nextFeature( f ) )
|
||||
while ( fit.nextFeature( f ) )
|
||||
{
|
||||
currentSymbol = renderer->symbolForFeature( &f );
|
||||
if ( currentSymbol )
|
||||
|
@ -148,7 +148,7 @@ void QgsMapToolNodeTool::createTopologyRubberBands( QgsVectorLayer* vlayer, cons
|
||||
int tVertexFirst = tVertex; // vertex number to check for cycling
|
||||
QgsFeature topolFeature;
|
||||
|
||||
vlayer->featureAtId( resultIt.value().snappedAtGeometry, topolFeature, true, false );
|
||||
vlayer->getFeatures( QgsFeatureRequest().setFilterFid( resultIt.value().snappedAtGeometry ).setSubsetOfAttributes( QgsAttributeList() ) ).nextFeature( topolFeature );
|
||||
QgsGeometry* topolGeometry = topolFeature.geometry();
|
||||
|
||||
while ( tVertex != -1 ) // looking for first vertex to rubberband
|
||||
|
@ -75,7 +75,7 @@ void QgsSelectedFeature::updateGeometry( QgsGeometry *geom )
|
||||
if ( !geom )
|
||||
{
|
||||
QgsFeature f;
|
||||
mVlayer->featureAtId( mFeatureId, f );
|
||||
mVlayer->getFeatures( QgsFeatureRequest().setFilterFid( mFeatureId ) ).nextFeature( f );
|
||||
mGeometry = new QgsGeometry( *f.geometry() );
|
||||
}
|
||||
else
|
||||
|
@ -261,7 +261,7 @@ QgsAttributeDialog::QgsAttributeDialog( QgsVectorLayer *vl, QgsFeature *thepFeat
|
||||
if ( !mFeature->geometry() && exp.needsGeometry() )
|
||||
{
|
||||
QgsFeature f;
|
||||
if ( vl->featureAtId( mFeature->id(), f, true, false ) && f.geometry() )
|
||||
if ( vl->getFeatures( QgsFeatureRequest().setFilterFid( mFeature->id() ).setSubsetOfAttributes( QgsAttributeList() ) ).nextFeature( f ) && f.geometry() )
|
||||
{
|
||||
mFeature->setGeometry( *f.geometry() );
|
||||
}
|
||||
|
@ -577,10 +577,13 @@ void QgsAttributeTableDialog::doSearch( QString searchString )
|
||||
}
|
||||
else
|
||||
{
|
||||
mLayer->select( mLayer->pendingAllAttributesList(), QgsRectangle(), fetchGeom );
|
||||
QgsFeature f;
|
||||
QgsFeatureRequest r;
|
||||
if ( !fetchGeom )
|
||||
r.setFlags( QgsFeatureRequest::NoGeometry );
|
||||
QgsFeatureIterator fit = mLayer->getFeatures( r );
|
||||
|
||||
while ( mLayer->nextFeature( f ) )
|
||||
QgsFeature f;
|
||||
while ( fit.nextFeature( f ) )
|
||||
{
|
||||
if ( search.evaluate( &f ).toInt() != 0 )
|
||||
mSelectedFeatures << f.id();
|
||||
|
@ -310,9 +310,11 @@ void QgsAttributeTypeDialog::setIndex( int index, QgsVectorLayer::EditType editT
|
||||
setWindowTitle( defaultWindowTitle() + " \"" + mLayer->pendingFields()[index].name() + "\"" );
|
||||
QgsAttributeList attributeList = QgsAttributeList();
|
||||
attributeList.append( index );
|
||||
mLayer->select( attributeList, QgsRectangle(), false );
|
||||
|
||||
QgsFeatureIterator fit = mLayer->getFeatures( QgsFeatureRequest().setFlags( QgsFeatureRequest::NoGeometry ).setSubsetOfAttributes( attributeList ) );
|
||||
|
||||
QgsFeature f;
|
||||
|
||||
QString text;
|
||||
//calculate min and max for range for this field
|
||||
if ( mLayer->pendingFields()[index].type() == QVariant::Int )
|
||||
@ -321,7 +323,7 @@ void QgsAttributeTypeDialog::setIndex( int index, QgsVectorLayer::EditType editT
|
||||
rangeWidget->addItems( QStringList() << tr( "Editable" ) << tr( "Slider" ) << tr( "Dial" ) );
|
||||
int min = INT_MIN;
|
||||
int max = INT_MAX;
|
||||
while ( mLayer->nextFeature( f ) )
|
||||
while ( fit.nextFeature( f ) )
|
||||
{
|
||||
QVariant val = f.attribute( index );
|
||||
if ( val.isValid() && !val.isNull() )
|
||||
@ -342,7 +344,7 @@ void QgsAttributeTypeDialog::setIndex( int index, QgsVectorLayer::EditType editT
|
||||
|
||||
rangeWidget->clear();
|
||||
rangeWidget->addItems( QStringList() << tr( "Editable" ) << tr( "Slider" ) );
|
||||
while ( mLayer->nextFeature( f ) )
|
||||
while ( fit.nextFeature( f ) )
|
||||
{
|
||||
QVariant val = f.attribute( index );
|
||||
if ( val.isValid() && !val.isNull() )
|
||||
|
@ -133,11 +133,12 @@ void QgsAttributeTypeLoadDialog::createPreview( int fieldIndex, bool full )
|
||||
QgsAttributeList attributeList = QgsAttributeList();
|
||||
attributeList.append( idx );
|
||||
attributeList.append( idx2 );
|
||||
vLayer->select( attributeList, QgsRectangle(), false );
|
||||
|
||||
QgsFeatureIterator fit = vLayer->getFeatures( QgsFeatureRequest().setFlags( QgsFeatureRequest::NoGeometry ).setSubsetOfAttributes( attributeList ) );
|
||||
|
||||
QgsFeature f;
|
||||
QMap<QString, QVariant> valueMap;
|
||||
while ( vLayer->nextFeature( f ) )
|
||||
while ( fit.nextFeature( f ) )
|
||||
{
|
||||
QVariant val1 = f.attribute( idx );
|
||||
QVariant val2 = f.attribute( idx2 );
|
||||
@ -183,10 +184,11 @@ void QgsAttributeTypeLoadDialog::loadDataToValueMap()
|
||||
QgsAttributeList attributeList = QgsAttributeList();
|
||||
attributeList.append( idx );
|
||||
attributeList.append( idx2 );
|
||||
vLayer->select( attributeList, QgsRectangle(), false );
|
||||
|
||||
QgsFeatureIterator fit = vLayer->getFeatures( QgsFeatureRequest().setFlags( QgsFeatureRequest::NoGeometry ).setSubsetOfAttributes( attributeList ) );
|
||||
|
||||
QgsFeature f;
|
||||
while ( vLayer->nextFeature( f ) )
|
||||
while ( fit.nextFeature( f ) )
|
||||
{
|
||||
QVariant val = f.attribute( idx );
|
||||
if ( val.isValid() && !val.isNull() && !val.toString().isEmpty() )
|
||||
|
@ -161,8 +161,8 @@ void QgsFieldCalculator::accept()
|
||||
bool useGeometry = exp.needsGeometry();
|
||||
int rownum = 1;
|
||||
|
||||
mVectorLayer->select( mVectorLayer->pendingAllAttributesList(), QgsRectangle(), useGeometry, false );
|
||||
while ( mVectorLayer->nextFeature( feature ) )
|
||||
QgsFeatureIterator fit = mVectorLayer->getFeatures( QgsFeatureRequest().setFlags( useGeometry ? QgsFeatureRequest::NoFlags : QgsFeatureRequest::NoGeometry ) );
|
||||
while ( fit.nextFeature( feature ) )
|
||||
{
|
||||
if ( onlySelected )
|
||||
{
|
||||
|
@ -500,8 +500,8 @@ int QgsGraduatedSymbolDialog::quantilesFromVectorLayer( std::list<double>& resul
|
||||
double currentValue;
|
||||
int index = 0;
|
||||
|
||||
mVectorLayer->select( attList, QgsRectangle(), false );
|
||||
while ( mVectorLayer->nextFeature( currentFeature ) )
|
||||
QgsFeatureIterator fit = mVectorLayer->getFeatures( QgsFeatureRequest().setFlags( QgsFeatureRequest::NoGeometry ).setSubsetOfAttributes( attList ) );
|
||||
while ( fit.nextFeature( currentFeature ) )
|
||||
{
|
||||
currentValue = currentFeature.attribute( attributeIndex ).toDouble();
|
||||
attributeValues[index] = currentValue;
|
||||
|
@ -871,7 +871,7 @@ void QgsIdentifyResults::highlightFeature( QTreeWidgetItem *item )
|
||||
QgsFeatureId fid = STRING_TO_FID( featItem->data( 0, Qt::UserRole ) );
|
||||
|
||||
QgsFeature feat;
|
||||
if ( !layer->featureAtId( fid, feat, true, false ) )
|
||||
if ( !layer->getFeatures( QgsFeatureRequest().setFilterFid( fid ).setSubsetOfAttributes( QgsAttributeList() ) ).nextFeature( feat ) )
|
||||
{
|
||||
return;
|
||||
}
|
||||
@ -906,7 +906,7 @@ void QgsIdentifyResults::zoomToFeature()
|
||||
int fid = STRING_TO_FID( featItem->data( 0, Qt::UserRole ) );
|
||||
|
||||
QgsFeature feat;
|
||||
if ( ! layer->featureAtId( fid, feat, true, false ) )
|
||||
if ( ! layer->getFeatures( QgsFeatureRequest().setFilterFid( fid ).setSubsetOfAttributes( QgsAttributeList() ) ).nextFeature( feat ) )
|
||||
{
|
||||
return;
|
||||
}
|
||||
@ -945,7 +945,7 @@ void QgsIdentifyResults::featureForm()
|
||||
int idx = featItem->data( 0, Qt::UserRole + 1 ).toInt();
|
||||
|
||||
QgsFeature f;
|
||||
if ( !vlayer->featureAtId( fid, f ) )
|
||||
if ( !vlayer->getFeatures( QgsFeatureRequest().setFilterFid( fid ) ).nextFeature( f ) )
|
||||
return;
|
||||
|
||||
QgsFeatureAction action( tr( "Attribute changes" ), f, vlayer, idx, -1, this );
|
||||
|
@ -50,7 +50,7 @@ void QgsLabelPropertyDialog::init( const QString& layerId, int featureId, const
|
||||
}
|
||||
|
||||
QgsFeature f;
|
||||
if ( !vlayer->featureAtId( featureId, f, false, true ) )
|
||||
if ( !vlayer->getFeatures( QgsFeatureRequest().setFilterFid( featureId ).setFlags( QgsFeatureRequest::NoGeometry ) ).nextFeature( f ) )
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
@ -94,7 +94,7 @@ void QgsMapToolDeletePart::canvasReleaseEvent( QMouseEvent *e )
|
||||
void QgsMapToolDeletePart::deletePart( QgsFeatureId fId, int beforeVertexNr, QgsVectorLayer* vlayer )
|
||||
{
|
||||
QgsFeature f;
|
||||
vlayer->featureAtId( fId, f );
|
||||
vlayer->getFeatures( QgsFeatureRequest().setFilterFid( fId ) ).nextFeature( f );
|
||||
|
||||
// find out the part number
|
||||
QgsGeometry* g = f.geometry();
|
||||
|
@ -94,7 +94,7 @@ void QgsMapToolDeleteRing::canvasReleaseEvent( QMouseEvent *e )
|
||||
void QgsMapToolDeleteRing::deleteRing( QgsFeatureId fId, int beforeVertexNr, QgsVectorLayer* vlayer )
|
||||
{
|
||||
QgsFeature f;
|
||||
vlayer->featureAtId( fId, f );
|
||||
vlayer->getFeatures( QgsFeatureRequest().setFilterFid( fId ) ).nextFeature( f );
|
||||
|
||||
QgsGeometry* g = f.geometry();
|
||||
QGis::WkbType wkbtype = g->wkbType();
|
||||
|
@ -132,9 +132,9 @@ bool QgsMapToolFeatureAction::doAction( QgsVectorLayer *layer, int x, int y )
|
||||
|
||||
r = toLayerCoordinates( layer, r );
|
||||
|
||||
layer->select( layer->pendingAllAttributesList(), r, true, true );
|
||||
QgsFeatureIterator fit = layer->getFeatures( QgsFeatureRequest().setFilterRect( r ).setFlags( QgsFeatureRequest::ExactIntersect ) );
|
||||
QgsFeature f;
|
||||
while ( layer->nextFeature( f ) )
|
||||
while ( fit.nextFeature( f ) )
|
||||
featList << QgsFeature( f );
|
||||
}
|
||||
catch ( QgsCsException & cse )
|
||||
|
@ -240,9 +240,9 @@ bool QgsMapToolIdentify::identifyVectorLayer( QgsVectorLayer *layer, int x, int
|
||||
|
||||
r = toLayerCoordinates( layer, r );
|
||||
|
||||
layer->select( layer->pendingAllAttributesList(), r, true, true );
|
||||
QgsFeatureIterator fit = layer->getFeatures( QgsFeatureRequest().setFilterRect( r ).setFlags( QgsFeatureRequest::ExactIntersect ) );
|
||||
QgsFeature f;
|
||||
while ( layer->nextFeature( f ) )
|
||||
while ( fit.nextFeature( f ) )
|
||||
featureList << QgsFeature( f );
|
||||
}
|
||||
catch ( QgsCsException & cse )
|
||||
|
@ -178,7 +178,7 @@ QString QgsMapToolLabel::currentLabelText( int trunc )
|
||||
{
|
||||
int labelFieldId = vlayer->fieldNameIndex( labelField );
|
||||
QgsFeature f;
|
||||
if ( vlayer->featureAtId( mCurrentLabelPos.featureId, f, false, true ) )
|
||||
if ( vlayer->getFeatures( QgsFeatureRequest().setFilterFid( mCurrentLabelPos.featureId ).setFlags( QgsFeatureRequest::NoGeometry ) ).nextFeature( f ) )
|
||||
{
|
||||
QString labelText = f.attribute( labelFieldId ).toString();
|
||||
if ( trunc > 0 && labelText.length() > trunc )
|
||||
@ -231,7 +231,10 @@ bool QgsMapToolLabel::currentFeature( QgsFeature& f, bool fetchGeom )
|
||||
{
|
||||
return false;
|
||||
}
|
||||
return vlayer->featureAtId( mCurrentLabelPos.featureId, f, fetchGeom, true );
|
||||
return vlayer->getFeatures( QgsFeatureRequest()
|
||||
.setFilterFid( mCurrentLabelPos.featureId )
|
||||
.setFlags( fetchGeom ? QgsFeatureRequest::NoFlags : QgsFeatureRequest::NoGeometry )
|
||||
).nextFeature( f );
|
||||
}
|
||||
|
||||
QFont QgsMapToolLabel::labelFontCurrentFeature()
|
||||
@ -247,7 +250,7 @@ QFont QgsMapToolLabel::labelFontCurrentFeature()
|
||||
font = layerSettings.textFont;
|
||||
|
||||
QgsFeature f;
|
||||
if ( vlayer->featureAtId( mCurrentLabelPos.featureId, f, false, true ) )
|
||||
if ( vlayer->getFeatures( QgsFeatureRequest().setFilterFid( mCurrentLabelPos.featureId ).setFlags( QgsFeatureRequest::NoGeometry ) ).nextFeature( f ) )
|
||||
{
|
||||
const QgsAttributes& attributes = f.attributes();
|
||||
QMap< QgsPalLayerSettings::DataDefinedProperties, int > ddProperties = layerSettings.dataDefinedProperties;
|
||||
@ -440,7 +443,7 @@ bool QgsMapToolLabel::dataDefinedPosition( QgsVectorLayer* vlayer, int featureId
|
||||
}
|
||||
|
||||
QgsFeature f;
|
||||
if ( !vlayer->featureAtId( featureId, f, false, true ) )
|
||||
if ( !vlayer->getFeatures( QgsFeatureRequest().setFilterFid( featureId ).setFlags( QgsFeatureRequest::NoGeometry ) ).nextFeature( f ) )
|
||||
{
|
||||
return false;
|
||||
}
|
||||
@ -490,7 +493,7 @@ bool QgsMapToolLabel::dataDefinedRotation( QgsVectorLayer* vlayer, int featureId
|
||||
}
|
||||
|
||||
QgsFeature f;
|
||||
if ( !vlayer->featureAtId( featureId, f, false, true ) )
|
||||
if ( !vlayer->getFeatures( QgsFeatureRequest().setFilterFid( featureId ).setFlags( QgsFeatureRequest::NoGeometry ) ).nextFeature( f ) )
|
||||
{
|
||||
return false;
|
||||
}
|
||||
@ -525,7 +528,7 @@ bool QgsMapToolLabel::dataDefinedShowHide( QgsVectorLayer* vlayer, int featureId
|
||||
}
|
||||
|
||||
QgsFeature f;
|
||||
if ( !vlayer->featureAtId( featureId, f, false, true ) )
|
||||
if ( !vlayer->getFeatures( QgsFeatureRequest().setFilterFid( featureId ).setFlags( QgsFeatureRequest::NoGeometry ) ).nextFeature( f ) )
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
@ -75,7 +75,7 @@ void QgsMapToolMoveFeature::canvasPressEvent( QMouseEvent * e )
|
||||
|
||||
if ( vlayer->selectedFeatureCount() == 0 )
|
||||
{
|
||||
vlayer->select( QgsAttributeList(), selectRect, true );
|
||||
QgsFeatureIterator fit = vlayer->getFeatures( QgsFeatureRequest().setFilterRect( selectRect ).setSubsetOfAttributes( QgsAttributeList() ) );
|
||||
|
||||
//find the closest feature
|
||||
QgsGeometry* pointGeometry = QgsGeometry::fromPoint( layerCoords );
|
||||
@ -88,7 +88,7 @@ void QgsMapToolMoveFeature::canvasPressEvent( QMouseEvent * e )
|
||||
|
||||
QgsFeature cf;
|
||||
QgsFeature f;
|
||||
while ( vlayer->nextFeature( f ) )
|
||||
while ( fit.nextFeature( f ) )
|
||||
{
|
||||
if ( f.geometry() )
|
||||
{
|
||||
|
@ -71,7 +71,7 @@ void QgsMapToolOffsetCurve::canvasPressEvent( QMouseEvent* e )
|
||||
mSourceLayerId = snapResult.layer->id();
|
||||
|
||||
QgsVectorLayer* vl = dynamic_cast<QgsVectorLayer*>( QgsMapLayerRegistry::instance()->mapLayer( mSourceLayerId ) );
|
||||
if ( vl && vl->featureAtId( snapResult.snappedAtGeometry, fet ) )
|
||||
if ( vl && vl->getFeatures( QgsFeatureRequest().setFilterFid( snapResult.snappedAtGeometry ) ).nextFeature( fet ) )
|
||||
{
|
||||
mForceCopy = ( e->modifiers() & Qt::ControlModifier ); //no geometry modification if ctrl is pressed
|
||||
mOriginalGeometry = createOriginGeometry( vl, snapResult, fet );
|
||||
|
@ -83,13 +83,13 @@ void QgsMapToolReshape::canvasReleaseEvent( QMouseEvent * e )
|
||||
}
|
||||
|
||||
//query all the features that intersect bounding box of capture line
|
||||
vlayer->select( QgsAttributeList(), bbox, true, false );
|
||||
QgsFeatureIterator fit = vlayer->getFeatures( QgsFeatureRequest().setFilterRect( bbox ).setSubsetOfAttributes( QgsAttributeList() ) );
|
||||
QgsFeature f;
|
||||
int reshapeReturn;
|
||||
bool reshapeDone = false;
|
||||
|
||||
vlayer->beginEditCommand( tr( "Reshape" ) );
|
||||
while ( vlayer->nextFeature( f ) )
|
||||
while ( fit.nextFeature( f ) )
|
||||
{
|
||||
//query geometry
|
||||
//call geometry->reshape(mCaptureList)
|
||||
|
@ -106,7 +106,7 @@ void QgsMapToolRotateFeature::canvasPressEvent( QMouseEvent * e )
|
||||
|
||||
if ( vlayer->selectedFeatureCount() == 0 )
|
||||
{
|
||||
vlayer->select( QgsAttributeList(), selectRect, true );
|
||||
QgsFeatureIterator fit = vlayer->getFeatures( QgsFeatureRequest().setFilterRect( selectRect ).setSubsetOfAttributes( QgsAttributeList() ) );
|
||||
|
||||
//find the closest feature
|
||||
QgsGeometry* pointGeometry = QgsGeometry::fromPoint( layerCoords );
|
||||
@ -119,7 +119,7 @@ void QgsMapToolRotateFeature::canvasPressEvent( QMouseEvent * e )
|
||||
|
||||
QgsFeature cf;
|
||||
QgsFeature f;
|
||||
while ( vlayer->nextFeature( f ) )
|
||||
while ( fit.nextFeature( f ) )
|
||||
{
|
||||
if ( f.geometry() )
|
||||
{
|
||||
@ -215,7 +215,7 @@ void QgsMapToolRotateFeature::canvasReleaseEvent( QMouseEvent * e )
|
||||
foreach ( QgsFeatureId id, mRotatedFeatures )
|
||||
{
|
||||
QgsFeature feat;
|
||||
vlayer->featureAtId( id, feat );
|
||||
vlayer->getFeatures( QgsFeatureRequest().setFilterFid( id ) ).nextFeature( feat );
|
||||
QgsGeometry* geom = feat.geometry();
|
||||
i = start;
|
||||
|
||||
|
@ -120,7 +120,7 @@ void QgsMapToolRotatePointSymbols::canvasPressEvent( QMouseEvent *e )
|
||||
|
||||
//find out initial arrow direction
|
||||
QgsFeature pointFeature;
|
||||
if ( !mActiveLayer->featureAtId( mFeatureNumber, pointFeature, false, true ) )
|
||||
if ( !mActiveLayer->getFeatures( QgsFeatureRequest().setFlags( QgsFeatureRequest::NoGeometry ).setFilterFid( mFeatureNumber ) ).nextFeature( pointFeature ) )
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
@ -131,14 +131,14 @@ void QgsMapToolSelectUtils::setSelectFeatures( QgsMapCanvas* canvas,
|
||||
QgsDebugMsg( "doContains: " + QString( doContains ? "T" : "F" ) );
|
||||
QgsDebugMsg( "doDifference: " + QString( doDifference ? "T" : "F" ) );
|
||||
|
||||
vlayer->select( QgsAttributeList(), selectGeomTrans.boundingBox(), true, true );
|
||||
QgsFeatureIterator fit = vlayer->getFeatures( QgsFeatureRequest().setFilterRect( selectGeomTrans.boundingBox() ).setFlags( QgsFeatureRequest::ExactIntersect ).setSubsetOfAttributes( QgsAttributeList() ) );
|
||||
|
||||
QgsFeatureIds newSelectedFeatures;
|
||||
QgsFeature f;
|
||||
QgsFeatureId closestFeatureId = 0;
|
||||
bool foundSingleFeature = false;
|
||||
double closestFeatureDist = std::numeric_limits<double>::max();
|
||||
while ( vlayer->nextFeature( f ) )
|
||||
while ( fit.nextFeature( f ) )
|
||||
{
|
||||
QgsGeometry* g = f.geometry();
|
||||
if ( doContains )
|
||||
|
@ -210,10 +210,10 @@ bool QgsMapToolShowHideLabels::selectedFeatures( QgsVectorLayer* vlayer,
|
||||
QgsDebugMsg( "Selection layer: " + vlayer->name() );
|
||||
QgsDebugMsg( "Selection polygon: " + selectGeomTrans.exportToWkt() );
|
||||
|
||||
vlayer->select( QgsAttributeList(), selectGeomTrans.boundingBox(), false, true );
|
||||
QgsFeatureIterator fit = vlayer->getFeatures( QgsFeatureRequest().setFilterRect( selectGeomTrans.boundingBox() ).setFlags( QgsFeatureRequest::NoGeometry | QgsFeatureRequest::ExactIntersect ).setSubsetOfAttributes( QgsAttributeList() ) );
|
||||
|
||||
QgsFeature f;
|
||||
while ( vlayer->nextFeature( f ) )
|
||||
while ( fit.nextFeature( f ) )
|
||||
{
|
||||
QgsGeometry* g = f.geometry();
|
||||
|
||||
@ -282,7 +282,7 @@ bool QgsMapToolShowHideLabels::showHideLabel( QgsVectorLayer* vlayer,
|
||||
|
||||
// check if attribute value is already the same
|
||||
QgsFeature f;
|
||||
if ( !vlayer->featureAtId( fid, f, false, true ) )
|
||||
if ( !vlayer->getFeatures( QgsFeatureRequest().setFilterFid( fid ).setFlags( QgsFeatureRequest::NoGeometry ) ).nextFeature( f ) )
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
@ -263,16 +263,16 @@ void QgsMapToolSimplify::canvasPressEvent( QMouseEvent * e )
|
||||
double r = QgsTolerance::vertexSearchRadius( vlayer, mCanvas->mapRenderer() );
|
||||
QgsRectangle selectRect = QgsRectangle( layerCoords.x() - r, layerCoords.y() - r,
|
||||
layerCoords.x() + r, layerCoords.y() + r );
|
||||
vlayer->select( QgsAttributeList(), selectRect, true );
|
||||
QgsFeatureIterator fit = vlayer->getFeatures( QgsFeatureRequest().setFilterRect( selectRect ).setSubsetOfAttributes( QgsAttributeList() ) );
|
||||
|
||||
QgsGeometry* geometry = QgsGeometry::fromPoint( layerCoords );
|
||||
double minDistance = DBL_MAX;
|
||||
double currentDistance;
|
||||
QgsFeature f;
|
||||
|
||||
mSelectedFeature.setValid( false );
|
||||
|
||||
while ( vlayer->nextFeature( f ) )
|
||||
QgsFeature f;
|
||||
while ( fit.nextFeature( f ) )
|
||||
{
|
||||
currentDistance = geometry->distance( *( f.geometry() ) );
|
||||
if ( currentDistance < minDistance )
|
||||
|
@ -551,7 +551,7 @@ void QgsMergeAttributesDialog::createRubberBandForFeature( int featureId )
|
||||
mSelectionRubberBand = new QgsRubberBand( mMapCanvas, mVectorLayer->geometryType() == QGis::Polygon );
|
||||
mSelectionRubberBand->setColor( QColor( 255, 0, 0 ) );
|
||||
QgsFeature featureToSelect;
|
||||
mVectorLayer->featureAtId( featureId, featureToSelect, true, false );
|
||||
mVectorLayer->getFeatures( QgsFeatureRequest().setFilterFid( featureId ).setSubsetOfAttributes( QgsAttributeList() ) ).nextFeature( featureToSelect );
|
||||
mSelectionRubberBand->setToGeometry( featureToSelect.geometry(), mVectorLayer );
|
||||
}
|
||||
|
||||
|
@ -49,7 +49,7 @@ void QgsAtlasComposition::setCoverageLayer( QgsVectorLayer* layer )
|
||||
mCoverageLayer = layer;
|
||||
|
||||
// update the number of features
|
||||
QgsExpression::setSpecialColumn( "$numfeatures", QVariant( (int)mFeatureIds.size() ) );
|
||||
QgsExpression::setSpecialColumn( "$numfeatures", QVariant(( int )mFeatureIds.size() ) );
|
||||
}
|
||||
|
||||
void QgsAtlasComposition::beginRender()
|
||||
@ -82,13 +82,13 @@ void QgsAtlasComposition::beginRender()
|
||||
}
|
||||
|
||||
// select all features with all attributes
|
||||
mCoverageLayer->select( mCoverageLayer->pendingAllAttributesList() );
|
||||
QgsFeatureIterator fit = mCoverageLayer->getFeatures();
|
||||
|
||||
// We cannot use nextFeature() directly since the feature pointer is rewinded by the rendering process
|
||||
// We thus store the feature ids for future extraction
|
||||
QgsFeature feat;
|
||||
mFeatureIds.clear();
|
||||
while ( mCoverageLayer->nextFeature( feat ) )
|
||||
while ( fit.nextFeature( feat ) )
|
||||
{
|
||||
mFeatureIds.push_back( feat.id() );
|
||||
}
|
||||
@ -153,7 +153,7 @@ void QgsAtlasComposition::prepareForFeature( size_t featureI )
|
||||
}
|
||||
|
||||
// retrieve the next feature, based on its id
|
||||
mCoverageLayer->featureAtId( mFeatureIds[ featureI ], mCurrentFeature, /* fetchGeometry = */ true, /* fetchAttributes = */ true );
|
||||
mCoverageLayer->getFeatures( QgsFeatureRequest().setFilterFid( mFeatureIds[ featureI ] ) ).nextFeature( mCurrentFeature );
|
||||
|
||||
if ( mFilenamePattern.size() > 0 )
|
||||
{
|
||||
@ -213,18 +213,18 @@ void QgsAtlasComposition::prepareForFeature( size_t featureI )
|
||||
// geometry height is too big
|
||||
if ( geom_ratio < map_ratio )
|
||||
{
|
||||
// extent the bbox's width
|
||||
double adj_width = ( map_ratio * geom_rect.height() - geom_rect.width() ) / 2.0;
|
||||
xa1 -= adj_width;
|
||||
xa2 += adj_width;
|
||||
// extent the bbox's width
|
||||
double adj_width = ( map_ratio * geom_rect.height() - geom_rect.width() ) / 2.0;
|
||||
xa1 -= adj_width;
|
||||
xa2 += adj_width;
|
||||
}
|
||||
// geometry width is too big
|
||||
else if ( geom_ratio > map_ratio )
|
||||
{
|
||||
// extent the bbox's height
|
||||
double adj_height = (geom_rect.width() / map_ratio - geom_rect.height() ) / 2.0;
|
||||
ya1 -= adj_height;
|
||||
ya2 += adj_height;
|
||||
// extent the bbox's height
|
||||
double adj_height = ( geom_rect.width() / map_ratio - geom_rect.height() ) / 2.0;
|
||||
ya1 -= adj_height;
|
||||
ya2 += adj_height;
|
||||
}
|
||||
new_extent = QgsRectangle( xa1, ya1, xa2, ya2 );
|
||||
|
||||
|
@ -145,17 +145,16 @@ bool QgsComposerAttributeTable::getFeatureAttributes( QList<QgsAttributes>& attr
|
||||
}
|
||||
}
|
||||
|
||||
if ( mDisplayAttributes.size() < 1 )
|
||||
{
|
||||
mVectorLayer->select( mVectorLayer->pendingAllAttributesList(), selectionRect, mShowOnlyVisibleFeatures, mShowOnlyVisibleFeatures );
|
||||
}
|
||||
else
|
||||
{
|
||||
mVectorLayer->select( mDisplayAttributes.toList(), selectionRect, mShowOnlyVisibleFeatures, mShowOnlyVisibleFeatures );
|
||||
}
|
||||
QgsFeatureRequest req;
|
||||
req.setFilterRect( selectionRect );
|
||||
req.setFlags( mShowOnlyVisibleFeatures ? QgsFeatureRequest::ExactIntersect : QgsFeatureRequest::NoGeometry );
|
||||
if ( mDisplayAttributes.size() >= 0 )
|
||||
req.setSubsetOfAttributes( mDisplayAttributes.toList() );
|
||||
|
||||
QgsFeature f;
|
||||
int counter = 0;
|
||||
while ( mVectorLayer->nextFeature( f ) && counter < mMaximumNumberOfFeatures )
|
||||
QgsFeatureIterator fit = mVectorLayer->getFeatures( req );
|
||||
while ( fit.nextFeature( f ) && counter < mMaximumNumberOfFeatures )
|
||||
{
|
||||
attributes.push_back( f.attributes() );
|
||||
++counter;
|
||||
|
@ -57,9 +57,10 @@ class CORE_EXPORT QgsFeatureRequest
|
||||
public:
|
||||
enum Flag
|
||||
{
|
||||
NoGeometry = 0x01, //!< Do not fetch geometry
|
||||
SubsetOfAttributes = 0x02, //!< Fetch only a subset of attributes (setSubsetOfAttributes sets this flag)
|
||||
ExactIntersect = 0x04 //!< Use exact geometry intersection (slower) instead of bounding boxes
|
||||
NoFlags = 0,
|
||||
NoGeometry = 1, //!< Do not fetch geometry
|
||||
SubsetOfAttributes = 2, //!< Fetch only a subset of attributes (setSubsetOfAttributes sets this flag)
|
||||
ExactIntersect = 4 //!< Use exact geometry intersection (slower) instead of bounding boxes
|
||||
};
|
||||
Q_DECLARE_FLAGS( Flags, Flag )
|
||||
|
||||
|
@ -509,13 +509,13 @@ void QgsOfflineEditing::copyVectorLayer( QgsVectorLayer* layer, sqlite3* db, con
|
||||
// NOTE: force feature recount for PostGIS layer, else only visible features are counted, before iterating over all features (WORKAROUND)
|
||||
layer->setSubsetString( "" );
|
||||
|
||||
layer->select( layer->pendingAllAttributesList(), QgsRectangle(), true, false );
|
||||
QgsFeatureIterator fit = layer->getFeatures();
|
||||
|
||||
emit progressModeSet( QgsOfflineEditing::CopyFeatures, layer->featureCount() );
|
||||
int featureCount = 1;
|
||||
|
||||
QList<QgsFeatureId> remoteFeatureIds;
|
||||
while ( layer->nextFeature( f ) )
|
||||
while ( fit.nextFeature( f ) )
|
||||
{
|
||||
remoteFeatureIds << f.id();
|
||||
|
||||
@ -542,8 +542,9 @@ void QgsOfflineEditing::copyVectorLayer( QgsVectorLayer* layer, sqlite3* db, con
|
||||
// update feature id lookup
|
||||
int layerId = getOrCreateLayerId( db, newLayer->id() );
|
||||
QList<QgsFeatureId> offlineFeatureIds;
|
||||
newLayer->select( QgsAttributeList(), QgsRectangle(), false, false );
|
||||
while ( newLayer->nextFeature( f ) )
|
||||
|
||||
QgsFeatureIterator fit = newLayer->getFeatures( QgsFeatureRequest().setFlags( QgsFeatureRequest::NoGeometry ).setSubsetOfAttributes( QgsAttributeList() ) );
|
||||
while ( fit.nextFeature( f ) )
|
||||
{
|
||||
offlineFeatureIds << f.id();
|
||||
}
|
||||
@ -617,7 +618,7 @@ void QgsOfflineEditing::applyFeaturesAdded( QgsVectorLayer* offlineLayer, QgsVec
|
||||
for ( int i = 0; i < newFeatureIds.size(); i++ )
|
||||
{
|
||||
QgsFeature feature;
|
||||
if ( offlineLayer->featureAtId( newFeatureIds.at( i ), feature, true, true ) )
|
||||
if ( offlineLayer->getFeatures( QgsFeatureRequest().setFilterFid( newFeatureIds.at( i ) ) ).nextFeature( feature ) )
|
||||
{
|
||||
features << feature;
|
||||
}
|
||||
@ -709,12 +710,13 @@ void QgsOfflineEditing::updateFidLookup( QgsVectorLayer* remoteLayer, sqlite3* d
|
||||
// NOTE: use QMap for sorted fids
|
||||
QMap < QgsFeatureId, bool /*dummy*/ > newRemoteFids;
|
||||
QgsFeature f;
|
||||
remoteLayer->select( QgsAttributeList(), QgsRectangle(), false, false );
|
||||
|
||||
QgsFeatureIterator fit = remoteLayer->getFeatures( QgsFeatureRequest().setFlags( QgsFeatureRequest::NoGeometry ).setSubsetOfAttributes( QgsAttributeList() ) );
|
||||
|
||||
emit progressModeSet( QgsOfflineEditing::ProcessFeatures, remoteLayer->featureCount() );
|
||||
|
||||
int i = 1;
|
||||
while ( remoteLayer->nextFeature( f ) )
|
||||
while ( fit.nextFeature( f ) )
|
||||
{
|
||||
if ( offlineFid( db, layerId, f.id() ) == -1 )
|
||||
{
|
||||
|
@ -116,14 +116,13 @@ QgsVectorFileWriter::QgsVectorFileWriter(
|
||||
#if defined(GDAL_VERSION_NUM) && GDAL_VERSION_NUM < 1700
|
||||
// check for unique fieldnames
|
||||
QSet<QString> fieldNames;
|
||||
QgsFieldMap::const_iterator fldIt;
|
||||
for ( fldIt = fields.begin(); fldIt != fields.end(); ++fldIt )
|
||||
for ( int i = 0; i < fields.count(); ++i )
|
||||
{
|
||||
QString name = fldIt.value().name().left( 10 );
|
||||
QString name = fields[i].name().left( 10 );
|
||||
if ( fieldNames.contains( name ) )
|
||||
{
|
||||
mErrorMessage = QObject::tr( "trimming attribute name '%1' to ten significant characters produces duplicate column name." )
|
||||
.arg( fldIt.value().name() );
|
||||
.arg( fields[i].name() );
|
||||
mError = ErrAttributeCreationFailed;
|
||||
return;
|
||||
}
|
||||
@ -643,11 +642,6 @@ QgsVectorFileWriter::writeAsVectorFormat( QgsVectorLayer* layer,
|
||||
errorMessage->clear();
|
||||
}
|
||||
|
||||
QgsAttributeList allAttr = skipAttributeCreation ? QgsAttributeList() : layer->pendingAllAttributesList();
|
||||
QgsFeature fet;
|
||||
|
||||
layer->select( allAttr, QgsRectangle(), layer->wkbType() != QGis::WKBNoGeometry );
|
||||
|
||||
const QgsFeatureIds& ids = layer->selectedFeaturesIds();
|
||||
|
||||
// Create our transform
|
||||
@ -664,8 +658,17 @@ QgsVectorFileWriter::writeAsVectorFormat( QgsVectorLayer* layer,
|
||||
|
||||
int n = 0, errors = 0;
|
||||
|
||||
QgsFeatureRequest req;
|
||||
if ( layer->wkbType() == QGis::WKBNoGeometry )
|
||||
req.setFlags( QgsFeatureRequest::NoGeometry );
|
||||
if ( skipAttributeCreation )
|
||||
req.setSubsetOfAttributes( QgsAttributeList() );
|
||||
|
||||
QgsFeatureIterator fit = layer->getFeatures( req );
|
||||
|
||||
// write all features
|
||||
while ( layer->nextFeature( fet ) )
|
||||
QgsFeature fet;
|
||||
while ( fit.nextFeature( fet ) )
|
||||
{
|
||||
if ( onlySelected && !ids.contains( fet.id() ) )
|
||||
continue;
|
||||
|
@ -26,7 +26,6 @@ QgsVectorLayerEditUtils::QgsVectorLayerEditUtils( QgsVectorLayer* layer )
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
bool QgsVectorLayerEditUtils::insertVertex( double x, double y, QgsFeatureId atFeatureId, int beforeVertex )
|
||||
{
|
||||
if ( !L->hasGeometryType() )
|
||||
@ -95,10 +94,10 @@ int QgsVectorLayerEditUtils::addRing( const QList<QgsPoint>& ring )
|
||||
return 3; //ring not valid
|
||||
}
|
||||
|
||||
L->select( QgsAttributeList(), bBox, true, true );
|
||||
QgsFeatureIterator fit = L->getFeatures( QgsFeatureRequest().setFilterRect( bBox ).setFlags( QgsFeatureRequest::ExactIntersect ) );
|
||||
|
||||
QgsFeature f;
|
||||
while ( L->nextFeature( f ) )
|
||||
while ( fit.nextFeature( f ) )
|
||||
{
|
||||
addRingReturnCode = f.geometry()->addRing( ring );
|
||||
if ( addRingReturnCode == 0 )
|
||||
@ -124,7 +123,7 @@ int QgsVectorLayerEditUtils::addPart( const QList<QgsPoint> &points, QgsFeatureI
|
||||
{
|
||||
// it's not in cache: let's fetch it from layer
|
||||
QgsFeature f;
|
||||
if ( !L->featureAtId( featureId, f, true, false ) || !f.geometry() )
|
||||
if ( !L->getFeatures( QgsFeatureRequest().setFilterFid( featureId ).setSubsetOfAttributes( QgsAttributeList() ) ).nextFeature( f ) || !f.geometry() )
|
||||
return 6; //geometry not found
|
||||
|
||||
geometry = *f.geometry();
|
||||
@ -150,7 +149,7 @@ int QgsVectorLayerEditUtils::translateFeature( QgsFeatureId featureId, double dx
|
||||
{
|
||||
// it's not in cache: let's fetch it from layer
|
||||
QgsFeature f;
|
||||
if ( !L->featureAtId( featureId, f, true, false ) || !f.geometry() )
|
||||
if ( !L->getFeatures( QgsFeatureRequest().setFilterFid( featureId ).setSubsetOfAttributes( QgsAttributeList() ) ).nextFeature( f ) || !f.geometry() )
|
||||
return 1; //geometry not found
|
||||
|
||||
geometry = *f.geometry();
|
||||
@ -215,10 +214,10 @@ int QgsVectorLayerEditUtils::splitFeatures( const QList<QgsPoint>& splitLine, bo
|
||||
}
|
||||
}
|
||||
|
||||
L->select( L->pendingAllAttributesList(), bBox, true, true );
|
||||
QgsFeatureIterator fit = L->getFeatures( QgsFeatureRequest().setFilterRect( bBox ).setFlags( QgsFeatureRequest::ExactIntersect ) );
|
||||
|
||||
QgsFeature f;
|
||||
while ( L->nextFeature( f ) )
|
||||
while ( fit.nextFeature( f ) )
|
||||
featureList << QgsFeature( f );
|
||||
}
|
||||
|
||||
|
@ -293,7 +293,13 @@ QgsVectorLayerImport::importLayer( QgsVectorLayer* layer,
|
||||
QgsAttributeList allAttr = skipAttributeCreation ? QgsAttributeList() : layer->pendingAllAttributesList();
|
||||
QgsFeature fet;
|
||||
|
||||
layer->select( allAttr, QgsRectangle(), wkbType != QGis::WKBNoGeometry );
|
||||
QgsFeatureRequest req;
|
||||
if ( wkbType == QGis::WKBNoGeometry )
|
||||
req.setFlags( QgsFeatureRequest::NoGeometry );
|
||||
if ( skipAttributeCreation )
|
||||
req.setSubsetOfAttributes( QgsAttributeList() );
|
||||
|
||||
QgsFeatureIterator fit = layer->getFeatures( req );
|
||||
|
||||
const QgsFeatureIds& ids = layer->selectedFeaturesIds();
|
||||
|
||||
@ -322,7 +328,7 @@ QgsVectorLayerImport::importLayer( QgsVectorLayer* layer,
|
||||
}
|
||||
|
||||
// write all features
|
||||
while ( layer->nextFeature( fet ) )
|
||||
while ( fit.nextFeature( fet ) )
|
||||
{
|
||||
if ( progress && progress->wasCanceled() )
|
||||
{
|
||||
|
@ -63,12 +63,13 @@ void QgsVectorLayerJoinBuffer::cacheJoinLayer( QgsVectorJoinInfo& joinInfo )
|
||||
QgsVectorLayer* cacheLayer = dynamic_cast<QgsVectorLayer*>( QgsMapLayerRegistry::instance()->mapLayer( joinInfo.joinLayerId ) );
|
||||
if ( cacheLayer )
|
||||
{
|
||||
int joinFieldIndex = cacheLayer->pendingFields().indexFromName(joinInfo.joinFieldName);
|
||||
int joinFieldIndex = cacheLayer->pendingFields().indexFromName( joinInfo.joinFieldName );
|
||||
|
||||
joinInfo.cachedAttributes.clear();
|
||||
cacheLayer->select( cacheLayer->pendingAllAttributesList(), QgsRectangle(), false, false );
|
||||
|
||||
QgsFeatureIterator fit = cacheLayer->getFeatures( QgsFeatureRequest().setFlags( QgsFeatureRequest::NoGeometry ) );
|
||||
QgsFeature f;
|
||||
while ( cacheLayer->nextFeature( f ) )
|
||||
while ( fit.nextFeature( f ) )
|
||||
{
|
||||
const QgsAttributes& attrs = f.attributes();
|
||||
joinInfo.cachedAttributes.insert( attrs[joinFieldIndex].toString(), attrs );
|
||||
@ -87,10 +88,10 @@ void QgsVectorLayerJoinBuffer::updateFields( QgsFields& fields )
|
||||
continue;
|
||||
}
|
||||
|
||||
joinIt->tmpTargetField = fields.indexFromName(joinIt->targetFieldName);
|
||||
joinIt->tmpTargetField = fields.indexFromName( joinIt->targetFieldName );
|
||||
|
||||
const QgsFields& joinFields = joinLayer->pendingFields();
|
||||
joinIt->tmpJoinField = joinFields.indexFromName(joinIt->joinFieldName);
|
||||
joinIt->tmpJoinField = joinFields.indexFromName( joinIt->joinFieldName );
|
||||
|
||||
for ( int idx = 0; idx < joinFields.count(); ++idx )
|
||||
{
|
||||
@ -99,7 +100,7 @@ void QgsVectorLayerJoinBuffer::updateFields( QgsFields& fields )
|
||||
{
|
||||
QgsField f = joinFields[idx];
|
||||
f.setName( joinLayer->name() + "_" + f.name() );
|
||||
fields.append( f, QgsFields::OriginJoin, idx + (joinIdx*1000) );
|
||||
fields.append( f, QgsFields::OriginJoin, idx + ( joinIdx*1000 ) );
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -153,10 +154,10 @@ void QgsVectorLayerJoinBuffer::readXml( const QDomNode& layer_node )
|
||||
|
||||
const QgsVectorJoinInfo* QgsVectorLayerJoinBuffer::joinForFieldIndex( int index, const QgsFields& fields, int& sourceFieldIndex ) const
|
||||
{
|
||||
if ( fields.fieldOrigin(index) != QgsFields::OriginJoin )
|
||||
if ( fields.fieldOrigin( index ) != QgsFields::OriginJoin )
|
||||
return 0;
|
||||
|
||||
int originIndex = fields.fieldOriginIndex(index);
|
||||
int originIndex = fields.fieldOriginIndex( index );
|
||||
int sourceJoinIndex = originIndex / 1000;
|
||||
sourceFieldIndex = originIndex % 1000;
|
||||
|
||||
|
@ -28,7 +28,7 @@
|
||||
|
||||
|
||||
QgsVectorLayerUndoCommandAddFeature::QgsVectorLayerUndoCommandAddFeature( QgsVectorLayerEditBuffer* buffer, QgsFeature& f )
|
||||
: QgsVectorLayerUndoCommand(buffer)
|
||||
: QgsVectorLayerUndoCommand( buffer )
|
||||
{
|
||||
static int addedIdLowWaterMark = -1;
|
||||
|
||||
@ -47,12 +47,12 @@ QgsVectorLayerUndoCommandAddFeature::QgsVectorLayerUndoCommandAddFeature( QgsVec
|
||||
|
||||
void QgsVectorLayerUndoCommandAddFeature::undo()
|
||||
{
|
||||
QgsFeatureMap::const_iterator it = mBuffer->mAddedFeatures.find(mFeature.id());
|
||||
QgsFeatureMap::const_iterator it = mBuffer->mAddedFeatures.find( mFeature.id() );
|
||||
Q_ASSERT( it != mBuffer->mAddedFeatures.end() );
|
||||
mBuffer->mAddedFeatures.remove(mFeature.id());
|
||||
mBuffer->mAddedFeatures.remove( mFeature.id() );
|
||||
|
||||
if ( mFeature.geometry() )
|
||||
cache()->removeGeometry(mFeature.id());
|
||||
cache()->removeGeometry( mFeature.id() );
|
||||
|
||||
emit mBuffer->featureDeleted( mFeature.id() );
|
||||
}
|
||||
@ -70,7 +70,7 @@ void QgsVectorLayerUndoCommandAddFeature::redo()
|
||||
|
||||
|
||||
QgsVectorLayerUndoCommandDeleteFeature::QgsVectorLayerUndoCommandDeleteFeature( QgsVectorLayerEditBuffer* buffer, QgsFeatureId fid )
|
||||
: QgsVectorLayerUndoCommand(buffer)
|
||||
: QgsVectorLayerUndoCommand( buffer )
|
||||
{
|
||||
mFid = fid;
|
||||
|
||||
@ -113,8 +113,8 @@ void QgsVectorLayerUndoCommandDeleteFeature::redo()
|
||||
|
||||
|
||||
QgsVectorLayerUndoCommandChangeGeometry::QgsVectorLayerUndoCommandChangeGeometry( QgsVectorLayerEditBuffer* buffer, QgsFeatureId fid, QgsGeometry* newGeom )
|
||||
: QgsVectorLayerUndoCommand(buffer),
|
||||
mFid(fid)
|
||||
: QgsVectorLayerUndoCommand( buffer ),
|
||||
mFid( fid )
|
||||
{
|
||||
|
||||
if ( FID_IS_NEW( mFid ) )
|
||||
@ -125,13 +125,13 @@ QgsVectorLayerUndoCommandChangeGeometry::QgsVectorLayerUndoCommandChangeGeometry
|
||||
}
|
||||
else
|
||||
{
|
||||
bool changedAlready = mBuffer->mChangedGeometries.contains(mFid);
|
||||
bool changedAlready = mBuffer->mChangedGeometries.contains( mFid );
|
||||
QgsGeometry geom;
|
||||
bool cachedGeom = cache()->geometry(mFid, geom);
|
||||
mOldGeom = (changedAlready && cachedGeom) ? new QgsGeometry( geom ) : 0;
|
||||
bool cachedGeom = cache()->geometry( mFid, geom );
|
||||
mOldGeom = ( changedAlready && cachedGeom ) ? new QgsGeometry( geom ) : 0;
|
||||
}
|
||||
|
||||
mNewGeom = new QgsGeometry(*newGeom);
|
||||
mNewGeom = new QgsGeometry( *newGeom );
|
||||
}
|
||||
|
||||
QgsVectorLayerUndoCommandChangeGeometry::~QgsVectorLayerUndoCommandChangeGeometry()
|
||||
@ -161,7 +161,7 @@ void QgsVectorLayerUndoCommandChangeGeometry::undo()
|
||||
mBuffer->mChangedGeometries.remove( mFid );
|
||||
|
||||
QgsFeature f;
|
||||
if ( layer()->featureAtId( mFid, f, true, false ) && f.geometry() )
|
||||
if ( layer()->getFeatures( QgsFeatureRequest().setFilterFid( mFid ).setSubsetOfAttributes( QgsAttributeList() ) ).nextFeature( f ) && f.geometry() )
|
||||
{
|
||||
cache()->cacheGeometry( mFid, *f.geometry() );
|
||||
emit mBuffer->geometryChanged( mFid, *f.geometry() );
|
||||
@ -199,11 +199,11 @@ void QgsVectorLayerUndoCommandChangeGeometry::redo()
|
||||
|
||||
|
||||
QgsVectorLayerUndoCommandChangeAttribute::QgsVectorLayerUndoCommandChangeAttribute( QgsVectorLayerEditBuffer* buffer, QgsFeatureId fid, int fieldIndex, const QVariant& newValue )
|
||||
: QgsVectorLayerUndoCommand(buffer),
|
||||
mFid(fid),
|
||||
mFieldIndex(fieldIndex),
|
||||
mNewValue(newValue),
|
||||
mFirstChange(true)
|
||||
: QgsVectorLayerUndoCommand( buffer ),
|
||||
mFid( fid ),
|
||||
mFieldIndex( fieldIndex ),
|
||||
mNewValue( newValue ),
|
||||
mFirstChange( true )
|
||||
{
|
||||
|
||||
if ( FID_IS_NEW( mFid ) )
|
||||
@ -296,8 +296,8 @@ void QgsVectorLayerUndoCommandChangeAttribute::redo()
|
||||
|
||||
|
||||
QgsVectorLayerUndoCommandAddAttribute::QgsVectorLayerUndoCommandAddAttribute( QgsVectorLayerEditBuffer* buffer, const QgsField& field )
|
||||
: QgsVectorLayerUndoCommand(buffer),
|
||||
mField(field)
|
||||
: QgsVectorLayerUndoCommand( buffer ),
|
||||
mField( field )
|
||||
{
|
||||
mFieldIndex = layer()->pendingFields().count();
|
||||
}
|
||||
@ -327,13 +327,13 @@ void QgsVectorLayerUndoCommandAddAttribute::redo()
|
||||
|
||||
|
||||
QgsVectorLayerUndoCommandDeleteAttribute::QgsVectorLayerUndoCommandDeleteAttribute( QgsVectorLayerEditBuffer* buffer, int fieldIndex )
|
||||
: QgsVectorLayerUndoCommand(buffer),
|
||||
: QgsVectorLayerUndoCommand( buffer ),
|
||||
mFieldIndex( fieldIndex )
|
||||
{
|
||||
const QgsFields& fields = layer()->pendingFields();
|
||||
QgsFields::FieldOrigin origin = fields.fieldOrigin( mFieldIndex );
|
||||
mOriginIndex = fields.fieldOriginIndex( mFieldIndex );
|
||||
mProviderField = (origin == QgsFields::OriginProvider);
|
||||
mProviderField = ( origin == QgsFields::OriginProvider );
|
||||
|
||||
if ( !mProviderField )
|
||||
{
|
||||
@ -342,18 +342,18 @@ QgsVectorLayerUndoCommandDeleteAttribute::QgsVectorLayerUndoCommandDeleteAttribu
|
||||
}
|
||||
|
||||
// save values of new features
|
||||
for (QgsFeatureMap::const_iterator it = mBuffer->mAddedFeatures.begin(); it != mBuffer->mAddedFeatures.end(); ++it)
|
||||
for ( QgsFeatureMap::const_iterator it = mBuffer->mAddedFeatures.begin(); it != mBuffer->mAddedFeatures.end(); ++it )
|
||||
{
|
||||
const QgsFeature& f = it.value();
|
||||
mDeletedValues.insert(f.id(), f.attribute(mFieldIndex));
|
||||
mDeletedValues.insert( f.id(), f.attribute( mFieldIndex ) );
|
||||
}
|
||||
|
||||
// save changed values
|
||||
for (QgsChangedAttributesMap::const_iterator it = mBuffer->mChangedAttributeValues.begin(); it != mBuffer->mChangedAttributeValues.end(); ++it)
|
||||
for ( QgsChangedAttributesMap::const_iterator it = mBuffer->mChangedAttributeValues.begin(); it != mBuffer->mChangedAttributeValues.end(); ++it )
|
||||
{
|
||||
const QgsAttributeMap& attrs = it.value();
|
||||
if (attrs.contains(mFieldIndex))
|
||||
mDeletedValues.insert(it.key(), attrs[mFieldIndex]);
|
||||
if ( attrs.contains( mFieldIndex ) )
|
||||
mDeletedValues.insert( it.key(), attrs[mFieldIndex] );
|
||||
}
|
||||
}
|
||||
|
||||
@ -373,15 +373,15 @@ void QgsVectorLayerUndoCommandDeleteAttribute::undo()
|
||||
mBuffer->handleAttributeAdded( mFieldIndex ); // update changed attributes + new features
|
||||
|
||||
// set previously used attributes of new features
|
||||
for (QgsFeatureMap::iterator it = mBuffer->mAddedFeatures.begin(); it != mBuffer->mAddedFeatures.end(); ++it)
|
||||
for ( QgsFeatureMap::iterator it = mBuffer->mAddedFeatures.begin(); it != mBuffer->mAddedFeatures.end(); ++it )
|
||||
{
|
||||
QgsFeature& f = it.value();
|
||||
f.setAttribute( mFieldIndex, mDeletedValues.value(f.id()) );
|
||||
f.setAttribute( mFieldIndex, mDeletedValues.value( f.id() ) );
|
||||
}
|
||||
// set previously used changed attributes
|
||||
for (QMap<QgsFeatureId, QVariant>::const_iterator it = mDeletedValues.begin(); it != mDeletedValues.end(); ++it)
|
||||
for ( QMap<QgsFeatureId, QVariant>::const_iterator it = mDeletedValues.begin(); it != mDeletedValues.end(); ++it )
|
||||
{
|
||||
if (!FID_IS_NEW( it.key() ))
|
||||
if ( !FID_IS_NEW( it.key() ) )
|
||||
{
|
||||
QgsAttributeMap& attrs = mBuffer->mChangedAttributeValues[it.key()]; // also adds record if nonexistant
|
||||
attrs.insert( mFieldIndex, it.value() );
|
||||
|
@ -800,8 +800,9 @@ QgsGraduatedSymbolRendererV2* QgsGraduatedSymbolRendererV2::createRenderer(
|
||||
QgsFeature f;
|
||||
QgsAttributeList lst;
|
||||
lst.append( attrNum );
|
||||
vlayer->select( lst, QgsRectangle(), false );
|
||||
while ( vlayer->nextFeature( f ) )
|
||||
|
||||
QgsFeatureIterator fit = vlayer->getFeatures( QgsFeatureRequest().setFlags( QgsFeatureRequest::NoGeometry ).setSubsetOfAttributes( QgsAttributeList() ) );
|
||||
while ( fit.nextFeature( f ) )
|
||||
values.append( f.attribute( attrNum ).toDouble() );
|
||||
// calculate the breaks
|
||||
if ( mode == Quantile )
|
||||
|
@ -364,8 +364,8 @@ void QgsPointDisplacementRenderer::createDisplacementGroups( QgsVectorLayer* vla
|
||||
QgsFeature f;
|
||||
QList<QgsFeatureId> intersectList;
|
||||
|
||||
vlayer->select( attList, viewExtent, true, false );
|
||||
while ( vlayer->nextFeature( f ) )
|
||||
QgsFeatureIterator fit = vlayer->getFeatures( QgsFeatureRequest().setFilterRect( viewExtent ).setSubsetOfAttributes( attList ) );
|
||||
while ( fit.nextFeature( f ) )
|
||||
{
|
||||
intersectList.clear();
|
||||
|
||||
@ -399,7 +399,7 @@ void QgsPointDisplacementRenderer::createDisplacementGroups( QgsVectorLayer* vla
|
||||
{
|
||||
QMap<QgsFeatureId, QgsFeature> newMap;
|
||||
QgsFeature existingFeature;
|
||||
vlayer->featureAtId( existingEntry, existingFeature );
|
||||
vlayer->getFeatures( QgsFeatureRequest().setFilterFid( existingEntry ) ).nextFeature( existingFeature );
|
||||
newMap.insert( existingEntry, existingFeature );
|
||||
mDisplacementIds.insert( existingEntry );
|
||||
newMap.insert( f.id(), f );
|
||||
@ -409,8 +409,6 @@ void QgsPointDisplacementRenderer::createDisplacementGroups( QgsVectorLayer* vla
|
||||
}
|
||||
}
|
||||
}
|
||||
//refresh the selection because the vector layer is going to step through all features now
|
||||
vlayer->select( attList, viewExtent, true, false );
|
||||
}
|
||||
|
||||
QgsRectangle QgsPointDisplacementRenderer::searchRect( const QgsPoint& p ) const
|
||||
|
@ -47,7 +47,7 @@ void QgsAttributeTableMemoryModel::loadLayer()
|
||||
rect = mCurrentExtent;
|
||||
}
|
||||
|
||||
mLayer->select( mLayer->pendingAllAttributesList(), rect, false );
|
||||
QgsFeatureIterator fit = mLayer->getFeatures( QgsFeatureRequest().setFilterRect( rect ).setFlags( QgsFeatureRequest::NoGeometry ) );
|
||||
|
||||
if ( behaviour != 1 )
|
||||
mFeatureMap.reserve( mLayer->pendingFeatureCount() + 50 );
|
||||
@ -60,7 +60,7 @@ void QgsAttributeTableMemoryModel::loadLayer()
|
||||
t.start();
|
||||
|
||||
QgsFeature f;
|
||||
while ( mLayer->nextFeature( f ) )
|
||||
while ( fit.nextFeature( f ) )
|
||||
{
|
||||
if ( behaviour == 1 && !mLayer->selectedFeaturesIds().contains( f.id() ) )
|
||||
continue;
|
||||
|
@ -64,7 +64,7 @@ bool QgsAttributeTableModel::featureAtId( QgsFeatureId fid ) const
|
||||
mFeat = mFeatureMap[ fid ];
|
||||
return true;
|
||||
}
|
||||
else if ( mLayer->featureAtId( fid, mFeat, false, true ) )
|
||||
else if ( mLayer->getFeatures( QgsFeatureRequest().setFilterFid( fid ).setFlags( QgsFeatureRequest::NoGeometry ) ).nextFeature( mFeat ) )
|
||||
{
|
||||
QSettings settings;
|
||||
int cacheSize = qMax( 1, settings.value( "/qgis/attributeTableRowCache", "10000" ).toInt() );
|
||||
@ -334,10 +334,10 @@ void QgsAttributeTableModel::loadLayer()
|
||||
}
|
||||
}
|
||||
|
||||
mLayer->select( attributeList, rect, false );
|
||||
QgsFeatureIterator fit = mLayer->getFeatures( QgsFeatureRequest().setFilterRect( rect ).setFlags( QgsFeatureRequest::NoGeometry ).setSubsetOfAttributes( attributeList ) );
|
||||
|
||||
QgsFeature f;
|
||||
for ( i = 0; mLayer->nextFeature( f ); ++i )
|
||||
for ( i = 0; fit.nextFeature( f ); ++i )
|
||||
{
|
||||
if ( !filter || renderer->willRenderFeature( f ) )
|
||||
{
|
||||
@ -484,10 +484,10 @@ void QgsAttributeTableModel::sort( int column, Qt::SortOrder order )
|
||||
mSortList.clear();
|
||||
|
||||
int idx = fieldIdx( column );
|
||||
mLayer->select( QgsAttributeList() << idx, rect, false );
|
||||
|
||||
QgsFeatureIterator fit = mLayer->getFeatures( QgsFeatureRequest().setFilterRect( rect ).setFlags( QgsFeatureRequest::NoGeometry ).setSubsetOfAttributes( QgsAttributeList() << idx ) );
|
||||
QgsFeature f;
|
||||
while ( mLayer->nextFeature( f ) )
|
||||
while ( fit.nextFeature( f ) )
|
||||
{
|
||||
if ( behaviour == 1 && !mIdRowMap.contains( f.id() ) )
|
||||
continue;
|
||||
|
@ -224,9 +224,10 @@ QWidget *QgsAttributeEditor::createAttributeEditor( QWidget *parent, QWidget *ed
|
||||
attributes << vi;
|
||||
if ( fi >= 0 )
|
||||
attributes << fi;
|
||||
layer->select( attributes, QgsRectangle(), false );
|
||||
|
||||
QgsFeatureIterator fit = layer->getFeatures( QgsFeatureRequest().setFlags( QgsFeatureRequest::NoGeometry ).setSubsetOfAttributes( attributes ) );
|
||||
QgsFeature f;
|
||||
while ( layer->nextFeature( f ) )
|
||||
while ( fit.nextFeature( f ) )
|
||||
{
|
||||
if ( fi >= 0 && f.attribute( fi ).toString() != data.mFilterAttributeValue )
|
||||
continue;
|
||||
|
@ -282,8 +282,7 @@ void QgsExpressionBuilderWidget::on_txtExpressionString_textChanged()
|
||||
|
||||
if ( !mFeature.isValid() )
|
||||
{
|
||||
mLayer->select( mLayer->pendingAllAttributesList(), QgsRectangle(), mLayer->geometryType() != QGis::NoGeometry && exp.needsGeometry() );
|
||||
mLayer->nextFeature( mFeature );
|
||||
mLayer->getFeatures( QgsFeatureRequest().setFlags(( mLayer->geometryType() != QGis::NoGeometry && exp.needsGeometry() ) ? QgsFeatureRequest::NoFlags : QgsFeatureRequest::NoGeometry ) ).nextFeature( mFeature );
|
||||
}
|
||||
|
||||
if ( mFeature.isValid() )
|
||||
|
@ -85,7 +85,7 @@ QWidget* QgsFormAnnotationItem::createDesignerWidget( const QString& filePath )
|
||||
if ( mVectorLayer && mHasAssociatedFeature )
|
||||
{
|
||||
QgsFeature f;
|
||||
if ( mVectorLayer->featureAtId( mFeature, f, false, true ) )
|
||||
if ( mVectorLayer->getFeatures( QgsFeatureRequest().setFilterFid( mFeature ).setFlags( QgsFeatureRequest::NoGeometry ) ).nextFeature( f ) )
|
||||
{
|
||||
const QgsFields& fields = mVectorLayer->pendingFields();
|
||||
const QgsAttributes& attrs = f.attributes();
|
||||
@ -224,19 +224,19 @@ void QgsFormAnnotationItem::setFeatureForMapPosition()
|
||||
return;
|
||||
}
|
||||
|
||||
QgsAttributeList noAttributes;
|
||||
QSettings settings;
|
||||
double identifyValue = settings.value( "/Map/identifyRadius", QGis::DEFAULT_IDENTIFY_RADIUS ).toDouble();
|
||||
double halfIdentifyWidth = mMapCanvas->extent().width() / 100 / 2 * identifyValue;
|
||||
QgsRectangle searchRect( mMapPosition.x() - halfIdentifyWidth, mMapPosition.y() - halfIdentifyWidth,
|
||||
mMapPosition.x() + halfIdentifyWidth, mMapPosition.y() + halfIdentifyWidth );
|
||||
mVectorLayer->select( noAttributes, searchRect, false, true );
|
||||
|
||||
QgsFeatureIterator fit = mVectorLayer->getFeatures( QgsFeatureRequest().setFilterRect( searchRect ).setFlags( QgsFeatureRequest::NoGeometry | QgsFeatureRequest::ExactIntersect ).setSubsetOfAttributes( QgsAttributeList() ) );
|
||||
|
||||
QgsFeature currentFeature;
|
||||
QgsFeatureId currentFeatureId = 0;
|
||||
bool featureFound = false;
|
||||
|
||||
while ( mVectorLayer->nextFeature( currentFeature ) )
|
||||
while ( fit.nextFeature( currentFeature ) )
|
||||
{
|
||||
currentFeatureId = currentFeature.id();
|
||||
featureFound = true;
|
||||
|
@ -193,13 +193,14 @@ void QgsHtmlAnnotationItem::setFeatureForMapPosition()
|
||||
double halfIdentifyWidth = mMapCanvas->extent().width() / 100 / 2 * identifyValue;
|
||||
QgsRectangle searchRect( mMapPosition.x() - halfIdentifyWidth, mMapPosition.y() - halfIdentifyWidth,
|
||||
mMapPosition.x() + halfIdentifyWidth, mMapPosition.y() + halfIdentifyWidth );
|
||||
mVectorLayer->select( mVectorLayer->pendingAllAttributesList() , searchRect, false, true );
|
||||
|
||||
QgsFeatureIterator fit = mVectorLayer->getFeatures( QgsFeatureRequest().setFilterRect( searchRect ).setFlags( QgsFeatureRequest::NoGeometry | QgsFeatureRequest::ExactIntersect ) );
|
||||
|
||||
QgsFeature currentFeature;
|
||||
QgsFeatureId currentFeatureId = 0;
|
||||
bool featureFound = false;
|
||||
|
||||
while ( mVectorLayer->nextFeature( currentFeature ) )
|
||||
while ( fit.nextFeature( currentFeature ) )
|
||||
{
|
||||
currentFeatureId = currentFeature.id();
|
||||
featureFound = true;
|
||||
@ -212,7 +213,6 @@ void QgsHtmlAnnotationItem::setFeatureForMapPosition()
|
||||
|
||||
QString newtext = QgsExpression::replaceExpressionText( mHtmlSource, mFeature, vectorLayer() );
|
||||
mWebView->setHtml( newtext );
|
||||
|
||||
}
|
||||
|
||||
void QgsHtmlAnnotationItem::updateVisibility()
|
||||
|
@ -95,8 +95,7 @@ QString QgsMapTip::fetchFeature( QgsMapLayer *layer, QgsPoint &mapPosition, QgsM
|
||||
|
||||
QgsFeature feature;
|
||||
|
||||
vlayer->select( vlayer->pendingAllAttributesList() , r, true, true );
|
||||
if ( !vlayer->nextFeature( feature ) )
|
||||
if ( !vlayer->getFeatures( QgsFeatureRequest().setFilterRect( r ).setFlags( QgsFeatureRequest::ExactIntersect ) ).nextFeature( feature ) )
|
||||
return "";
|
||||
|
||||
int idx = vlayer->fieldNameIndex( vlayer->displayField() );
|
||||
|
@ -123,7 +123,7 @@ void QgsSearchQueryBuilder::getFieldValues( int limit )
|
||||
QgsAttributeList attrs;
|
||||
attrs.append( fieldIndex );
|
||||
|
||||
mLayer->select( attrs, QgsRectangle(), false );
|
||||
QgsFeatureIterator fit = mLayer->getFeatures( QgsFeatureRequest().setFlags( QgsFeatureRequest::NoGeometry ).setSubsetOfAttributes( attrs ) );
|
||||
|
||||
lstValues->setCursor( Qt::WaitCursor );
|
||||
// Block for better performance
|
||||
@ -133,7 +133,7 @@ void QgsSearchQueryBuilder::getFieldValues( int limit )
|
||||
/**MH: keep already inserted values in a set. Querying is much faster compared to QStandardItemModel::findItems*/
|
||||
QSet<QString> insertedValues;
|
||||
|
||||
while ( mLayer->nextFeature( feat ) &&
|
||||
while ( fit.nextFeature( feat ) &&
|
||||
( limit == 0 || mModelValues->rowCount() != limit ) )
|
||||
{
|
||||
value = feat.attribute( fieldIndex ).toString();
|
||||
@ -209,10 +209,9 @@ long QgsSearchQueryBuilder::countRecords( QString searchString )
|
||||
|
||||
QApplication::setOverrideCursor( Qt::WaitCursor );
|
||||
|
||||
QgsAttributeList allAttributes = mLayer->pendingAllAttributesList();
|
||||
mLayer->select( allAttributes, QgsRectangle(), fetchGeom );
|
||||
QgsFeatureIterator fit = mLayer->getFeatures( QgsFeatureRequest().setFlags( fetchGeom ? QgsFeatureRequest::NoFlags : QgsFeatureRequest::NoGeometry ) );
|
||||
|
||||
while ( mLayer->nextFeature( feat ) )
|
||||
while ( fit.nextFeature( feat ) )
|
||||
{
|
||||
QVariant value = search.evaluate( &feat );
|
||||
if ( value.toInt() != 0 )
|
||||
|
@ -419,7 +419,7 @@ void QgsRuleBasedRendererV2Widget::countFeatures()
|
||||
countMap[rule].duplicateCount = 0;
|
||||
}
|
||||
|
||||
mLayer->select( mLayer->pendingAllAttributesList(), QgsRectangle(), false, false );
|
||||
QgsFeatureIterator fit = mLayer->getFeatures( QgsFeatureRequest().setFlags( QgsFeatureRequest::NoGeometry ) );
|
||||
|
||||
QgsRenderContext renderContext;
|
||||
renderContext.setRendererScale( 0 ); // ignore scale
|
||||
@ -431,7 +431,7 @@ void QgsRuleBasedRendererV2Widget::countFeatures()
|
||||
int featuresCounted = 0;
|
||||
|
||||
QgsFeature f;
|
||||
while ( mLayer->nextFeature( f ) )
|
||||
while ( fit.nextFeature( f ) )
|
||||
{
|
||||
QgsRuleBasedRendererV2::RuleList featureRuleList = mRenderer->rootRule()->rulesForFeature( f );
|
||||
|
||||
@ -551,11 +551,11 @@ void QgsRendererRulePropsDialog::testFilter()
|
||||
|
||||
QApplication::setOverrideCursor( Qt::WaitCursor );
|
||||
|
||||
mLayer->select( mLayer->pendingAllAttributesList(), QgsRectangle(), false );
|
||||
QgsFeatureIterator fit = mLayer->getFeatures( QgsFeatureRequest().setFlags( QgsFeatureRequest::NoGeometry ) );
|
||||
|
||||
int count = 0;
|
||||
QgsFeature f;
|
||||
while ( mLayer->nextFeature( f ) )
|
||||
while ( fit.nextFeature( f ) )
|
||||
{
|
||||
QVariant value = filter.evaluate( &f );
|
||||
if ( value.toInt() != 0 )
|
||||
|
@ -453,7 +453,11 @@ int QgsWFSServer::getFeature( QgsRequestHandler& request, const QString& format
|
||||
if ( maxFeatures == -1 )
|
||||
maxFeat += layer->featureCount();
|
||||
|
||||
layer->select( attrIndexes, searchRect, mWithGeom, true );
|
||||
QgsFeatureIterator fit = layer->getFeatures(
|
||||
QgsFeatureRequest()
|
||||
.setFilterRect( searchRect )
|
||||
.setFlags( QgsFeatureRequest::ExactIntersect | ( mWithGeom ? QgsFeatureRequest::NoFlags : QgsFeatureRequest::NoGeometry ) )
|
||||
.setSubsetOfAttributes( attrIndexes ) );
|
||||
|
||||
long featCounter = 0;
|
||||
QDomNodeList filterNodes = queryElem.elementsByTagName( "Filter" );
|
||||
@ -477,7 +481,10 @@ int QgsWFSServer::getFeature( QgsRequestHandler& request, const QString& format
|
||||
}
|
||||
|
||||
//Need to be test for propertyname
|
||||
layer->featureAtId( fid.toInt(), feature, mWithGeom, true );
|
||||
layer->getFeatures( QgsFeatureRequest()
|
||||
.setFilterFid( fid.toInt() )
|
||||
.setFlags( QgsFeatureRequest::ExactIntersect | ( mWithGeom ? QgsFeatureRequest::NoFlags : QgsFeatureRequest::NoGeometry ) )
|
||||
).nextFeature( feature );
|
||||
|
||||
if ( featureCounter == 0 )
|
||||
startGetFeature( request, format, layerCrs, &searchRect );
|
||||
@ -493,21 +500,28 @@ int QgsWFSServer::getFeature( QgsRequestHandler& request, const QString& format
|
||||
{
|
||||
QDomElement bboxElem = filterElem.firstChildElement();
|
||||
QDomElement childElem = bboxElem.firstChildElement();
|
||||
|
||||
QgsFeatureRequest req;
|
||||
req.setSubsetOfAttributes( attrIndexes );
|
||||
req.setFlags( QgsFeatureRequest::ExactIntersect | ( mWithGeom ? QgsFeatureRequest::NoFlags : QgsFeatureRequest::NoGeometry ) );
|
||||
|
||||
while ( !childElem.isNull() )
|
||||
{
|
||||
if ( childElem.tagName() == "Box" )
|
||||
{
|
||||
QgsRectangle* rect = new QgsRectangle( childElem );
|
||||
layer->select( attrIndexes, *rect, mWithGeom, true );
|
||||
req.setFilterRect( QgsRectangle( childElem ) );
|
||||
}
|
||||
else if ( childElem.tagName() != "PropertyName" )
|
||||
{
|
||||
QgsGeometry* geom = QgsGeometry::fromGML2( childElem );
|
||||
layer->select( attrIndexes, geom->boundingBox(), mWithGeom, true );
|
||||
QgsGeometry *geom = QgsGeometry::fromGML2( childElem );
|
||||
req.setFilterRect( geom->boundingBox() );
|
||||
delete geom;
|
||||
}
|
||||
childElem = childElem.nextSiblingElement();
|
||||
}
|
||||
while ( layer->nextFeature( feature ) && featureCounter < maxFeat )
|
||||
|
||||
QgsFeatureIterator fit = layer->getFeatures( req );
|
||||
while ( fit.nextFeature( feature ) && featureCounter < maxFeat )
|
||||
{
|
||||
if ( featureCounter == 0 )
|
||||
startGetFeature( request, format, layerCrs, &searchRect );
|
||||
@ -526,7 +540,7 @@ int QgsWFSServer::getFeature( QgsRequestHandler& request, const QString& format
|
||||
}
|
||||
if ( mFilter )
|
||||
{
|
||||
while ( layer->nextFeature( feature ) && featureCounter < maxFeat )
|
||||
while ( fit.nextFeature( feature ) && featureCounter < maxFeat )
|
||||
{
|
||||
QVariant res = mFilter->evaluate( &feature, fields );
|
||||
if ( mFilter->hasEvalError() )
|
||||
@ -548,7 +562,7 @@ int QgsWFSServer::getFeature( QgsRequestHandler& request, const QString& format
|
||||
}
|
||||
else
|
||||
{
|
||||
while ( layer->nextFeature( feature ) && featureCounter < maxFeat )
|
||||
while ( fit.nextFeature( feature ) && featureCounter < maxFeat )
|
||||
{
|
||||
if ( featureCounter == 0 )
|
||||
startGetFeature( request, format, layerCrs, &searchRect );
|
||||
@ -784,7 +798,10 @@ int QgsWFSServer::getFeature( QgsRequestHandler& request, const QString& format
|
||||
if ( !fidStr.startsWith( tnStr ) )
|
||||
continue;
|
||||
//Need to be test for propertyname
|
||||
layer->featureAtId( fidStr.section( ".", 1, 1 ).toInt(), feature, mWithGeom, true );
|
||||
layer->getFeatures( QgsFeatureRequest()
|
||||
.setFilterFid( fidStr.section( ".", 1, 1 ).toInt() )
|
||||
.setFlags( mWithGeom ? QgsFeatureRequest::NoFlags : QgsFeatureRequest::NoGeometry )
|
||||
).nextFeature( feature );
|
||||
|
||||
if ( featureCounter == 0 )
|
||||
startGetFeature( request, format, layerCrs, &searchRect );
|
||||
@ -796,7 +813,10 @@ int QgsWFSServer::getFeature( QgsRequestHandler& request, const QString& format
|
||||
}
|
||||
else if ( expFilterOk )
|
||||
{
|
||||
layer->select( attrIndexes, searchRect, mWithGeom, true );
|
||||
QgsFeatureIterator fit = layer->getFeatures( QgsFeatureRequest()
|
||||
.setFilterRect( searchRect )
|
||||
.setFlags( QgsFeatureRequest::ExactIntersect | ( mWithGeom ? QgsFeatureRequest::NoFlags : QgsFeatureRequest::NoGeometry ) )
|
||||
.setSubsetOfAttributes( attrIndexes ) );
|
||||
QgsExpression *mFilter = new QgsExpression( expFilter );
|
||||
if ( mFilter->hasParserError() )
|
||||
{
|
||||
@ -804,7 +824,7 @@ int QgsWFSServer::getFeature( QgsRequestHandler& request, const QString& format
|
||||
}
|
||||
if ( mFilter )
|
||||
{
|
||||
while ( layer->nextFeature( feature ) && featureCounter < maxFeat )
|
||||
while ( fit.nextFeature( feature ) && featureCounter < maxFeat )
|
||||
{
|
||||
QVariant res = mFilter->evaluate( &feature, fields );
|
||||
if ( mFilter->hasEvalError() )
|
||||
@ -826,7 +846,6 @@ int QgsWFSServer::getFeature( QgsRequestHandler& request, const QString& format
|
||||
}
|
||||
else if ( filterOk )
|
||||
{
|
||||
layer->select( attrIndexes, searchRect, mWithGeom, true );
|
||||
QDomElement filterElem = filter.firstChildElement();
|
||||
QDomNodeList fidNodes = filterElem.elementsByTagName( "FeatureId" );
|
||||
if ( fidNodes.size() > 0 )
|
||||
@ -845,7 +864,10 @@ int QgsWFSServer::getFeature( QgsRequestHandler& request, const QString& format
|
||||
}
|
||||
|
||||
//Need to be test for propertyname
|
||||
layer->featureAtId( fid.toInt(), feature, mWithGeom, true );
|
||||
layer->getFeatures( QgsFeatureRequest()
|
||||
.setFilterFid( fid.toInt() )
|
||||
.setFlags( mWithGeom ? QgsFeatureRequest::NoFlags : QgsFeatureRequest::NoGeometry )
|
||||
).nextFeature( feature );
|
||||
|
||||
if ( featureCounter == 0 )
|
||||
startGetFeature( request, format, layerCrs, &searchRect );
|
||||
@ -861,21 +883,28 @@ int QgsWFSServer::getFeature( QgsRequestHandler& request, const QString& format
|
||||
{
|
||||
QDomElement bboxElem = filterElem.firstChildElement();
|
||||
QDomElement childElem = bboxElem.firstChildElement();
|
||||
|
||||
QgsFeatureRequest req;
|
||||
req.setSubsetOfAttributes( attrIndexes );
|
||||
req.setFlags( QgsFeatureRequest::ExactIntersect | ( mWithGeom ? QgsFeatureRequest::NoFlags : QgsFeatureRequest::NoGeometry ) );
|
||||
|
||||
while ( !childElem.isNull() )
|
||||
{
|
||||
if ( childElem.tagName() == "Box" )
|
||||
{
|
||||
QgsRectangle* rect = new QgsRectangle( childElem );
|
||||
layer->select( attrIndexes, *rect, mWithGeom, true );
|
||||
req.setFilterRect( QgsRectangle( childElem ) );
|
||||
}
|
||||
else if ( childElem.tagName() != "PropertyName" )
|
||||
{
|
||||
QgsGeometry* geom = QgsGeometry::fromGML2( childElem );
|
||||
layer->select( attrIndexes, geom->boundingBox(), mWithGeom, true );
|
||||
req.setFilterRect( geom->boundingBox() );
|
||||
delete geom;
|
||||
}
|
||||
childElem = childElem.nextSiblingElement();
|
||||
}
|
||||
while ( layer->nextFeature( feature ) && featureCounter < maxFeat )
|
||||
|
||||
QgsFeatureIterator fit = layer->getFeatures( req );
|
||||
while ( fit.nextFeature( feature ) && featureCounter < maxFeat )
|
||||
{
|
||||
if ( featureCounter == 0 )
|
||||
startGetFeature( request, format, layerCrs, &searchRect );
|
||||
@ -894,7 +923,11 @@ int QgsWFSServer::getFeature( QgsRequestHandler& request, const QString& format
|
||||
}
|
||||
if ( mFilter )
|
||||
{
|
||||
while ( layer->nextFeature( feature ) && featureCounter < maxFeat )
|
||||
QgsFeatureIterator fit = layer->getFeatures( QgsFeatureRequest()
|
||||
.setFilterRect( searchRect )
|
||||
.setFlags( QgsFeatureRequest::ExactIntersect | ( mWithGeom ? QgsFeatureRequest::NoFlags : QgsFeatureRequest::NoGeometry ) )
|
||||
.setSubsetOfAttributes( attrIndexes ) );
|
||||
while ( fit.nextFeature( feature ) && featureCounter < maxFeat )
|
||||
{
|
||||
QVariant res = mFilter->evaluate( &feature, fields );
|
||||
if ( mFilter->hasEvalError() )
|
||||
@ -917,8 +950,11 @@ int QgsWFSServer::getFeature( QgsRequestHandler& request, const QString& format
|
||||
}
|
||||
else
|
||||
{
|
||||
layer->select( attrIndexes, searchRect, mWithGeom, true );
|
||||
while ( layer->nextFeature( feature ) && featureCounter < maxFeat )
|
||||
QgsFeatureIterator fit = layer->getFeatures( QgsFeatureRequest()
|
||||
.setFilterRect( searchRect )
|
||||
.setFlags( QgsFeatureRequest::ExactIntersect | ( mWithGeom ? QgsFeatureRequest::NoFlags : QgsFeatureRequest::NoGeometry ) )
|
||||
.setSubsetOfAttributes( attrIndexes ) );
|
||||
while ( fit.nextFeature( feature ) && featureCounter < maxFeat )
|
||||
{
|
||||
if ( featureCounter == 0 )
|
||||
startGetFeature( request, format, layerCrs, &searchRect );
|
||||
@ -1489,7 +1525,7 @@ QgsFeatureIds QgsWFSServer::getFeatureIdsFromFilter( QDomElement filterElem, Qgs
|
||||
{
|
||||
QgsFeatureIds fids;
|
||||
|
||||
QgsVectorDataProvider* provider = layer->dataProvider();
|
||||
QgsVectorDataProvider *provider = layer->dataProvider();
|
||||
QDomNodeList fidNodes = filterElem.elementsByTagName( "FeatureId" );
|
||||
|
||||
if ( fidNodes.size() != 0 )
|
||||
@ -1517,7 +1553,8 @@ QgsFeatureIds QgsWFSServer::getFeatureIdsFromFilter( QDomElement filterElem, Qgs
|
||||
{
|
||||
QgsFeature feature;
|
||||
const QgsFields& fields = provider->fields();
|
||||
while ( layer->nextFeature( feature ) )
|
||||
QgsFeatureIterator fit = layer->getFeatures();
|
||||
while ( fit.nextFeature( feature ) )
|
||||
{
|
||||
QVariant res = mFilter->evaluate( &feature, fields );
|
||||
if ( mFilter->hasEvalError() )
|
||||
|
@ -1265,8 +1265,11 @@ int QgsWMSServer::featureInfoFromVectorLayer( QgsVectorLayer* layer,
|
||||
bool addWktGeometry = mConfigParser && mConfigParser->featureInfoWithWktGeometry();
|
||||
const QSet<QString>& excludedAttributes = layer->excludeAttributesWMS();
|
||||
|
||||
layer->select( layer->pendingAllAttributesList(), searchRect, addWktGeometry || featureBBox, true );
|
||||
while ( layer->nextFeature( feature ) )
|
||||
QgsFeatureIterator fit = layer->getFeatures( QgsFeatureRequest()
|
||||
.setFilterRect( searchRect )
|
||||
.setFlags((( addWktGeometry || featureBBox ) ? QgsFeatureRequest::NoFlags : QgsFeatureRequest::NoGeometry ) | QgsFeatureRequest::ExactIntersect )
|
||||
);
|
||||
while ( fit.nextFeature( feature ) )
|
||||
{
|
||||
++featureCounter;
|
||||
if ( featureCounter > nFeatures )
|
||||
|
@ -80,7 +80,7 @@ void QgsDiagramOverlay::createOverlayObjects( const QgsRenderContext& renderCont
|
||||
if ( mVectorLayer && mDiagramRenderer )
|
||||
{
|
||||
//set spatial filter on data provider
|
||||
mVectorLayer->select( mAttributes, renderContext.extent() );
|
||||
QgsFeatureIterator fit = mVectorLayer->getFeatures( QgsFeatureRequest().setFilterRect( renderContext.extent() ).setSubsetOfAttributes( mAttributes ) );
|
||||
|
||||
QgsFeature currentFeature;
|
||||
QgsGeometry* currentGeometry = 0;
|
||||
@ -93,7 +93,7 @@ void QgsDiagramOverlay::createOverlayObjects( const QgsRenderContext& renderCont
|
||||
std::list<unsigned char*>::iterator bufferIt;
|
||||
std::list<int>::iterator sizeIt;
|
||||
|
||||
while ( mVectorLayer->nextFeature( currentFeature ) )
|
||||
while ( fit.nextFeature( currentFeature ) )
|
||||
{
|
||||
//todo: insert more objects for multipart features
|
||||
if ( mDiagramRenderer->getDiagramDimensions( width, height, currentFeature, renderContext ) != 0 )
|
||||
@ -121,14 +121,14 @@ void QgsDiagramOverlay::drawOverlayObjects( QgsRenderContext& context ) const
|
||||
if ( mVectorLayer && mDiagramRenderer )
|
||||
{
|
||||
//set spatial filter on data provider
|
||||
mVectorLayer->select( mAttributes, context.extent() );
|
||||
QgsFeatureIterator fit = mVectorLayer->getFeatures( QgsFeatureRequest().setFilterRect( context.extent() ).setSubsetOfAttributes( mAttributes ) );
|
||||
|
||||
QgsFeature currentFeature;
|
||||
QImage* currentDiagramImage = 0;
|
||||
|
||||
QPainter* painter = context.painter();
|
||||
|
||||
while ( mVectorLayer->nextFeature( currentFeature ) )
|
||||
while ( fit.nextFeature( currentFeature ) )
|
||||
{
|
||||
//request diagram from renderer
|
||||
currentDiagramImage = mDiagramRenderer->renderDiagram( currentFeature, context );
|
||||
|
@ -568,7 +568,7 @@ QgsFeature* eVisGenericEventBrowserGui::featureAtId( QgsFeatureId id )
|
||||
//It has mostly been stripped down now
|
||||
if ( mDataProvider && mFeatureIds.size( ) != 0 )
|
||||
{
|
||||
if ( !mVectorLayer->featureAtId( id, mFeature, true, true ) )
|
||||
if ( !mVectorLayer->getFeatures( QgsFeatureRequest().setFilterFid( id ) ).nextFeature( mFeature ) )
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
@ -108,11 +108,11 @@ void eVisEventIdTool::select( QgsPoint thePoint )
|
||||
//Rather than add to the current selection, clear all selected features
|
||||
myLayer->removeSelection( false );
|
||||
//select features
|
||||
myLayer->select( QgsAttributeList(), myRectangle, true, true );
|
||||
QgsFeatureIterator fit = myLayer->getFeatures( QgsFeatureRequest().setFilterRect( myRectangle ).setFlags( QgsFeatureRequest::ExactIntersect ).setSubsetOfAttributes( QgsAttributeList() ) );
|
||||
|
||||
QgsFeature f;
|
||||
QgsFeatureIds newSelectedFeatures;
|
||||
while ( myLayer->nextFeature( f ) )
|
||||
while ( fit.nextFeature( f ) )
|
||||
{
|
||||
newSelectedFeatures.insert( f.id() );
|
||||
}
|
||||
|
@ -389,10 +389,9 @@ void GlobePlugin::setupMap()
|
||||
if ( model )
|
||||
{
|
||||
QgsVectorLayer* layer = mSettingsDialog->modelLayer();
|
||||
QgsAttributeList fetchAttributes;
|
||||
layer->select( fetchAttributes ); //TODO: select only visible features
|
||||
QgsFeatureIterator fit = layer->getFeatures( QgsFeatureRequest().setSubsetOfAttributes( QgsAttributeList() ) ); //TODO: select only visible features
|
||||
QgsFeature feature;
|
||||
while ( layer->nextFeature( feature ) )
|
||||
while ( fit.nextFeature( feature ) )
|
||||
{
|
||||
QgsPoint point = feature.geometry()->asPoint();
|
||||
placeNode( model, point.y(), point.x() );
|
||||
|
@ -172,7 +172,7 @@ void Heatmap::run()
|
||||
}
|
||||
// This might have attributes or mightnot have attibutes at all
|
||||
// based on the variableRadius() and weighted()
|
||||
inputLayer->select( myAttrList );
|
||||
QgsFeatureIterator fit = inputLayer->getFeatures( QgsFeatureRequest().setSubsetOfAttributes( myAttrList ) );
|
||||
int totalFeatures = inputLayer->featureCount();
|
||||
int counter = 0;
|
||||
|
||||
@ -181,7 +181,7 @@ void Heatmap::run()
|
||||
|
||||
QgsFeature myFeature;
|
||||
|
||||
while ( inputLayer->nextFeature( myFeature ) )
|
||||
while ( fit.nextFeature( myFeature ) )
|
||||
{
|
||||
counter++;
|
||||
p.setValue( counter );
|
||||
|
@ -53,7 +53,7 @@ void QgsReaderFeatures::initReader( bool useSelection )
|
||||
}
|
||||
else
|
||||
{
|
||||
mLayer->select( QgsAttributeList() );
|
||||
mFit = mLayer->getFeatures( QgsFeatureRequest().setSubsetOfAttributes( QgsAttributeList() ) );
|
||||
mFuncNextFeature = &QgsReaderFeatures::nextFeatureTotal;
|
||||
}
|
||||
|
||||
@ -61,20 +61,16 @@ void QgsReaderFeatures::initReader( bool useSelection )
|
||||
|
||||
bool QgsReaderFeatures::nextFeatureTotal( QgsFeature & feature )
|
||||
{
|
||||
return mLayer->nextFeature( feature );
|
||||
return mFit.nextFeature( feature );
|
||||
} // bool QgsReaderFeatures::nextFeatureTotal ( QgsFeature & feature )
|
||||
|
||||
bool QgsReaderFeatures::nextFeatureSelected( QgsFeature & feature )
|
||||
{
|
||||
bool bReturn = true;
|
||||
if ( mIterSelectedFeature == mListSelectedFeature.end() )
|
||||
{
|
||||
bReturn = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
feature = *mIterSelectedFeature;
|
||||
mIterSelectedFeature++;
|
||||
}
|
||||
return bReturn;
|
||||
return false;
|
||||
|
||||
feature = *mIterSelectedFeature;
|
||||
mIterSelectedFeature++;
|
||||
|
||||
return true;
|
||||
} // bool QgsReaderFeatures::nextFeatureSelected( QgsFeature &feature )
|
||||
|
@ -72,6 +72,7 @@ class QgsReaderFeatures
|
||||
QgsFeatureList mListSelectedFeature;
|
||||
QList<QgsFeature>::iterator mIterSelectedFeature;
|
||||
bool ( QgsReaderFeatures::* mFuncNextFeature )( QgsFeature & );
|
||||
QgsFeatureIterator mFit;
|
||||
};
|
||||
|
||||
#endif // READERFEATURES_H
|
||||
|
@ -64,7 +64,7 @@ void QgsRubberSelectId::addFeature( QgsVectorLayer* lyr, QgsFeatureId fid )
|
||||
setStyle();
|
||||
}
|
||||
QgsFeature feat;
|
||||
if ( !lyr->featureAtId( fid, feat, true, false ) )
|
||||
if ( !lyr->getFeatures( QgsFeatureRequest().setFilterFid( fid ).setSubsetOfAttributes( QgsAttributeList() ) ).nextFeature( feat ) )
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
@ -293,7 +293,7 @@ void QgsSpatialQuery::populateIndexResult(
|
||||
QList<QgsFeatureId>::iterator iterIdReference = listIdReference.begin();
|
||||
for ( ; iterIdReference != listIdReference.end(); iterIdReference++ )
|
||||
{
|
||||
mLayerReference->featureAtId( *iterIdReference, featureReference );
|
||||
mLayerReference->getFeatures( QgsFeatureRequest().setFilterFid( *iterIdReference ) ).nextFeature( featureReference );
|
||||
geomReference = featureReference.geometry();
|
||||
if (( geomTarget->*op )( geomReference ) )
|
||||
{
|
||||
@ -321,7 +321,7 @@ void QgsSpatialQuery::populateIndexResultDisjoint(
|
||||
bool addIndex = true;
|
||||
for ( ; iterIdReference != listIdReference.end(); iterIdReference++ )
|
||||
{
|
||||
mLayerReference->featureAtId( *iterIdReference, featureReference );
|
||||
mLayerReference->getFeatures( QgsFeatureRequest().setFilterFid( *iterIdReference ) ).nextFeature( featureReference );
|
||||
geomReference = featureReference.geometry();
|
||||
|
||||
if ( !( geomTarget->*op )( geomReference ) )
|
||||
|
@ -673,7 +673,7 @@ void QgsSpatialQueryDialog::zoomFeature( QgsVectorLayer* lyr, QgsFeatureId fid )
|
||||
}
|
||||
|
||||
QgsFeature feat;
|
||||
if ( !lyr->featureAtId( fid, feat, true, false ) )
|
||||
if ( !lyr->getFeatures( QgsFeatureRequest().setFilterFid( fid ).setSubsetOfAttributes( QgsAttributeList() ) ).nextFeature( feat ) )
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
@ -125,11 +125,10 @@ void TestQgsComposerLabel::evaluation()
|
||||
|
||||
void TestQgsComposerLabel::feature_evaluation()
|
||||
{
|
||||
QgsAttributeList allAttrs = mVectorLayer->pendingAllAttributesList();
|
||||
mVectorLayer->select( allAttrs );
|
||||
QgsFeatureIterator fit = mVectorLayer->getFeatures();
|
||||
QgsFeature feat;
|
||||
|
||||
mVectorLayer->nextFeature( feat );
|
||||
fit.nextFeature( feat );
|
||||
{
|
||||
// evaluation with a feature
|
||||
mComposerLabel->setExpressionContext( &feat, mVectorLayer );
|
||||
@ -138,7 +137,7 @@ void TestQgsComposerLabel::feature_evaluation()
|
||||
QString expected = "Basse-Normandie_ok";
|
||||
QCOMPARE( evaluated, expected );
|
||||
}
|
||||
mVectorLayer->nextFeature( feat );
|
||||
fit.nextFeature( feat );
|
||||
{
|
||||
// evaluation with a feature
|
||||
mComposerLabel->setExpressionContext( &feat, mVectorLayer );
|
||||
|
@ -144,8 +144,8 @@ class TestQgsVectorLayer: public QObject
|
||||
QgsAttributeList myList;
|
||||
myList << 0 << 1 << 2 << 3;
|
||||
int myCount = 0;
|
||||
mpNonSpatialLayer->select( myList );
|
||||
while ( mpNonSpatialLayer->nextFeature( f ) )
|
||||
QgsFeatureIterator fit = mpNonSpatialLayer->getFeatures( QgsFeatureRequest().setSubsetOfAttributes( myList ) );
|
||||
while ( fit.nextFeature( f ) )
|
||||
{
|
||||
qDebug( "Getting non-spatial feature from layer" );
|
||||
myCount++;
|
||||
|
Loading…
x
Reference in New Issue
Block a user