Transformer を使ってライン セグメント フィールドを作成

Transformer ステージは、フィールドの値と書式を変更します。ここでは、カスタム トランスフォームを作成してライン セグメント フィールドを作成する手順を説明します。このライン セグメントは、Spatial Calculator を使う ポリゴン ジオメトリの作成に入力として使用します。

ここで Transformer に入力するのは、緯度/経度による場所を表す文字列フィールドで、その形式は 'x1,y1,x2,y2,x3,y3….; x1,y1,x2,y2,x3,y3….;…’ です。出力されるのは、穴が開いたポリゴンの ライン セグメント フィールドです。

ライン セグメント フィールドを作成するには

  1. Enterprise Designer で、新しいデータフローを作成し、Read From File ステージを追加します。ダブルクリックして [オプション] ダイアログを表示します。[ファイル プロパティ] タブで、場所に関する情報が含まれる入力ファイルを以下のように指定します。
    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. [フィールド] タブで、必要であれば [タイプの検出] をクリックしてフィールドを自動で確認します。列の名前を "lines" に変更します。
  3. Transformer ステージをワークフローに追加します。ステージの名前を "Prepare LineSegments" に変更します。このステージをダブルクリックして [オプション] ダイアログを開きます。[追加] をクリックして、[トランスフォームの追加] ダイアログ ボックスを開きます。[カスタム] を選択して [カスタム] ダイアログ ボックスを表示します。
  4. [カスタム] ダイアログ ボックスで、以下の操作を行います。
    1. [Custom Transform 名] テキスト ボックスに、"Prepare LineSegments list" と入力します。
    2. [カスタム スクリプト] テキスト ボックスに、以下の Groovy スクリプトを追加します。入力の lines フィールドは、内側と外側のポリゴンを表す緯度/経度座標の文字列です。
      //'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. [出力] フィールドの右にある [追加] をクリックして [カスタム フィールドの追加] ダイアログを開いてから、[追加] をクリックして [フィールドの追加] ダイアログを開きます。[フィールド名] テキスト ボックスで、"LineSegments" と入力します (これはカスタム Groovy スクリプトに指定された出力と一致します)。[データ タイプのリスト タイプ] をオンにし、[セグメント] をドロップダウン リストから選択します。
    4. [OK] をクリックし、 [カスタム フィールドの追加] ダイアログでもう一度 [OK] をクリックして [トランスフォームの追加] ダイアログに戻ります。ダイアログの最下部で [追加] をクリックし、[閉じる] をクリックして [オプション] ダイアログに戻ります。このダイアログでは、"Prepare LineSegments list" がカスタム トランスフォームとして表示されます。[OK] をクリックして [オプション] ダイアログを閉じます。
  5. Prepare LineSegments list をデータフローで使用するには、Spatial Calculator ステージを追加し (名前を Create Polygon に変更し)、ステージをダブルクリックして [Spatial Calculator オプション] ダイアログを開きます。[ポリゴン ジオメトリの作成] を選択してから、座標系を選択し、[OK] をクリックします。
  6. Write to Null ステージを追加してデータフローを完成します。データフローをテストするために、インスペクション ポイントを追加し、[現在のフローのインスペクション] を実行します。