Keywords: clouds

Summary

This demo shows the use of the FastClouds plugin that is an extension of the approach taken in the FastCloud2 demo to emulate clouds using a very simplified 2D representation. That approach is generic and simply uses a material map (with mixing) or a mixture map that is applied to a high altitude object (usually a simple plate) and mixes free paths and opaque cloud reflectance.

The "FastClouds" plugin is meant to address the problem of effectively defining very large, high altitude objects that might represent clouds over many kilometers. Over a significant distance, we expect a flat plate to deviate from a constant altitude due to the underlying curvature of the Earth. Instead, the plugin adapts to the WGS84 ellipsoids to maintain a constant altitude and generates a 2D representation of clouds based on an input cloud fraction map. The plugin also gives the opportunity to add features (such as dynamics) that might be difficult to represent with the generic approach.

The clouds being modeled by this plugin are intended to be generally opaque (with some transmission at the edges) and as such are modeled as varying between a nominal opaque cloud spectral reflectance and a free path to the Earth. They are also intended to be viewed from a distance and well above the clouds themselves (given their two dimensional nature). The input fraction map is used to describe the amount of cloud versus the amount of transmitted radiance. A secondary parameter allows a scaling of the fraction on the solar path (a shadow path) to very approximately mimic multiple scattering differences (i.e. effectively increase the amount of shadowing on the solar path versus the amount of direct reflectance).

Important
This plugin and demonstration are not intended to be accurate radiometric representations of clouds! They exist to be able to efficiently add approximate cloud behavior over very large areas where the focus is on 1) the shadowing of the clouds on the ground and 2) the potential saturation of the sensor by the high reflectance (scattering) of the cloud itself. There is no attempt to capture water droplet size distributions, self-shadowing, spectrally varying directional scattering, or, of course, the volumetric nature of clouds and their interactions.

The following demos, manuals and tutorials can provide additional information about the topics at the focus of this demo:

  • Related Demos

  • Related Manuals

    • The Earth Models manual (both the Earth grid and fast clouds plugins).

  • Related Tutorials

    • N/A

Details

The demonstration is constructed in two parts, neither of which use a traditional scene.

The first uses the EarthGrid plugin (with a bounding box) to setup a simple RGB representation of Denmark (roughly centered near the city of Assens and derived from cloudless Sentinel-2 imagery). Then, over the same extent, a fraction map derived from the USGS Spatial Procedures for Automated Removal of Cloud and Shadow (SPARCS) dataset is used to represent the cloud cover. Note that the original cloud data was "quilted" to create much larger coverage then edited to primarily show clouds over landmasses.

The effective reflectance of the clouds is based on the nominal opaque cloud reflectance curve shown here. It is stored internally rather than being provided by the user.

cloud refl
Figure 1. Spectral curve for the nominal cloud reflectance.

Important Files

This section highlights key files important to the simulation.

denmark
Figure 2. Imagery of the Denmark region used for the scene and centered at approxiately 55.45 degrees North and 9.88 degrees East (Contains modified Copernicus Sentinel data [2024] processed by Sentinel Hub)
fraction map
Figure 3. Cloud fraction map used for the scene derived from the SPARCS validation data set (https://www.usgs.gov/landsat-missions/spatial-procedures-automated-removal-cloud-and-shadow-sparcs-validation-data).

The EarthModel Setup

Rather than create an Earth "scene", this simulation utilizes the EarthGrid plugin to provide the primary geometry for the scene. In this case, the plugin is configured with an image over a subset of the entire globe (the Denmark imagery above) using a latitude/longitude box to dictate where the imagery should go. Note that the grid lines are setup so that they are not displayed (the half width is set to 0). The clouds are setup similarly — this time the fraction map is provided as the input imagery and it is defined over the same latitude/longitude box (note that this is not required and often the clouds should cover more space than the entire scene due to shadowing from outside the direct area).

The setup using the EarthGrid and FastCloud plugin in the demo.jsim file.
[{
  "scene_list": [
  ],
  "plugin_list": [
    {
      "name" : "EarthGrid",
      "inputs" : {
        "background_filename" : "denmark.png",
        "major_lines" : [180,0,255,255,255],
        "minor_lines" : [ 10,0,255,255,255],
        "latlon_bounds" : [54.9469639,8.9996798,55.9457344,10.7572705]
      }
    },
    {
      "name" : "FastClouds",
      "inputs" : {
          "cloudfraction_filename" : "fraction_map.png",
          "latlon_bounds" : [54.9469639,8.9996798,55.9457344,10.7572705],
          "altitude" : 370
      }
    },
    {
      "name": "BasicAtmosphere",
      "inputs": {
        "atmosphere_filename": "./simple.atm"
      }
    },
    {
      "name" : "SpiceEphemeris",
      "inputs" : {
      }
    },
    {
      "name" : "BasicPlatform",
      "inputs" : {
        "platform_filename" : "demo.platform", 
        "motion_filename" : "demo.motion", 
        "tasks_filename" : "demo.tasks"
      }
    }
  ]
}]

The Observing Sensor

The observing sensor in this simulation is a simple array setup directly above the center of the Denmark scene.

The BasicPlatform demo.motion setup stares at a geographic location at the center of the scenes.
<motion type="flexible">
  <locationengine type="fixed">
    <location frame="geodetic">
      <latitude>55.4463492</latitude>
      <longitude>9.8784751</longitude>
      <altitude>500000.000</altitude>
    </location>
  </locationengine>
  <orientationengine type="lookat">
    <locationengine type="fixed" >
      <location frame="geodetic">
        <latitude>55.4463492</latitude>
        <longitude>9.8784751</longitude>
        <altitude>0.000</altitude>
      </location>
    </locationengine>
    <up frame="ecef" vector="0,0,1"/>
  </orientationengine>
</motion>

The Atmosphere Setup

The atmospheric modeling setup in this simulation requires a bit of explanation. In this simulation, the sensor is observing an entire hemisphere of the earth. However, the DIRSIG atmosphere plugins are (currently) designed to model a limited region of the earth across which quantities such as the relative solar scattering geometry are constant. In this case, the solar scattering angles vary tremendously due to the curvature of the earth. Hence, for this demonstration a model-driven atmosphere (e.g., the ClassicAtmosphere , NewAtmosphere or FourCurveAtmosphere) is not appropriate. Instead, this simulation uses the SimpleAtmosphere model.

Simulations and Results

The Default Single-Frame Simulation

The single-frame simulation (see demo.jsim) captures a single image of a "zoomed-in" at the center of the scene. Since the clouds currently require stochastic (noisy) mixing, a slightly higher setting for convergence should be used than would be normal for the same scene without the clouds.

$ dirsig5 --convergence=30,500,1.000e-06 demo.jsim

Load the resulting demo-t0000-c000.img radiance file in the DIRSIG image viewer and display the RGB bands using one of the high dynamic range scaling options (e.g., "two sigma" or "two percent" scaling). Alternatively, the image_tool can be used to directly to produce a min/max scaled PNG with the following syntax:

$ image_tool convert demo-t0000-c0000.img
zoom
Figure 4. The single-frame simulation (zoom)

The larger scene simulation

The full scene that is defined covers roughly a square region 100km wide so we can "zoom out" and see a much larger portion of this area (this requres modifying the platform or motion file — only the "zoom" image setup is included).

full
Figure 5. The single-frame simulation (full view)