mirror of
https://github.com/qgis/QGIS.git
synced 2025-06-19 00:02:48 -04:00
More efficient field calculator iteration
This commit is contained in:
parent
0db9f05789
commit
9f3b90775a
@ -536,6 +536,10 @@ void QgsAttributeTableDialog::runFieldCalculation( QgsVectorLayer *layer, const
|
|||||||
|
|
||||||
QgsField fld = layer->fields().at( fieldindex );
|
QgsField fld = layer->fields().at( fieldindex );
|
||||||
|
|
||||||
|
QSet< QString >referencedColumns = exp.referencedColumns();
|
||||||
|
referencedColumns.insert( fld.name() ); // need existing column value to store old attribute when changing field values
|
||||||
|
request.setSubsetOfAttributes( referencedColumns, layer->fields() );
|
||||||
|
|
||||||
//go through all the features and change the new attributes
|
//go through all the features and change the new attributes
|
||||||
QgsFeatureIterator fit = layer->getFeatures( request );
|
QgsFeatureIterator fit = layer->getFeatures( request );
|
||||||
QgsFeature feature;
|
QgsFeature feature;
|
||||||
|
@ -281,6 +281,9 @@ void QgsFieldCalculator::accept()
|
|||||||
emptyAttribute = QVariant( field.type() );
|
emptyAttribute = QVariant( field.type() );
|
||||||
|
|
||||||
QgsFeatureRequest req = QgsFeatureRequest().setFlags( useGeometry ? QgsFeatureRequest::NoFlags : QgsFeatureRequest::NoGeometry );
|
QgsFeatureRequest req = QgsFeatureRequest().setFlags( useGeometry ? QgsFeatureRequest::NoFlags : QgsFeatureRequest::NoGeometry );
|
||||||
|
QSet< QString > referencedColumns = exp.referencedColumns();
|
||||||
|
referencedColumns.insert( field.name() ); // need existing column value to store old attribute when changing field values
|
||||||
|
req.setSubsetOfAttributes( referencedColumns, mVectorLayer->fields() );
|
||||||
if ( mOnlyUpdateSelectedCheckBox->isChecked() )
|
if ( mOnlyUpdateSelectedCheckBox->isChecked() )
|
||||||
{
|
{
|
||||||
req.setFilterFids( mVectorLayer->selectedFeatureIds() );
|
req.setFilterFids( mVectorLayer->selectedFeatureIds() );
|
||||||
|
Loading…
x
Reference in New Issue
Block a user