Me parece que el modelador de procesamiento extremadamente difícil trabajar con ella y no está tan bien documentada como me gustaría. Como mi primera sugerencia no funcionó, tengo un par de sugerencias más.
Esta fue mi primera sugerencia, que no funcionó:
Las capas intermedias de salida suelen denominarse 'Toolname of layername'
. Por ejemplo, el resultado de ejecutar el programa clip
herramienta en una capa llamada 'vectorlayer', probablemente se llame algo así como 'Clip of vectorlayer'
. Puede encontrar el nombre exacto de un salida intermedia añadiendo cualquier algoritmo que le permita elegir la salida intermedia como entrada en un menú desplegable. Anote cómo se llaman las salidas intermedias, y utiliza ese nombre en tu difference()
expresión.
Sugerencia número dos:
Me pregunto si el problema podría ser tan simple como que está esperando una cadena para 'LayerB', pero la cadena 'Difference' from algorithm 'Building_frontbuffer'
porque tiene comillas simples en su interior. Así que si usas ''Difference' from algorithm 'Building_frontbuffer''
para 'LayerB', creo que se interpretaría como tres cadenas separadas, con un galimatías entre ellas.
- primera cadena:
''
- galimatías:
Difference
- segunda cadena: `' del algoritmo '
- galimatías:
Building_frontbuffer
- tercera cuerda:
''
Si éste es el problema, debe escapar las comillas simples para que la expresión pueda comprender el nombre completo de la capa ( 'Difference' from algorithm 'Building_frontbuffer'
) como una sola cadena.
Según este Q&A, ¿Existe una opción de escape para las comillas simples y los apóstrofes en QGIS? puede poner comillas simples alrededor de una cadena que contenga comillas simples. No creo que funcione, pero vale la pena intentarlo:
''Difference' from algorithm 'Building_frontbuffer''
Observe que la cadena empieza y termina con dos caracteres de comillas simples, no con un carácter de comillas dobles. ( ''
es '
dos veces, no "
)
Si esto no funciona, pruebe a escapar las comillas simples con \
así:
'\'Difference\' from algorithm \'Building_frontbuffer\''
(Basado en las sugerencias de este Q&A en stackoverflow: Sustitución de un apóstrofo en una cadena .)
Sugerencia número tres:
Como solución, convierta la salida "diferencia" en una capa permanente. Defina el nombre de la capa y la ruta del archivo con una cadena de entrada. De esta forma sabrá exactamente cómo se llama la capa y podrá utilizar el nombre de capa correcto en la expresión.
Sugerencia final:
Si ninguna de las sugerencias anteriores funciona, y no puede encontrar una solución, sólo tiene que terminar el modelo en este punto. Haz que la salida final de tu modelo sea una capa permanente de 'Difference' del algoritmo 'Building_frontbuffer'. Pon el resto de tus pasos del modelo original en un nuevo modelo.