This plugin simulates one or more radiometrically-informed Leaf Area Index (LAI) measurements. LAI is defined as the total one-sided leaf area per unit of ground area. So, an LAI of 1 means there are enough leaves to cover the ground. An LAI of 2 means there are enough leaves to cover the ground twice, and so on.

It isn’t exactly practical or eco-friendly to chop down trees to determine LAI, so there is an expansive literature on the relationship between LAI and canopy radiometry, which informs field equipment to measure approximate LAI non-destructively. This plugin is meant to simulate such field equipment.

Note In particular, the implementation here is modeled after publicly available documentation of the AccuPAR LP-80.

That is, it performs a cosine-weighted hemispherical integral over the Photosynthetically Active Radiation (PAR) band, which is basically just the visible spectrum 0.4-0.7um. In real life, three measurements are required by to estimate LAI. These are 1) above-canopy upward facing (source measurement), 2) above-canopy downward facing (reflectance measurement), and 3) below-canopy upward facing (transmittance measurement). Then, the device computes reflectance and transmittance ratios which get substituted into some regression equations along with two other variables, being the solar zenith angle and the leaf angle parameter.

This plugin performs all three measurements automatically given the desired below-canopy location and a conservative estimate of the canopy height at that location. It is also able to determine the solar zenith angle automatically from the active ephemeris plugin, and by default it sets the leaf angle distribution parameter to 1 (this corresponds to a spherical distribution, and is a common assumption in practice).


All inputs must be given directly in the JSIM, whereby the plugin name is "LaiCollectors". For example, the following JSIM uses the LaiCollectors plugin in conjunction with the FourCurveAtmosphere and SpiceEphemeris plugins. All possible inputs appear in the "inputs" block as shown.

  "scene_list": [ { "inputs": "./demo.scene" } ],
  "plugin_list": [
      "name": "FourCurveAtmosphere",
      "inputs": { "conditions": "mls_rural_50km" }
      "name" : "SpiceEphemeris",
      "inputs" : {}
      "name": "LaiCollectors",
      "inputs": {
          "output_filename": "Lai.csv",
          "random_seed": 0,
          "sample_count": 100000,
          "leaf_angle_parameter": 1,
          "date_time": "2009-09-01T11:10:00.0000-05:00",
          "collectors": [
              {"origin": [500, 339, -4.5], "canopy_height": 50},
              {"origin": [201, 441, 10.5], "canopy_height": 50},
              {"origin": [311, 200, 11.5], "canopy_height": 50}
Geodetic origins

For convenience, collector origins may be given as WGS84 latitude, longitude, and altitude. This must be communicated with the boolean variable "is_wgs84".

{"origin": [43.1, -77.6, 354.3], "canopy_height": 50, "is_wgs84": true}

The latitude and longitude must be given in degrees North and East, and the altitude must be given in meters above sea level.


The plugin outputs a comma-separated value (CSV) file containing a few intermediate variables alongside the final LAI for each collector. The first line lists the names of each variable. Subsequent lines contain numerical values for each collectors (following the order of appearance in the JSIM). For example,

Extinction [K], Reflectance ratio [r], Transmittance ratio [t], Beam fraction [fb], Leaf area index [L]
6.205948292580881e-01, 2.540335361453913e-02, 9.978694328986739e-03, 1.058816032984983e+00, 8.463204710967959e+00
Note The extinction and beam fraction are computed using heuristic relationships (depending on the leaf angle parameter, solar zenith angle, and computed reflectance ratio) as per the AccurPAR LP-80 documentation. The reflectance and transmittance ratios are fully spectrally simulated by DIRSIG.