Verwenden des Transformers zum Erstellen eines Liniensegmentfeldes

Im Transformer-Schritt werden Feldwerte und Formatierung geändert. In dieser Prozedur wird beschrieben, wie eine benutzerdefinierte Transformation zur Erstellung eines LineSegment-Feldes erstellt wird. Ein LineSegment-Feld wird anschließend als Eingabe für einen Vorgang zum Erstellen einer Polygongeometrie mit dem Spatial Calculator verwendet.

Hier stellt ein Zeichenfolgenfeld mit Breitengrad/Längengrad-Standorten in einer Zeile im folgenden Format die Eingabe für den Transformer dar: „x1,y1,x2,y2,x3,y3….; x1,y1,x2,y2,x3,y3….;…“. Die Ausgabe ist ein LineSegments-Feld für Polygone mit Löchern.

So erstellen Sie ein LineSegment -Feld:

  1. Erstellen Sie im Enterprise Designer einen neuen Datenfluss und fügen Sie einen „Read from File“-Schritt hinzu. Machen Sie einen Doppelklick, um das Dialogfeld „Optionen“ anzuzeigen. Geben Sie auf der Registerkarte „Dateieigenschaften“ die Eingabedatei mit den Standortinformationen an. Beispiel:
    0.0,0.0,0.0,10.0,10.0,10.0,10.0,0.0,0.0,0.0;2.0,2.0,2.0,8.0,8.0,8.0,8.0,2.0,2.0,2.0
  2. Klicken Sie bei Bedarf auf der Registerkarte „Felder“ auf Typ erkennen, um die Felder automatisch zu bestimmen. Ändern Sie den Spaltennamen in „Linien“ um.
  3. Fügen Sie einen Transformer-Schritt zum Workflow hinzu. Benennen Sie den Schritt in „LineSegments vorbereiten“ um. Doppelklicken Sie auf den Schritt, um das Dialogfeld „Optionen“ zu öffnen. Klicken Sie auf Hinzufügen, um das Dialogfeld „Transformation hinzufügen“ zu öffnen. Wählen Sie Benutzerdefiniert aus, um das Dialogfeld „Benutzerdefiniert“ anzuzeigen.
  4. Gehen Sie im Dialogfeld „Benutzerdefiniert“ wie folgt vor:
    1. Geben Sie im Textfeld „Name der benutzerdefinierten Transformation“ LineSegments-Liste vorbereiten ein.
    2. Fügen Sie im Textfeld „Benutzerdefiniertes Skript“ folgendes Groovy-Skript hinzu. Das Eingabefeld „Linien“ ist eine Zeichenfolge mit Koordinaten für den Längengrad und den Breitengrad, die ein inneres und ein äußeres Polygon darstellt.
      //'lines' field is '0.0,0.0,0.0,10.0,10.0,10.0,10.0,0.0,0.0,0.0;2.0,2.0,2.0,8.0,8.0,8.0,8.0,2.0,2.0,2.0'
      String pointsString = data['lines']
      String[] lineStrings = pointsString.split(";");
      
      def LineSegments = []
      def polygon = [:]
      def point = [:]
      for (int n = 0; n < lineStrings.length; n++) {
            String[] coords = lineStrings[n].split(",");
            def line = []
            for (int i = 0; i < coords.length; i=i+2) {
                  point = [ 'Longitude': coords[i], 'Latitude': coords[i+1]] 
                  line.add(point)
            }
            polygon.put(String.valueOf, line)
      }
      
      LineSegments = [polygon]
      
      data['LineSegments'] = LineSegments
      
    3. Klicken Sie rechts neben den Ausgabefeldern auf Hinzufügen, um das Dialogfeld „Benutzerdefiniertes Feld hinzufügen“ zu öffnen, und klicken Sie anschließend auf Hinzufügen, um das Dialogfeld „Feld hinzufügen“ zu öffnen. Geben Sie im Textfeld „Feldname“ LineSegments ein (für den Vergleich mit der im benutzerdefinierten Groovy-Skript angegebenen Ausgabe). Aktivieren Sie das Kontrollkästchen Der Datentyp ist der Listentyp und wählen Sie Segment aus der Dropdown-Liste aus.
    4. Klicken Sie auf OK und klicken Sie anschließend im Dialogfeld „Benutzerdefiniertes Feld hinzufügen“ erneut auf OK, um zum Dialogfeld „Transformation hinzufügen“ zurückzukehren. Klicken Sie im unteren Bereich des Dialogfeldes auf Hinzufügen und klicken Sie anschließend auf Schließen, um zum Dialogfeld „Optionen“ zurückzukehren. Im Dialogfeld wird jetzt die Liste „LineSegments vorbereiten“ als benutzerdefinierte Transformation aufgeführt. Klicken Sie auf OK, um das Dialogfeld „Optionen“ zu verlassen.
  5. Um die Liste „LineSegments vorbereiten“ in einem Datenfluss zu verwenden, müssen Sie einen „Spatial Calculator“-Schritt hinzufügen (in „Polygon erstellen“ umbenannt). Doppelklicken Sie auf den Schritt, um das Dialogfeld „Spatial Calculator-Optionen“ zu öffnen. Wählen Sie Polygongeometrie erstellen und anschließend das Koordinatensystem aus und klicken Sie auf OK.
  6. Fügen Sie einen „Write to Null“-Schritt hinzu, um den Datenfluss abzuschließen. Fügen Sie zum Testen des Datenflusses einen Überprüfungspunkt hinzu und führen Sie anschließend Aktuellen Fluss überprüfen aus.