def getLayerFromString(string, forceLoad=True): """Returns an object (layer/table) given a source definition. if forceLoad is true, it tries to load it if it is not currently open Otherwise, it will return the object only if it is loaded in QGIS. """ if string is None: return None # prefer project layers layer = QgsProcessingUtils.mapLayerFromProject(string, QgsProject.instance()) if layer: return layer if not forceLoad: return None return QgsProcessingUtils.mapLayerFromString(string)
def value(self): layers = '' for i in range(self.layersTree.topLevelItemCount()): item = self.layersTree.topLevelItem(i) if item: layerName = item.text(0) layer = QgsProcessingUtils.mapLayerFromProject( layerName, QgsProject.instance()) if not layer: continue provider = layer.dataProvider() if not provider: continue interpolationAttribute = item.text(1) if interpolationAttribute == 'Z_COORD': zCoord = True fieldIndex = -1 else: zCoord = False fieldIndex = layer.fields().indexFromName( interpolationAttribute) comboBox = self.layersTree.itemWidget( self.layersTree.topLevelItem(i), 2) inputTypeName = comboBox.currentText() if inputTypeName == self.tr('Points'): inputType = QgsInterpolator.POINTS elif inputTypeName == self.tr('Structure lines'): inputType = QgsInterpolator.STRUCTURE_LINES else: inputType = QgsInterpolator.BREAK_LINES layers += '{},{},{:d},{:d};'.format(layer.source(), zCoord, fieldIndex, inputType) return layers[:-1]
def value(self): layers = '' for i in range(self.layersTree.topLevelItemCount()): item = self.layersTree.topLevelItem(i) if item: layerName = item.text(0) layer = QgsProcessingUtils.mapLayerFromProject(layerName, QgsProject.instance()) if not layer: continue provider = layer.dataProvider() if not provider: continue interpolationAttribute = item.text(1) if interpolationAttribute == 'Z_COORD': zCoord = True fieldIndex = -1 else: zCoord = False fieldIndex = layer.fields().indexFromName(interpolationAttribute) comboBox = self.layersTree.itemWidget(self.layersTree.topLevelItem(i), 2) inputTypeName = comboBox.currentText() if inputTypeName == self.tr('Points'): inputType = QgsInterpolator.POINTS elif inputTypeName == self.tr('Structure lines'): inputType = QgsInterpolator.STRUCTURE_LINES else: inputType = QgsInterpolator.BREAK_LINES layers += '{},{},{:d},{:d};'.format(layer.source(), zCoord, fieldIndex, inputType) return layers[:-1]