예제 #1
0
class TestSolarflux(unittest.TestCase):

    """Unit testing the solar flux calculations"""

    def setUp(self):
        """Set up"""
        self.solar_irr = None
        self.rsr = TEST_RSR
        return

    def test_read(self):
        """Test that solar irradiance spctrum"""
        self.solar_irr = \
            SolarIrradianceSpectrum(TOTAL_IRRADIANCE_SPECTRUM_2000ASTM,
                                    dlambda=0.005)
        self.assertTrue(os.path.exists(self.solar_irr.filename))

        self.assertEqual(self.solar_irr.wavelength.shape[0], 1697)
        self.assertEqual(self.solar_irr.irradiance.shape[0], 1697)

    def test_solar_flux(self):
        """Calculate the solar-flux"""
        self.solar_irr = \
            SolarIrradianceSpectrum(TOTAL_IRRADIANCE_SPECTRUM_2000ASTM,
                                    dlambda=0.005)

        # rsr function (se above) is given in micronsm therefore the scale
        # factor is 1.0 and not 1e+6 (default)!
        sflux = self.solar_irr.inband_solarflux(self.rsr, scale=1.0)
        self.assertAlmostEqual(sflux, 2.0029277645144234)
        #self.assertAlmostEqual(sflux, 2.5)

    def tearDown(self):
        """Clean up"""
        return
예제 #2
0
class TestSolarflux(unittest.TestCase):
    """Unit testing the solar flux calculations."""
    def setUp(self):
        """Set up."""
        self.solar_irr = SolarIrradianceSpectrum(
            TOTAL_IRRADIANCE_SPECTRUM_2000ASTM, dlambda=0.005)
        self.rsr = TEST_RSR

    def test_read(self):
        """Test that solar irradiance spctrum."""
        self.assertTrue(os.path.exists(self.solar_irr.filename))
        self.assertEqual(self.solar_irr.wavelength.shape[0], 1697)
        self.assertEqual(self.solar_irr.irradiance.shape[0], 1697)

    def test_solar_flux(self):
        """Calculate the solar-flux."""
        # rsr function (se above) is given in micronsm therefore the scale
        # factor is 1.0 and not 1e+6 (default)!
        sflux = self.solar_irr.inband_solarflux(self.rsr, scale=1.0)
        self.assertAlmostEqual(sflux, 2.002927627)
        # self.assertAlmostEqual(sflux, 2.5)

    def test_interpolate(self):
        """Test the interpolate method."""
        self.solar_irr.interpolate(dlambda=0.001,
                                   ival_wavelength=(0.200, 0.240))
        self.assertTrue(
            np.allclose(RESULT_IPOL_WVLS, self.solar_irr.ipol_wavelength))
예제 #3
0
class TestSolarflux(unittest.TestCase):
    """Unit testing the solar flux calculations"""
    def setUp(self):
        """Set up"""
        self.solar_irr = None
        self.rsr = TEST_RSR
        return

    def test_read(self):
        """Test that solar irradiance spctrum"""
        self.solar_irr = \
            SolarIrradianceSpectrum(TOTAL_IRRADIANCE_SPECTRUM_2000ASTM,
                                    dlambda=0.005)
        self.assertTrue(os.path.exists(self.solar_irr.filename))

        self.assertEqual(self.solar_irr.wavelength.shape[0], 1697)
        self.assertEqual(self.solar_irr.irradiance.shape[0], 1697)

    def test_solar_flux(self):
        """Calculate the solar-flux"""
        self.solar_irr = \
            SolarIrradianceSpectrum(TOTAL_IRRADIANCE_SPECTRUM_2000ASTM,
                                    dlambda=0.005)

        # rsr function (se above) is given in micronsm therefore the scale
        # factor is 1.0 and not 1e+6 (default)!
        sflux = self.solar_irr.inband_solarflux(self.rsr, scale=1.0)
        self.assertAlmostEqual(sflux, 2.0029277645144234)
        #self.assertAlmostEqual(sflux, 2.5)

    def tearDown(self):
        """Clean up"""
        return
예제 #4
0
 def _get_solarflux(self):
     """Derive the in-band solar flux from rsr over the Near IR band (3.7 or 3.9 microns)."""
     solar_spectrum = \
         SolarIrradianceSpectrum(TOTAL_IRRADIANCE_SPECTRUM_2000ASTM,
                                 dlambda=0.0005,
                                 wavespace=self.wavespace)
     self.solar_flux = solar_spectrum.inband_solarflux(self.rsr[self.bandname])
예제 #5
0
 def _get_solarflux(self):
     """Derive the in-band solar flux from rsr over the Near IR band (3.7 or
     3.9 microns)"""
     solar_spectrum = SolarIrradianceSpectrum(TOTAL_IRRADIANCE_SPECTRUM_2000ASTM,
                                              dlambda=0.0005,
                                              wavespace=self.wavespace)
     self.solar_flux = solar_spectrum.inband_solarflux(
         self.rsr[self.bandname])
예제 #6
0
print("... read responce functions")
from pyspectral.near_infrared_reflectance import Calculator
from pyspectral.solar import (SolarIrradianceSpectrum, TOTAL_IRRADIANCE_SPECTRUM_2000ASTM)

solar_irr = SolarIrradianceSpectrum(TOTAL_IRRADIANCE_SPECTRUM_2000ASTM, dlambda=0.0005)

#from pyspectral.seviri_rsr import load
#seviri = load()
#rsr = {'wavelength': seviri['IR3.9']['wavelength'], 
#       'response': seviri['IR3.9']['met10']['95']}
#sflux = solar_irr.solar_flux_over_band(rsr)

solar_irr = SolarIrradianceSpectrum(TOTAL_IRRADIANCE_SPECTRUM_2000ASTM, dlambda=0.0005)
from pyspectral.rsr_reader import RelativeSpectralResponse
seviri = RelativeSpectralResponse('Meteosat-10', 'seviri')
sflux = solar_irr.inband_solarflux(seviri.rsr['IR3.9'])

ch39 = local_data['IR_039']
ch11 = local_data['IR_108']
ch13 = local_data['IR_134']
lonlats = ch39.area.get_lonlats()

from pyorbital.astronomy import sun_zenith_angle
sunz = sun_zenith_angle(tslot, lonlats[0], lonlats[1])

print("... create look-up-table")
#refl37 = Calculator(rsr)
refl37 = Calculator('Meteosat-9', 'seviri', 'IR3.9', solar_flux=sflux)
#refl37.make_tb2rad_lut('/tmp/seviri_37_tb2rad_lut.npz')
# new syntax -> 
#refl37.make_tb2rad_lut('IR3.9','/data/COALITION2/database/meteosat/SEVIRI/seviri_tb2rad_lut/')
예제 #7
0
_DEFAULT_LOG_FORMAT = '[%(levelname)s: %(asctime)s : %(name)s] %(message)s'
LOG = logging.getLogger('test_ahi')
handler = logging.StreamHandler(sys.stderr)

formatter = logging.Formatter(fmt=_DEFAULT_LOG_FORMAT,
                              datefmt=_DEFAULT_TIME_FORMAT)
handler.setFormatter(formatter)
handler.setLevel(logging.DEBUG)
LOG.setLevel(logging.DEBUG)
logging.getLogger("").setLevel(logging.DEBUG)
LOG.addHandler(handler)

ahi = RelativeSpectralResponse('Himawari-8', 'ahi')
solar_irr = SolarIrradianceSpectrum(TOTAL_IRRADIANCE_SPECTRUM_2000ASTM,
                                    dlambda=0.005)
sflux = solar_irr.inband_solarflux(ahi.rsr['ch7'])
LOG.info("Solar flux over Band: " + str(sflux))

# sunz = [80., 80.5]
# tb7 = [288.0, 390.0]
# tb14 = [282.0, 272.0]
# tb16 = [275.0, 269.0]

sunz = np.random.rand(5500, 550) * 120.
tb7 = np.random.rand(5500, 550) * 120. + 260.0
tb14 = np.random.rand(5500, 550) * 30. + 260.0
tb16 = np.random.rand(5500, 550) * 30. + 250.0

refl38 = Calculator(
    'Himawari-8',
    'ahi',