Más

¿Cómo se puede detener condicionalmente una traducción de FME?

¿Cómo se puede detener condicionalmente una traducción de FME?


Tengo un espacio de trabajo FME que toma un conjunto de líneas centrales de calles y las convierte en puntos de dirección. He estado trabajando en todo el estado de Missouri con este traductor un condado a la vez, ya que cada condado puede tardar hasta una hora en procesarse. Selecciono un condado al comienzo del traductor como parámetro de elección.

Mi problema es que sigo teniendo que verificar dos veces para asegurarme de qué condados he procesado para no procesar un condado dos veces. Cuando tengo un archivo de varios millones de puntos de dirección, no quiero eliminar duplicados.

Lo que me gustaría que FME hiciera es tomar el condado que he seleccionado y compararlo con un archivo shapefile de condados para ver si el condado ya ha sido procesado. Tengo un atributo de bandera, "COMPLETO", que se establece en 0 si el condado no ha sido procesado y 1 si lo ha hecho.

El shapefile del condado no tiene nada que ver con otros lectores o escritores del traductor.

Editar: Para aclarar, los condados no están siendo procesados ​​en absoluto por el traductor, solo las líneas centrales.

Dado que hay más de 2 millones de líneas centrales, no quiero leer las líneas centrales en absoluto (mucho menos mantener un atributo en las líneas centrales) si el condado ya ha sido procesado.

Editar: aquí está la solución. Subí el lector st_county10 (el de la imagen) a la parte superior de la lista de lectores. Esto se ejecuta antes que nada. Al usar el titular de la función, evito escribir sobre el archivo shapefile st_county10 si la traducción finaliza.

Una última pieza, ya que tenía un script de apagado de Python, tuve que agregar esta línea:

importar pyfme si FME_Status == True:

Al frente de la secuencia de comandos de apagado para detener la ejecución de la secuencia de comandos de apagado también.


Si entiendo el problema correctamente, creo que desea incorporar el archivo shapefile de su condado como un lector y luego ejecutar un transformador de prueba contra eso, luego enrutar su trabajo en consecuencia. Use su parámetro publicado de nombre de estado en el probador como una de las cláusulas de prueba, junto con la marca procesada sí / no. Aquí hay un rapidito que preparé:

Esto busca características con un Estado = 'Otro' en este archivo de forma de ciudades, luego enruta según pasa / falla. Ahora, creo que FME es sensible al orden en que colocas tus lectores en el espacio de trabajo, por lo que si colocas este lector después de que ya tienes otros, los demás se ejecutarán primero. Pruébelo, es posible que tenga que crear un nuevo espacio de trabajo, coloque esta lógica primero y luego coloque a sus otros lectores después de eso para obtener el orden de lectura correcto. Si desea eliminar el trabajo si la consulta falla, puede haber una manera de hacerlo con pyfme, o puede enrutar la función FAILED (cuando el estado = Completado ya) a un transformador Terminator.