Suite

Je pense que j'ai un problème avec les bases de FME et Python


J'essaie d'apprendre des instructions du coin d'Oliver ftp://ftp.safe.com/fme/pyfme/OliversCorner.zip) . Ainsi, par exemple, j'écrase son #script 4 en StartupPython Script ci-dessous et je définis les données d'entrée dans le workflow avec le nom "Fruits":

class MyPythonFactory(object): def __init__(self): self.count_features = 0 self.logger = pyfme.FMELogfile() def input(self,feature): self.count_features += 1 # Accéder à tous les attributs d'une caractéristique self.all_attributes = 'Tile'.getAllAttributeNames() # renvoie une liste avec tous les noms d'attributs comme résultat self.all_attributes_count = len(self.all_attributes) # count attributs self.logger.log('Feature: '+ str(self.count_features),1 ) pour i dans la plage (self.all_attributes_count): self.attribute_name = self.all_attributes[i] # obtenir le nom de l'attribut self.attribute_value = 'Tile'.getAttribute(self.attribute_name) # obtenir la valeur de l'attribut self.logger.log(' Attribut : ' + str(self.attribute_name) + '	Value : ' + str(self.attribute_value), 1) self.logger.log('
',1) self.pyoutput('Tile') def close( self): self.logger.log('Nombre total de fonctionnalités : ' + str(self.count_features),1)

Et selon cela, je devrais obtenir les résultats suivants dans le fichier journal :

Caractéristique : 1 Attribut : X_INT Valeur : 3333317 Attribut : ID Valeur : 1 Attribut : fme_type Valeur : fme_point Attribut : LASTNAME Valeur : von Goethe Attribut : Y_INT Valeur : 5684892 Attribut : fme_feature_type Valeur : points Attribut : fme_geometryT Valeur de la valeur : fRY_PEGEOME Attribute : shape_point Attribut : X_FLOAT Valeur : 3333317 Attribut : SURNAME Valeur : Johann Wolfgang Attribut : Y_FLOAT Valeur : 5684892

Mais je n'obtiens aucun résultat de ce script dans le fichier journal !

Alors mes questions sont :

  1. Comment le script reconnaît-il la fonctionnalité que j'utiliserai s'il y en a plus ? Le nom de la caractéristique est-il en fait le nom des données d'entrée, par exemple, je devrais donc utiliser « Fruits » ?
  2. Dois-je remplacer le mot « fonctionnalité » dans le code par le nom de la fonctionnalité correspondante dans le plan de travail ?

Cet extrait Python n'est pas approprié pour un script Python de démarrage. Son but est de traiter les fonctionnalités, vous devez donc le placer dans un transformateur PythonCaller.

http://docs.safe.com/fme/html/FME_Transformers/content/transformers/pythoncaller.htm

Les scripts Python de démarrage ne fonctionneraient généralement pas sur les fonctionnalités, mais pourraient être utilisés pour effectuer une préparation plus générique avant l'exécution de l'espace de travail.