Utilización de Transformer para crear un campo de puntos de segmento

La etapa Transformer modifica los valores y el formato de los campos. Este procedimiento describe cómo crear una transformación personalizada para crear una lista de puntos de segmento. La lista de puntos de segmento luego se usa como la entrada para una operación Crear geometría de línea mediante el uso de Spatial Calculator.

Aquí la entrada de Transformer es un campo de cadena de locaciones de latitud/longitud en una fila (x1,y1,x2,y2,x3,y3….). La salida será un campo SegmentPoints. Este también se puede usar para crear un campo LineSegments para los polígonos sin orificios.

Para crear un campo LineSegment:

  1. En Enterprise Designer, cree un nuevo flujo de datos y agregue la etapa Read From File. Haga doble clic para abrir el diálogo Opciones. En la ficha propiedades del archivo, especifique el archivo de entrada que contiene la información de ubicación, por ejemplo:
    -73.0,40.5,-73.0,40.7,-72.0,41.3,-73.0,40.5
  2. En la ficha Campos, haga clic en Detectar tipo, si es necesario, para determinar automáticamente los campos. Modifique el nombre de la columna que se va a denominar puntos.
  3. Agregue una etapa Transformer al flujo de trabajo. Cambie el nombre de la etapa a "Preparar lista de puntos de segmentos". Haga doble clic en la etapa para abrir el diálogo Opciones. Haga clic en Agregar para abrir el cuadro de diálogo Agregar transformación. Elija Personalizar para mostrar el cuadro de diálogo Personalizar.
  4. El cuadro de diálogo personalizado realice lo siguiente:
    1. En el cuadro de texto Nombre de transformación personalizada, escriba Preparar lista de puntos de segmentos.
    2. En el cuadro de texto Secuencia de comandos personalizada, agregue la siguiente secuencia de comandos Groovy. El campo de puntos de entrada es una cadena de coordenadas de longitud y latitud.
      //'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. A la derecha de los campos de salida, haga clic en Agregar para abrir el diálogo Agregar campo personalizado y, luego, en Agregar para abrir el diálogo Agregar campo. En el cuadro de texto Nombre de campo escriba SegmentPoints (para hacer coincidir los datos de salida indicados en la secuencia de comandos Groovy personalizada). Compruebe que la casilla de verificación Tipo de datos es un tipo de lista de y seleccione Segmento en la lista desplegable.
    4. Haga clic en Aceptar y, luego, en Aceptar nuevamente, en el diálogo Agregar campo personalizado, para volver al diálogo Agregar transformación. En la parte inferior del diálogo, haga clic en Agregar y, luego, en Cerrar para volver al diálogo Opciones. El diálogo ahora muestra Preparar lista de puntos de segmento como la transformación personalizada. Haga clic en Aceptar para salir del cuadro de diálogo Opciones.
  5. Para usar Preparar lista de puntos de segmento en un flujo de datos, agregue una etapa Spatial Calculator (con nombre cambiado a Crear línea) Haga doble clic en la etapa para abrir el diálogo Opciones de Spatial Calculator. Seleccione Crear geometría de línea, luego seleccione el sistema de coordenadas y haga clic en Aceptar.
  6. Agregue una etapa Write to Null para completar el flujo de datos. Para probar el flujo de datos, agregue un punto de inspección y ejecute Inspeccionar flujo actual.