Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Brightness temperature simulation #221

Open
akasom89 opened this issue Apr 21, 2024 · 4 comments
Open

Brightness temperature simulation #221

akasom89 opened this issue Apr 21, 2024 · 4 comments
Assignees
Labels

Comments

@akasom89
Copy link

I am interested to study the effect of spectral response functions of different satellites on the calculated brightness temperature.

What I need is to provide a blackbody (in the easiest case) at an arbitrary temperature, and simulate brightness temperature of (for example) around 3.7 micron band of different sensors (Modis and ABI and …) and compare them with each other.

As Pyspectral provides a great collection of spectral responses and also able to compute in-band solar irradiance, I thought it might be possible to handle this study using the package. I tried to make this work using documentation, but I was not successful since now.

what I know is …

  • it is possible to compute the radiance of blackbody (but not using a spectral band of sensor)
  • it is possible to compute the in-band solar_irradiance(but that is not what we can plug in to Planck rule to compute BT)

I wonder if this is possible at all or not using Pyspectral?

Thanks in advance for this awesome library!

@adybbroe adybbroe self-assigned this Apr 22, 2024
@adybbroe
Copy link
Collaborator

If you assume the target is a a true blackbody at 3.7 micron the reflective part is zero, and then it is a simply convolution of the spectral response function with the Planck radiation, so for example at 280 K you can derive the radiance for the M12 and I4 bands of the NOAA-21 VIIRS like this, right?

from pyspectral.radiance_tb_conversion import RadTbConverter
mviirs = RadTbConverter('NOAA-21', 'viirs', 'M12')
m12rad = mviirs.tb2radiance(280.0)
iviirs = RadTbConverter('NOAA-21', 'viirs', 'I4')
i4rad = iviirs.tb2radiance(280.0)

I get:

In [11]: print(i4rad)
{'radiance': array([191065.76704347]), 'unit': 'W/m^2 sr^-1 m^-1', 'scale': 1.0}

In [12]: print(m12rad)
{'radiance': array([157540.73153277]), 'unit': 'W/m^2 sr^-1 m^-1', 'scale': 1.0}

@adybbroe
Copy link
Collaborator

adybbroe commented Apr 22, 2024

The you can derive the brightness temperature at any particular wavelength like this:

In [16]: from pyspectral.blackbody import blackbody_rad2temp as rad2temp

In [17]: rad2temp(3.7*1e-6, m12rad['radiance'])
Out[17]: array([279.71581719])

In [18]: rad2temp(3.7*1e-6, i4rad['radiance'])
Out[18]: array([283.65239919])

Not sure how much this helps you though?

@adybbroe
Copy link
Collaborator

But all this is neglecting the impact of the atmosphere, it derives so to speak the upwelling Tb at the surface. If you want to simulate the TOA Tb you would need a radiative transfer model, like RTTOV or RadSim or the like.

@akasom89
Copy link
Author

Thanks @adybbroe for your thoughts.

Also sorry for my delayed answer.

Let me share my understanding and why I think it may not be correct :

First step is great. the calculated radiance is based on the SRS of the sensor spectral band. I mean that is not the integration over the whole wavelengths. So we could simulate normalized radiance value of each spectral band succesfully.

But the next step is a bit problematic. I think rad2temp does not care about the spectral band SRS at all. in other words rad2temp thinks that we are providing it the total radiance of the blackbody.

moreover... the difference between the Brightness temperature and blackbody temperature is more than 100 degrees for spectral bands around 10 microns which seems to be wrong. don't you think so?

Thanks a lot again for your answers.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

2 participants