Я разрабатываю плагин для программного обеспечения ГИС, QGIS 2.14.3. Я также использую Qt Designer 4.8.5.Как распечатать накопленную геометрическую область при проверке нескольких QCheckBox?
У меня есть несколько флажков, которые при индивидуальной проверке выполняет свою соответствующую функцию. Это выбирает полигоны на карте ГИС и печатает сумму своей области:
Там в 5 рангов в общей сложности около 5 флажков, функция для каждого из них практически одинаковы, но вот первые 2:
selectedLayerIndex = self.dockwidget.combo_box.currentText()
sel_layer = QgsMapLayerRegistry.instance().mapLayersByName(str(selectedLayerIndex))[0]
self.iface.setActiveLayer(sel_layer)
def rank_0():
expr = QgsExpression("\"Rank\"IS NULL")
it = sel_layer.getFeatures(QgsFeatureRequest(expr))
ids = [i.id() for i in it]
if self.dockwidget.rank0_checkbox.isChecked():
sel_layer.setSelectedFeatures(ids)
for f in sel_layer.selectedFeatures():
sel_area = 0
sel_area += f.geometry().area()
self.dockwidget.lineEdit.setText("{:,.2f}".format(sel_area))
else:
sel_layer.removeSelection()
def rank_1():
expr = QgsExpression("\"Rank\"= 1")
it = sel_layer.getFeatures(QgsFeatureRequest(expr))
ids = [i.id() for i in it]
if self.dockwidget.rank1_checkbox.isChecked():
sel_layer.setSelectedFeatures(ids)
for f in sel_layer.selectedFeatures():
sel_area = 0
sel_area += f.geometry().area()
self.dockwidget.lineEdit.setText("{:,.2f}".format(sel_area))
else:
sel_layer.removeSelection()
Как я мог сделать это так, что, когда несколько флажков проверяются, напечатанная площадь равна сумма этих флажков?
Я предполагаю, что мне нужно будет определить другую функцию, чтобы вычислить сумму области и распечатать ее, но не уверен, как действовать.
Я также называю 'sel_area = 0' в каждой функции флажка, которая, вероятно, сбрасывает область и затем печатает область вновь выбранных функций? – Joseph