En mi camino para encontrar una solución a Esta pregunta Estoy tratando de fusionar un script generado automáticamente con Este ejemplo.
Mi idea es que después del último paso, podría insertar el script que no hace nada con el archivo sino que sólo renombra el archivo temporal de salida, porque no es una fuente nativa.
Ejecutando todo lo que hay en la caja de herramientas.
¿Cómo puedo establecer la salida temporal como entrada al script de ejemplo?
Esta es la parte del script generado automáticamente:
OUTPUT='OUTPUT'
def initAlgorithm(self, config=None):
self.addParameter(QgsProcessingParameterVectorLayer('maininput', 'Main Input', types=[QgsProcessing.TypeVector], defaultValue=None))
self.addParameter(QgsProcessingParameterFeatureSink(self.OUTPUT,self.tr('My output layer')))
# Buffer
alg_params = {
'DISSOLVE': False,
'DISTANCE': 10,
'END_CAP_STYLE': 0,
'INPUT': parameters['maininput'],
'JOIN_STYLE': 0,
'MITER_LIMIT': 2,
'SEGMENTS': 5,
'OUTPUT': QgsProcessing.TEMPORARY_OUTPUT
}
outputs['Buffer'] = processing.run('native:buffer', alg_params, context=context, feedback=feedback, is_child_algorithm=True)
y después de eso, quiero insertar el otro script, teniendo "outputs['Buffer']['OUTPUT']" en lugar de "INPUT"
source = self.parameterAsSource(parameters, outputs['Buffer']['OUTPUT'], context)
(sink, dest_id) = self.parameterAsSink(
parameters, "OUTPUT", context,
source.fields(), source.wkbType(), source.sourceCrs())
total = 100.0 / source.featureCount() if source.featureCount() else 0
features = source.getFeatures()
for current, feature in enumerate(features):
if feedback.isCanceled():
break
out_feature = QgsFeature(feature)
sink.addFeature(out_feature, QgsFeatureSink.FastInsert)
feedback.setProgress(int(current * total))
return {"OUTPUT": dest_id}
Tengo un error
AttributeError: El objeto 'NoneType' no tiene el atributo 'fields'