我正在为GIS软件开发一个插件QGIS 2.14.3。我还使用Qt Designer 4.8.5。
我有几个复选框,当单独选中时,执行它们的相关函数。这将选择GIS地图上的多边形要素并打印其面积总和:
总共有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()
我怎样才能使它在选中多个复选框时,打印区域是这些复选框的总和?你知道吗
我想我需要定义另一个函数来计算面积之和并打印出来,但不确定如何继续。你知道吗
您可以使用select(ids)函数代替setSelectedFeatures(ids)函数。当setSelectedFeatures(ids)取消选择以前选定的功能并选择新功能时,select(ids)函数将新的ids添加到选定的ids中。你知道吗
通过计算选定要素的总面积,可以得到所需的值。你知道吗
相关问题 更多 >
编程相关推荐