From 4e848e84ecc2f4037c1b1ed715729affd404401f Mon Sep 17 00:00:00 2001 From: fengqiaogh Date: Thu, 11 Jul 2024 09:58:42 +0800 Subject: [PATCH 1/2] Add Chinese GaoFen-4 PMI supports --- Py6S/Params/wavelength.py | 281 +++++++++++++++++++++++++++++++++++++- 1 file changed, 279 insertions(+), 2 deletions(-) diff --git a/Py6S/Params/wavelength.py b/Py6S/Params/wavelength.py index ceffa73..b208717 100644 --- a/Py6S/Params/wavelength.py +++ b/Py6S/Params/wavelength.py @@ -56,7 +56,9 @@ def Wavelength(start_wavelength, end_wavelength=None, filter=None): wv_id = start_wavelength[0] if wv_id > 0: # It's one of the new predefined wavelengths that I've added - return Wavelength(start_wavelength[1], start_wavelength[2], start_wavelength[3]) + return Wavelength( + start_wavelength[1], start_wavelength[2], start_wavelength[3] + ) else: wv_type = "%d (Chosen Band)\n" % (-1 * wv_id) data = None @@ -105,7 +107,9 @@ def Wavelength(start_wavelength, end_wavelength=None, filter=None): else: # Filter has been given, so we must use it. # We check filter has been given at 2.5nm intervals - n_req_filter_values = round((end_wavelength - start_wavelength) / 0.0025) + 1 + n_req_filter_values = ( + round((end_wavelength - start_wavelength) / 0.0025) + 1 + ) if len(filter) != n_req_filter_values: raise sixs_exceptions.ParameterError( "wavelength", @@ -4823,6 +4827,279 @@ class PredefinedWavelengths: ), ) + # Chinese GaoFen-4 PMI spectral response functions + # Code used to create these things in + # https://github.com/fengqiaogh/rsr_tables + GF4_PMI_02 = ( + 140, + 0.42750, + 0.55250, + np.array( + [ + 0.01118, + 0.03168, + 0.07144, + 0.12730, + 0.18528, + 0.28259, + 0.40089, + 0.46410, + 0.49304, + 0.50492, + 0.52048, + 0.53962, + 0.55537, + 0.57093, + 0.58597, + 0.60058, + 0.61831, + 0.63818, + 0.65922, + 0.68289, + 0.70541, + 0.72523, + 0.74705, + 0.76845, + 0.78602, + 0.80680, + 0.83290, + 0.85899, + 0.88372, + 0.90607, + 0.92198, + 0.93871, + 0.95575, + 0.97155, + 0.98262, + 0.99203, + 0.99865, + 0.99832, + 0.97461, + 0.90408, + 0.76521, + 0.57874, + 0.38810, + 0.23382, + 0.13315, + 0.07305, + 0.04063, + 0.02254, + 0.01309, + 0.00795, + 0.00517, + ] + ), + ) + + GF4_PMI_03 = ( + 141, + 0.50500, + 0.62500, + np.array( + [ + 0.01108, + 0.03779, + 0.10335, + 0.23132, + 0.40561, + 0.57850, + 0.70739, + 0.78550, + 0.83728, + 0.87663, + 0.90765, + 0.92955, + 0.93864, + 0.95081, + 0.96262, + 0.97347, + 0.98363, + 0.99271, + 1.00000, + 0.99184, + 0.98096, + 0.96699, + 0.95099, + 0.93450, + 0.91913, + 0.90734, + 0.90203, + 0.90563, + 0.91493, + 0.92331, + 0.92475, + 0.91785, + 0.90807, + 0.90161, + 0.90005, + 0.89972, + 0.89347, + 0.87052, + 0.81898, + 0.71626, + 0.56729, + 0.39329, + 0.23632, + 0.12744, + 0.06359, + 0.03235, + 0.01690, + 0.00948, + 0.00542, + ] + ), + ) + + GF4_PMI_04 = ( + 142, + 0.60000, + 0.71250, + np.array( + [ + 0.00594, + 0.00970, + 0.01714, + 0.03369, + 0.06872, + 0.14367, + 0.27714, + 0.47730, + 0.70050, + 0.87736, + 0.97326, + 0.99882, + 0.99673, + 0.99069, + 0.98765, + 0.98712, + 0.98774, + 0.98814, + 0.98690, + 0.98389, + 0.98044, + 0.97572, + 0.96999, + 0.96166, + 0.95068, + 0.93804, + 0.92516, + 0.91225, + 0.89819, + 0.88116, + 0.86048, + 0.83663, + 0.81195, + 0.78781, + 0.76130, + 0.72144, + 0.65477, + 0.54886, + 0.41382, + 0.27545, + 0.16227, + 0.08878, + 0.04612, + 0.02445, + 0.01310, + 0.00740, + ] + ), + ) + + GF4_PMI_05 = ( + 143, + 0.72500, + 0.93250, + np.array( + [ + 0.00514, + 0.00851, + 0.01473, + 0.02696, + 0.04949, + 0.09160, + 0.16240, + 0.27537, + 0.42965, + 0.61206, + 0.78677, + 0.91639, + 0.98397, + 0.99398, + 0.98466, + 0.98517, + 0.99091, + 0.99722, + 1.00000, + 0.99746, + 0.99106, + 0.98214, + 0.97160, + 0.95927, + 0.94522, + 0.93021, + 0.91579, + 0.90298, + 0.89138, + 0.87994, + 0.86765, + 0.85513, + 0.84105, + 0.82548, + 0.80887, + 0.79147, + 0.77389, + 0.75721, + 0.74245, + 0.73006, + 0.72034, + 0.70982, + 0.69950, + 0.69023, + 0.68193, + 0.67365, + 0.66396, + 0.65202, + 0.63828, + 0.62329, + 0.60759, + 0.59744, + 0.58639, + 0.57480, + 0.56301, + 0.55070, + 0.53815, + 0.52646, + 0.51600, + 0.50588, + 0.49498, + 0.48306, + 0.47105, + 0.45976, + 0.44956, + 0.44098, + 0.43299, + 0.42316, + 0.41033, + 0.39258, + 0.36994, + 0.34205, + 0.30771, + 0.26730, + 0.22351, + 0.17922, + 0.13725, + 0.10038, + 0.06975, + 0.04649, + 0.02967, + 0.01859, + 0.01134, + 0.00687, + ] + ), + ) + # All of the original predefined wavelengths from 6S # CONSTANT_NAME = (ID for Constant, Start Wavelength, End Wavelength) METEOSAT_VISIBLE = (-2, 0.35, 1.11) From e250f7aad0edb7be944b4a9e46e62bf483a51fb9 Mon Sep 17 00:00:00 2001 From: fengqiaogh <137854199+fengqiaogh@users.noreply.github.com> Date: Thu, 29 Aug 2024 22:38:21 +0800 Subject: [PATCH 2/2] Add Himawari8 AHI support --- Py6S/Params/wavelength.py | 279 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 279 insertions(+) diff --git a/Py6S/Params/wavelength.py b/Py6S/Params/wavelength.py index b208717..c594d16 100644 --- a/Py6S/Params/wavelength.py +++ b/Py6S/Params/wavelength.py @@ -5100,6 +5100,285 @@ class PredefinedWavelengths: ), ) + H8_AHI_01 = ( + 144, + 0.44250, + 0.50000, + np.array( + [ + 0.00760, + 0.11278, + 0.31753, + 0.50122, + 0.66280, + 0.73007, + 0.78578, + 0.78391, + 0.83852, + 0.83537, + 0.92093, + 0.95499, + 0.95438, + 0.96513, + 0.96076, + 0.98783, + 0.98354, + 0.89851, + 0.72350, + 0.54996, + 0.30412, + 0.06743, + 0.01239, + 0.00206, + ] + ), + ) + + H8_AHI_02 = ( + 145, + 0.48250, + 0.54000, + np.array( + [ + 0.00380, + 0.01686, + 0.08091, + 0.20411, + 0.32921, + 0.49061, + 0.69779, + 0.92683, + 0.98463, + 0.99356, + 0.97572, + 0.99918, + 0.98361, + 1.00000, + 0.96322, + 0.85735, + 0.71243, + 0.55819, + 0.38520, + 0.18378, + 0.04341, + 0.01008, + 0.00287, + 0.00107, + ] + ), + ) + + H8_AHI_03 = ( + 146, + 0.58000, + 0.70000, + np.array( + [ + 0.00200, + 0.00856, + 0.03241, + 0.06375, + 0.13830, + 0.21760, + 0.29819, + 0.41843, + 0.56037, + 0.73830, + 0.86949, + 0.89812, + 0.90533, + 0.93076, + 0.94709, + 0.93564, + 0.94565, + 0.96942, + 0.95538, + 0.93655, + 0.95889, + 0.97799, + 0.96241, + 0.97876, + 0.99861, + 0.98486, + 0.98418, + 0.99725, + 0.99906, + 0.99354, + 0.99159, + 0.99455, + 0.98683, + 0.98477, + 0.98824, + 0.96355, + 0.89445, + 0.81917, + 0.72333, + 0.62676, + 0.53127, + 0.39487, + 0.22144, + 0.09203, + 0.03417, + 0.01362, + 0.00571, + 0.00247, + 0.00102, + ] + ), + ) + + H8_AHI_04 = ( + 147, + 0.82250, + 0.89000, + np.array( + [ + 0.00199, + 0.00470, + 0.00880, + 0.02225, + 0.08352, + 0.21819, + 0.39019, + 0.56217, + 0.72195, + 0.85911, + 0.92639, + 0.91686, + 0.87568, + 0.87025, + 0.88629, + 0.92446, + 0.97541, + 0.99996, + 0.87519, + 0.72325, + 0.56340, + 0.41753, + 0.27219, + 0.13548, + 0.05639, + 0.02512, + 0.00850, + 0.00325, + ] + ), + ) + + H8_AHI_05 = ( + 148, + 1.55750, + 1.67000, + np.array( + [ + 0.00139, + 0.00217, + 0.00349, + 0.00552, + 0.00948, + 0.01651, + 0.03060, + 0.05611, + 0.09843, + 0.15703, + 0.23636, + 0.32392, + 0.42314, + 0.52476, + 0.63428, + 0.74331, + 0.82720, + 0.86753, + 0.87225, + 0.85113, + 0.86875, + 0.91918, + 0.97889, + 0.99519, + 0.93440, + 0.86079, + 0.78574, + 0.69675, + 0.60600, + 0.51117, + 0.41218, + 0.31560, + 0.23124, + 0.15884, + 0.10495, + 0.06703, + 0.04239, + 0.02620, + 0.01636, + 0.01026, + 0.00670, + 0.00440, + 0.00305, + 0.00199, + 0.00134, + 0.00100, + ] + ), + ) + + H8_AHI_06 = ( + 149, + 2.20000, + 2.32000, + np.array( + [ + 0.00108, + 0.00138, + 0.00246, + 0.00434, + 0.00760, + 0.01377, + 0.02771, + 0.05378, + 0.09168, + 0.14338, + 0.20340, + 0.26995, + 0.34586, + 0.42489, + 0.50182, + 0.58241, + 0.66756, + 0.75391, + 0.83257, + 0.90443, + 0.95700, + 0.97740, + 0.99769, + 0.98360, + 0.93509, + 0.89296, + 0.84899, + 0.79695, + 0.73808, + 0.67492, + 0.61181, + 0.54469, + 0.47229, + 0.39605, + 0.32104, + 0.24657, + 0.17552, + 0.11383, + 0.06923, + 0.04069, + 0.02331, + 0.01417, + 0.00875, + 0.00615, + 0.00421, + 0.00323, + 0.00221, + 0.00147, + 0.00114, + ] + ), + ) # All of the original predefined wavelengths from 6S # CONSTANT_NAME = (ID for Constant, Start Wavelength, End Wavelength) METEOSAT_VISIBLE = (-2, 0.35, 1.11)