I'd like to estimate the colour-temperature of sunlight (as applied in photography) based on the position of the sun in the sky for a mobile phone app I'm working on (app link from a more appropriate question -Are there any mobile applications that calculate sunrise/sunset based on location?).

I'm already able to determine the position of the sun in the sky based on the date, time, latitude and longitude.

From this position (sun elevation from the horizon) I'd like to estimate the colour-temperature assuming clear skys. I understand there are factors such as how overcast the sky is that I won't be able to take into account. I'll assume an unobstructed view of the horizon.

E.g. Something like the following.

Light Source                    Colour Temperature in K
============                    =======================
Sunrise and Sunset              2,000 to 3,000
Sunlight at 10 Degree elevation 3,500
Sunlight at 20 Degree elevation 4,000
Sunlight at 30 Degree elevation 4,500
Noon Sun and Clear Sky          4,900 to 5,800
Start of Blue Hour              ?

Is there a formula I can use that directly relates the estimated colour temperature to the suns position in the sky?

Note, this question was originally asked on the photography stack exchange but was migrated here as more of a physics based problem.

My current understanding of the problem is that I'll need to apply Rayleigh scattering and possibly Mie scattering.

The following image from Cambridge in colour shows an (exaggerated?) colour temperature scale with dawn (1), sunrise (2), midday (3), sunset (4) and dusk (5) marked. Exaggerated sky colour temperature

  • 2
    $\begingroup$ In addition to the angle of the sun in the sky and the resulting thickness of the atmosphere it passes through, cloud cover, the amount of water vapor in the air, the amount and types of particulate matter suspended in the air, as well as the type and color of ground cover reflecting the sunlight all play a significant role in the color temperature of sunlight in a particular shooting environment. Heavy cloud cover in particular will affect it far more than the angle in the sky. $\endgroup$
    – Michael Clark
    May 29, 2013 at 23:10
  • 1
    $\begingroup$ @MichaelClark So would there be any worth in estimating the colour temp if the other factors are far more significant? People have been asking me to add the blue hour and golden hour times to the app. I thought it would be interesting to estimate the colour temp throughout the day based on the location and date. $\endgroup$ May 29, 2013 at 23:33
  • 1
    $\begingroup$ A great contributor to atmosphere thickness and color-temperature is altitude. Without altitude data any such estimate would be useless. $\endgroup$
    – Itai
    May 30, 2013 at 1:16
  • $\begingroup$ @Itai. Good to know. I can get a reasonable estimate of the observers altitude with the GPS data, or look it up using the latitude and longitude which tend to be much more accurate. The difficult part is how the latitude, longitude, altitude and sun position in the sky might be used to estimate the color-temperature. I understand that whatever I end up with will be crude at best as it won't take into account weather conditions or local terrain/surfaces. $\endgroup$ May 30, 2013 at 1:33
  • 1
    $\begingroup$ What about taking photos with fixed camera parameters every 30min on a clear day? Using that dataset, you can look at a histogram of the colors for each image and fit a color temperature distribution to that image. From there you have an empirical relation for the color temp, and you can adjust for sunrise and sunset variations. $\endgroup$
    – KF Gauss
    Feb 19, 2018 at 5:43

1 Answer 1


The sun's color is directly related to the air mass its light travels through to reach the observer.

An article which relates the air mass to the observed spectrum of the sun is linked here. In particular, equation 17 provides the intensity seen by an observer as a function of wavelength, accounting for contributions from air molecules and aerosols. This equation applies to an observer at sea level, although the role of altitude is also discussed in the article.

At a given zenith angle, one can then calculate the radiation spectrum as a function of wavelength, for various levels of aerosols (figures 9, 10, and 11).

The resulting spectra are no longer Planckian, and you'll have to apply your favorite definition of color temperature to each one.

  • 3
    $\begingroup$ +1 would recommend you explicitly write the equations in the answer to keep it self-contained $\endgroup$
    – KF Gauss
    Feb 20, 2018 at 4:17
  • 1
    $\begingroup$ @kleingordon, I agree that adding the equations explicitly would complete this answer and then I can award the bounty $\endgroup$ Feb 21, 2018 at 16:55
  • 1
    $\begingroup$ As mentioned above, equation 17 is $I(\lambda) \approx {I_0}(\lambda) exp \biggl ( - \bigl ( \frac{M_{Mol} K_{Mol}}{\lambda^4} + \frac{M_{Aer} K_{Aer}}{\lambda} + M_{Lay} K_{Lay} \lambda \bigr ) \biggr )$ $\endgroup$ Feb 23, 2018 at 16:48
  • 1
    $\begingroup$ Where $K$ values are scattering coefficients and $M$ values are an optical air mass defined as a ratio of optical thicknesses of an oblique and vertical ray. The subscripts $Mol$, $Aer$, and $Lay$ "represent molecular atmosphere, trophospheric aerosols, and elevated aerosol layers respectively." $\endgroup$ Feb 23, 2018 at 16:54
  • 1
    $\begingroup$ $I_0(\lambda)$ is a Planck radiator at 5800 K, given by: $$I_0(\lambda) \approx \frac{2 h c^2}{\lambda^5} (e^{\frac{h c}{k \lambda T}} - 1)^{-1}$$ where $h$ is Planck's constant, $k$ is Boltzmann's constant, and $c$ is the speed of light. $\endgroup$ Feb 23, 2018 at 16:57

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.