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