## GPT Cookbook: Workflow Example 2

## Compare Two Level-2 Files

Reproject --> Collocate

This example reprojects a source file (similar to Reproject: Example 4) with the main difference being that this example adds in a read node and a write node to create a multi-operator workflow. Here we are sending in the file parameter without its extension in order to formulate both the input and output file names.

Command Line Entry

For the daytime SST file:

    gpt WorkflowEx01a.xml -p WorkflowEx01a.par -Pfile=A2010283180500.L2_LAC_SST

For the nighttime SST file:

    gpt WorkflowEx01a.xml -p WorkflowEx01a.par -Pfile=A2010283070000.L2_LAC_SST

File = WorkflowEx01a.xml

    <graph id="WorkflowEx01aGraph">
      <version>1.0</version>

        <node id="ReadNode">
          <operator>Read</operator>
          <sources/>
          <parameters>
            <file>${file}.${ifileExtension}</file>
          </parameters>
        </node>

        <node id="ReprojectLambertNode">
          <operator>Reproject</operator>
          <sources>
              <source>ReadNode</source>
          </sources>

          <parameters>
              <crs>
                  PROJCS["Lambert_Azimuthal_Equal_Area / World Geodetic System 1984",
                         GEOGCS["World Geodetic System 1984",
                                DATUM["World Geodetic System 1984",
                                      SPHEROID["WGS 84", 6378137.0, 298.257223563, AUTHORITY["EPSG","7030"]],
                                AUTHORITY["EPSG","6326"]],
                         PRIMEM["Greenwich", 0.0, AUTHORITY["EPSG","8901"]],
                         UNIT["degree", 0.017453292519943295],
                         AXIS["Geodetic longitude", EAST],
                         AXIS["Geodetic latitude", NORTH]],
                  PROJECTION["Lambert_Azimuthal_Equal_Area"],
                  PARAMETER["latitude_of_center", ${lat}],
                  PARAMETER["longitude_of_center", ${lon}],
                  PARAMETER["false_easting", 0.0],
                  PARAMETER["false_northing", 0.0],
                  UNIT["m", 1.0],
                  AXIS["Easting", EAST],
                  AXIS["Northing", NORTH]]
              </crs>
              <resampling>${resampling}</resampling>
              <orientation>0.0</orientation>
              <pixelSizeX>${pixelSize}</pixelSizeX>
              <pixelSizeY>${pixelSize}</pixelSizeY>
              <orthorectify>false</orthorectify>
              <noDataValue>NaN</noDataValue>
              <includeTiePointGrids>true</includeTiePointGrids>
              <addDeltaBands>false</addDeltaBands>
              <maskExpression>${maskExpression}</maskExpression>
              <retainValidPixelExpression>${retainValidPixelExpression}</retainValidPixelExpression>
              <applyValidPixelExpression>${applyValidPixelExpression}</applyValidPixelExpression>
          </parameters>

        </node>

        <node id="WriteNode">
          <operator>Write</operator>
          <sources>
            <source>ReprojectLambertNode</source>
          </sources>
          <parameters>
            <file>${file}_${ofileSuffix}.${ofileExtension}</file>
            <formatName>${ofileFormat}</formatName>
          </parameters>
        </node>

    </graph>

File = WorkflowEx01a.par

    ifileExtension=nc
    ofileSuffix=Reprojected
    ofileFormat=NetCDF-CF
    ofileExtension=nc

    lat=37.0
    lon=-76.0
    pixelSize=1000.0
    resampling=Bilinear
    maskExpression=(qual_sst == 0 or qual_sst == 1) and !l2_flags.HISATZEN
    retainValidPixelExpression=true
    applyValidPixelExpression=true