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. |
Related Materials
The following demos, manuals and tutorials can provide additional information about the topics at the focus of this demo:
-
Related Demos
-
The FastCloud2 demo.
-
-
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.

Important Files
This section highlights key files important to the simulation.


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).
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.
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

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).
