Return a field value based on another field value

This commit is contained in:
Alireza Adli 2024-08-15 19:28:57 -04:00
parent ccc7db8310
commit fe03556e7c

View File

@ -7,7 +7,8 @@ Project Developer: Alireza Adli alireza.adli@concordia.ca
from qgis.core import QgsApplication, QgsField, QgsProject, \ from qgis.core import QgsApplication, QgsField, QgsProject, \
QgsProcessingFeedback, QgsVectorLayer, QgsVectorDataProvider, \ QgsProcessingFeedback, QgsVectorLayer, QgsVectorDataProvider, \
QgsExpressionContext, QgsExpressionContextUtils, edit, QgsFeatureRequest QgsExpressionContext, QgsExpressionContextUtils, edit, QgsFeatureRequest, \
QgsExpression
from qgis.PyQt.QtCore import QVariant from qgis.PyQt.QtCore import QVariant
from qgis.analysis import QgsNativeAlgorithms from qgis.analysis import QgsNativeAlgorithms
from basic_functions import * from basic_functions import *
@ -26,9 +27,25 @@ class ScrubLayer:
self.layer = self.load_layer() self.layer = self.load_layer()
self.data_count = self.layer.featureCount() self.data_count = self.layer.featureCount()
def cell_content(self, fid, field_name): def cell_value(self, fid, field_name):
return self.layer.getFeature(fid)[field_name] return self.layer.getFeature(fid)[field_name]
def cell_field_field(self, field_name, field_name_value, field_field_value):
expression = QgsExpression(f'{field_name} = {field_name_value}')
request = QgsFeatureRequest(expression)
features = self.layer.getFeatures(request)
for feature in features:
return feature[field_field_value]
def cell_field_fields(self, field_name, field_name_value, field_field_value):
expression = QgsExpression(f'{field_name} = {field_name_value}')
request = QgsFeatureRequest(expression)
features = self.layer.getFeatures(request)
field_field_values = []
for feature in features:
field_field_values.append(feature[field_field_value])
return field_field_values
def load_layer(self): def load_layer(self):
the_layer = QgsVectorLayer(self.layer_path, self.layer_name, 'ogr') the_layer = QgsVectorLayer(self.layer_path, self.layer_name, 'ogr')
if not the_layer.isValid(): if not the_layer.isValid():