Gets whether the object is currently performing an asynchronous operation.
Returns the percentage of progress, in normalized value (i.e in the [0, 1] range), of the asynchronous operations that are scheduled to run on this object. 1 means that all operations have finished.
Starts the computation.
Optionaloptions: { signal?: AbortSignal }Optionalsignal?: AbortSignalAn optional signal to abort the computation
Releases unmanaged resources from this object.
Simulates sun exposure on meshes and produces various sun-related measures (see VariableName).
The output is a point cloud that covers the area of interest. Each point represents a sun probe that samples sun exposure at this location.
Computation can occurs on a single point in time or within a time range. In that case, the time range is discretized into snapshots that are one
temporalResolutionapart.Irradiance and irradiation
Irradiance (in Watts / square meter) represents the amount of solar power that reaches a surface at a given time.
We first compute the cosine between the probe's normal and the sun direction. If the cosine is zero or less, it means the surface is not exposed to sunlight at all. It thus receives zero watts of solar power.
If the cosine is greater than zero, it is used to compute the solar power with a simple formula:
where SolarConstant is the SOLAR_CONSTANT and AtmosphereAbsorption is the ATMOSPHERIC_ABSORPTION constant.
Thus, at noon UTC during summer solstice and at the northern tropic (23.43° N, 0° E), the irradiance of an horizontal surface will be at its maximum value, which is (SolarConstant * AtmosphereAbsorption), since the cosine of the angle will be 1.
Irradiation (in Watt-hours / square meter) is then computed as the integral of the irradiance over the time period (in hours).
Hours of sunlight
This variable is computed by counting the number of time increments that a given probe receives sunlight (i.e is not in the shadow of another object). Those increments do not need to be consecutive. Thus, if a probe receives 0.5 hours of sunlight in the morning, then is in the shade until 16:00, then receives another 2 hours of sunlight in the afternoon, then is occluded by shadow again, then receives 1.5 hours until sunset, its hours of sunlight will be 4 hours (0.5 + 2 + 1.5).
Remarks and caveats
Be careful when passing
Dateparameters. By default, dates are using the local time zone. It is advised to pass UTC dates to avoid ambiguity.Only mesh-like objects (3D models, maps, 3D tiles, etc) are supported. Point clouds are not supported, as they don't expose surfaces and normals required for solar exposure computation.
You must include "ground" like meshes so that other meshes (like buildings) are properly shaded (especially in morning/evening periods) when the sun is low. A simple flat plane is enough if you don't have anything else. Otherwise you can use a Map with terrain.
Be very careful with the
spatialResolutionparameter. It must be reasonable and consistent with the dimensions of the area of interest. For example, if the area of interest is 1000m long, and the spatial resolution is 0.1, then this will create millions of sun probes, making computation much longer than expected, and using a lot of memory. It is recommended to start with a high value and then reduce it afterwards.