7 votos

Cómo utilizar el nombre de la capa activa en FME PythonCaller?

En un PythonCaller (FME 2014 SP4 en los Datos de Interoperabilidad en ArcGIS 10.3), me gustaría hacer algunas procesamiento condicional basado en la capa en la que estoy actualmente en proceso. Estoy de alimentación en un archivo de texto de las capas de forma dinámica en tiempo de ejecución, por lo que la capa(s) procesado puede variar. Me gustaría hacer algo como el psuedocode a continuación:

import fmeobjects
def processFeature(feature):
    # Get which layer is currently being processed
    layer_name = somehow get current layername via fmeobjects??
    # do some logical processing of fields based on what layer we are processing
    pass

No sé si hay algo en FME_MacroValues que expone esta (la miré y no pude encontrar mucho) o si tengo que exponer de alguna manera de mi fuente y, a continuación, tubería dentro de mi PythonCaller tal vez.

2voto

Arda Xi Puntos 1099
  1. Añadir un AttributeExposer, exponer a la fme_feature_type de atributo
  2. Conecte el AttributeExposer a un AttributeCreator para empujar fme_feature_type un atributo (nombre fme_feature_type a continuación)
  3. En el PythonCaller, obtener su atributo: layer_name = feature.getAttribute("fme_feature_type")

1voto

Amy Puntos 46

Voy a asumir que su archivo de texto es como un CSV con un encabezado llamado "LayerName" y cada fila es una capa diferente. En ese caso, su función sería algo como esto:

import fmeobjects
def processFeature(feature):
    # Get which layer is currently being processed
    layer_name = feature.getAttribute("LayerName")
    # do some logical processing of fields based on what layer we are processing
    pass

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X