Utilisation de Transformer pour créer un champ Points de segment

Le stage Transformer modifie les valeurs et le formatage des champs. Cette procédure explique comment créer une transformation personnalisée pour créer une liste Points de segment. La liste de points de segment est ensuite utilisée comme entrée pour l'opération Créer une géométrie de type ligne via Spatial Calculator.

Ici, l'entrée de Transformer est un champ de type chaîne d'emplacements latitude/longitude sur une ligne (x1,y1,x2,y2,x3,y3….). La sortie est un champ SegmentPoints. Cette opération peut aussi être utilisée pour créer un champ LineSegments pour des polygones sans trou.

Pour créer un champ SegmentPoints, procédez comme suit :

  1. Dans Enterprise Designer, créez un nouveau flux de données et ajoutez un stage Read From File. Double-cliquez pour ouvrir la boîte de dialogue Options. Dans l'onglet Propriétés du fichier, indiquez le fichier d'entrée contenant les informations d'emplacement, par exemple :
    -73.0,40.5,-73.0,40.7,-72.0,41.3,-73.0,40.5
  2. Dans l'onglet Champs, cliquez sur le bouton Détecter le type, le cas échéant, pour déterminer automatiquement les champs. Modifiez le nom de colonne pour l'appeler Points.
  3. Ajoutez un stage Transformer au flux de travail. Renommez le stage avec le nom « Prepare Segments Point list ». Double-cliquez sur le stage pour ouvrir la boîte de dialogue Options. Cliquez sur Ajouter pour ouvrir la boîte de dialogue Ajouter transformation. Sélectionnez Personnalisé pour afficher la boîte de dialogue Personnalisé.
  4. Dans la boîte de dialogue Personnalisé, procédez comme suit :
    1. Dans la zone de texte Nom de la transformation personnalisée, saisissez Prepare Segment Points list.
    2. Dans la zone de texte Script personnalisé, ajoutez le script Groovy suivant. Le champ Points d'entrée est une chaîne de coordonnées longitude-latitude.
      //'points' field is '-73.0,40.5,-73.0,40.7,-72.0,41.3,-73.0,40.5'
      String pointsString = data['points']
      String[] coords = pointsString.split(",");
      def SegmentPoints = []
      def point = [:]
      for (int i = 0; i < coords.length; i=i+2) {
            point = [ 'Longitude': coords[i], 'Latitude': coords[i+1]] 
            SegmentPoints.add(point)
      }
      
      data['SegmentPoints'] = SegmentPoints
      
    3. À droite des champs Sortie, cliquez sur Ajouter pour ouvrir la boîte de dialogue Ajouter un champ personnalisé, puis cliquez sur Ajouter pour ouvrir la boîte de dialogue Ajouter un champ. Dans la zone de texte Nom du champ, saisissez SegmentPoints (pour correspondre à la sortie du script Groovy personnalisé). Cochez la case Data type is a list type of et sélectionnez Segment dans la liste déroulante.
    4. Cliquez sur OK, puis de nouveau sur OK dans la boîte de dialogue Ajouter un champ personnalisé pour revenir à la boîte de dialogue Ajouter transformation. Au bas de la boîte de dialogue, cliquez sur Ajouter, puis sur Fermer pour revenir à la boîte de dialogue Options. La boîte de dialogue affiche maintenant une liste Préparer les points de segment comme transformation personnalisée. Cliquez sur OK pour fermer la boîte de dialogue Options.
  5. Pour utiliser la liste Préparer les points de segment dans un flux de données, ajoutez un stage Spatial Calculator (renommé Créer la ligne). Double-cliquez sur le stage pour ouvrir la boîte de dialogue Option de Spatial Calculator. Sélectionnez Créer une géométrie de type ligne, puis le système de coordonnées et cliquez sur OK.
  6. Ajoutez un stage Write to Null pour compléter le flux de données. Pour tester le flux de données, ajoutez un Point d'inspection, puis exécutez Inspecter le flux actif.