|
@@ -2266,6 +2266,197 @@ void IWave::rapideye(int iwa)
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+/* Following filter function created using create_iwave.py */
|
|
|
+
|
|
|
+void IWave::vgt1_spot4(int iwa)
|
|
|
+{
|
|
|
+
|
|
|
+ /* B0 of VGT1-spot4 */
|
|
|
+ static const float sr1[41] = {
|
|
|
+ .0001, .0003, .0005, .0007, .0010, .0013, .0028, .0050,
|
|
|
+ .0182, .0377, .0828, .1423, .2234, .3168, .4108, .5052,
|
|
|
+ .5925, .6759, .7509, .8212, .8815, .9361, .9699, .9920,
|
|
|
+ .9907, .9761, .9528, .9248, .8811, .8287, .7223, .5857,
|
|
|
+ .4394, .2876, .1820, .1024, .0579, .0331, .0196, .0125,
|
|
|
+ .0000
|
|
|
+ };
|
|
|
+
|
|
|
+ /* B2 of VGT1-spot4 */
|
|
|
+ static const float sr2[82] = {
|
|
|
+ .0017, .0017, .0016, .0016, .0016, .0024, .0031, .0039,
|
|
|
+ .0046, .0439, .0832, .1225, .1618, .2737, .3856, .4975,
|
|
|
+ .6094, .6615, .7136, .7657, .8178, .8278, .8377, .8477,
|
|
|
+ .8577, .8673, .8769, .8865, .8961, .9088, .9214, .9341,
|
|
|
+ .9468, .9595, .9722, .9849, .9976, .9895, .9815, .9734,
|
|
|
+ .9653, .9169, .8685, .8201, .7717, .6989, .6260, .5532,
|
|
|
+ .4804, .4243, .3681, .3120, .2559, .2229, .1899, .1569,
|
|
|
+ .1239, .1063, .0887, .0712, .0536, .0454, .0372, .0289,
|
|
|
+ .0207, .0175, .0143, .0111, .0079, .0069, .0060, .0050,
|
|
|
+ .0040, .0034, .0027, .0021, .0015, .0015, .0015, .0015,
|
|
|
+ .0015, .0000
|
|
|
+ };
|
|
|
+
|
|
|
+ /* B3 of VGT1-spot4 */
|
|
|
+ static const float sr3[133] = {
|
|
|
+ .0007, .0008, .0008, .0009, .0010, .0011, .0013, .0014,
|
|
|
+ .0015, .0019, .0022, .0026, .0030, .0051, .0072, .0092,
|
|
|
+ .0113, .0210, .0308, .0406, .0503, .0806, .1109, .1411,
|
|
|
+ .1714, .2271, .2828, .3385, .3942, .4584, .5226, .5869,
|
|
|
+ .6511, .6966, .7421, .7876, .8331, .8607, .8883, .9159,
|
|
|
+ .9435, .9552, .9668, .9785, .9902, .9927, .9951, .9976,
|
|
|
+ 1.0000, .9999, .9997, .9996, .9994, .9984, .9974, .9964,
|
|
|
+ .9954, .9927, .9900, .9873, .9846, .9766, .9686, .9606,
|
|
|
+ .9526, .9445, .9365, .9284, .9203, .9008, .8813, .8618,
|
|
|
+ .8423, .7897, .7370, .6844, .6318, .5584, .4849, .4114,
|
|
|
+ .3380, .2893, .2407, .1920, .1434, .1222, .1010, .0798,
|
|
|
+ .0586, .0505, .0425, .0345, .0264, .0229, .0194, .0159,
|
|
|
+ .0124, .0111, .0098, .0085, .0072, .0065, .0057, .0050,
|
|
|
+ .0042, .0038, .0034, .0031, .0027, .0024, .0021, .0017,
|
|
|
+ .0014, .0014, .0014, .0013, .0013, .0013, .0013, .0012,
|
|
|
+ .0012, .0012, .0011, .0011, .0011, .0010, .0009, .0009,
|
|
|
+ .0008, .0007, .0006, .0006, .0005
|
|
|
+ };
|
|
|
+
|
|
|
+ /* MIR of VGT1-spot4 */
|
|
|
+ static const float sr4[141] = {
|
|
|
+ .0010, .0010, .0010, .0010, .0010, .0011, .0011, .0012,
|
|
|
+ .0013, .0014, .0014, .0015, .0016, .0016, .0017, .0018,
|
|
|
+ .0018, .0019, .0021, .0022, .0024, .0026, .0028, .0030,
|
|
|
+ .0032, .0035, .0038, .0041, .0044, .0050, .0055, .0060,
|
|
|
+ .0066, .0075, .0083, .0092, .0101, .0118, .0136, .0154,
|
|
|
+ .0171, .0203, .0235, .0267, .0299, .0366, .0433, .0501,
|
|
|
+ .0568, .0708, .0848, .0989, .1129, .1406, .1684, .1961,
|
|
|
+ .2239, .2691, .3142, .3594, .4045, .4677, .5308, .5939,
|
|
|
+ .6571, .7099, .7628, .8156, .8685, .8934, .9183, .9433,
|
|
|
+ .9682, .9761, .9841, .9920, 1.0000, .9971, .9941, .9912,
|
|
|
+ .9883, .9840, .9797, .9753, .9710, .9517, .9325, .9132,
|
|
|
+ .8939, .8713, .8488, .8262, .8036, .7457, .6878, .6299,
|
|
|
+ .5720, .5109, .4498, .3887, .3276, .2926, .2576, .2226,
|
|
|
+ .1876, .1704, .1531, .1358, .1186, .1078, .0970, .0863,
|
|
|
+ .0755, .0685, .0614, .0544, .0474, .0430, .0385, .0340,
|
|
|
+ .0296, .0269, .0242, .0214, .0187, .0172, .0157, .0142,
|
|
|
+ .0127, .0118, .0109, .0101, .0092, .0086, .0080, .0075,
|
|
|
+ .0069, .0064, .0060, .0055, .0050
|
|
|
+ };
|
|
|
+
|
|
|
+ static const float wli[4] = {0.400, 0.580, 0.700, 1.450};
|
|
|
+ static const float wls[4] = {0.500, 0.782, 1.030, 1.800};
|
|
|
+
|
|
|
+ ffu.wlinf = (float)wli[iwa-1];
|
|
|
+ ffu.wlsup = (float)wls[iwa-1];
|
|
|
+
|
|
|
+ int i;
|
|
|
+ for(i = 0; i < 1501; i++) ffu.s[i] = 0;
|
|
|
+
|
|
|
+ switch(iwa)
|
|
|
+ {
|
|
|
+ case 1: for(i = 0; i < 41; i++) ffu.s[60+i] = sr1[i];
|
|
|
+ break;
|
|
|
+ case 2: for(i = 0; i < 82; i++) ffu.s[132+i] = sr2[i];
|
|
|
+ break;
|
|
|
+ case 3: for(i = 0; i < 133; i++) ffu.s[180+i] = sr3[i];
|
|
|
+ break;
|
|
|
+ case 4: for(i = 0; i < 141; i++) ffu.s[480+i] = sr4[i];
|
|
|
+ break;
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+/* Following filter function created using create_iwave.py */
|
|
|
+
|
|
|
+void IWave::vgt2_spot5(int iwa)
|
|
|
+{
|
|
|
+
|
|
|
+ /* B0 of VGT2_spot5 */
|
|
|
+ static const float sr1[61] = {
|
|
|
+ .0007, .0008, .0010, .0010, .0011, .0012, .0013, .0029,
|
|
|
+ .0045, .0209, .0374, .0964, .1553, .2551, .3549, .4536,
|
|
|
+ .5524, .6318, .7111, .7602, .8093, .8304, .8514, .8698,
|
|
|
+ .8882, .9441, 1.0000, .9787, .9574, .7493, .5412, .3553,
|
|
|
+ .1694, .1083, .0472, .0318, .0163, .0116, .0069, .0053,
|
|
|
+ .0036, .0028, .0020, .0017, .0014, .0011, .0009, .0008,
|
|
|
+ .0008, .0008, .0007, .0006, .0006, .0006, .0005, .0004,
|
|
|
+ .0004, .0004, .0004, .0003, .0003
|
|
|
+ };
|
|
|
+
|
|
|
+ /* B2 of VGT2_spot5 */
|
|
|
+ static const float sr2[81] = {
|
|
|
+ .0006, .0006, .0006, .0007, .0007, .0033, .0059, .0084,
|
|
|
+ .0110, .0688, .1265, .1842, .2420, .3532, .4643, .5755,
|
|
|
+ .6866, .7306, .7745, .8185, .8625, .8766, .8906, .9046,
|
|
|
+ .9187, .9307, .9426, .9546, .9666, .9749, .9833, .9917,
|
|
|
+ 1.0000, .9957, .9915, .9872, .9829, .9387, .8945, .8503,
|
|
|
+ .8061, .7316, .6570, .5825, .5079, .4468, .3856, .3245,
|
|
|
+ .2634, .2293, .1952, .1611, .1270, .1095, .0921, .0746,
|
|
|
+ .0572, .0490, .0408, .0326, .0244, .0208, .0171, .0135,
|
|
|
+ .0099, .0085, .0071, .0057, .0043, .0037, .0031, .0025,
|
|
|
+ .0019, .0017, .0014, .0012, .0010, .0009, .0008, .0007,
|
|
|
+ .0006
|
|
|
+ };
|
|
|
+
|
|
|
+ /* B3 of VGT2_spot5 */
|
|
|
+ static const float sr3[121] = {
|
|
|
+ .0003, .0003, .0003, .0003, .0003, .0003, .0003, .0004,
|
|
|
+ .0004, .0005, .0006, .0008, .0009, .0017, .0024, .0032,
|
|
|
+ .0040, .0082, .0124, .0166, .0208, .0361, .0514, .0667,
|
|
|
+ .0820, .1175, .1530, .1885, .2240, .2774, .3309, .3844,
|
|
|
+ .4378, .4906, .5434, .5962, .6490, .6899, .7308, .7716,
|
|
|
+ .8125, .8369, .8612, .8856, .9100, .9248, .9396, .9544,
|
|
|
+ .9692, .9761, .9829, .9898, .9967, .9975, .9983, .9992,
|
|
|
+ 1.0000, .9939, .9878, .9817, .9756, .9618, .9480, .9342,
|
|
|
+ .9204, .9030, .8856, .8682, .8508, .8236, .7965, .7693,
|
|
|
+ .7422, .6945, .6467, .5989, .5512, .4910, .4308, .3706,
|
|
|
+ .3104, .2681, .2258, .1836, .1413, .1213, .1013, .0813,
|
|
|
+ .0613, .0530, .0447, .0364, .0281, .0245, .0209, .0172,
|
|
|
+ .0136, .0120, .0104, .0089, .0073, .0065, .0056, .0047,
|
|
|
+ .0039, .0036, .0032, .0029, .0025, .0023, .0021, .0018,
|
|
|
+ .0016, .0015, .0014, .0012, .0011, .0010, .0008, .0007,
|
|
|
+ .0006
|
|
|
+ };
|
|
|
+
|
|
|
+ /* MIR of VGT2_spot5 */
|
|
|
+ static const float sr4[141] = {
|
|
|
+ .0005, .0006, .0006, .0007, .0008, .0008, .0008, .0009,
|
|
|
+ .0009, .0009, .0009, .0009, .0009, .0011, .0014, .0016,
|
|
|
+ .0019, .0022, .0024, .0027, .0029, .0034, .0040, .0045,
|
|
|
+ .0050, .0060, .0070, .0080, .0090, .0108, .0126, .0143,
|
|
|
+ .0161, .0196, .0231, .0266, .0301, .0372, .0444, .0515,
|
|
|
+ .0586, .0723, .0860, .0997, .1134, .1401, .1668, .1936,
|
|
|
+ .2203, .2668, .3134, .3599, .4065, .4664, .5263, .5863,
|
|
|
+ .6462, .6929, .7396, .7862, .8329, .8630, .8931, .9233,
|
|
|
+ .9534, .9644, .9754, .9863, .9973, .9980, .9987, .9993,
|
|
|
+ 1.0000, .9987, .9974, .9962, .9949, .9914, .9879, .9845,
|
|
|
+ .9810, .9687, .9564, .9440, .9317, .9055, .8793, .8532,
|
|
|
+ .8270, .7811, .7351, .6892, .6433, .5746, .5059, .4371,
|
|
|
+ .3684, .3244, .2803, .2363, .1923, .1713, .1502, .1292,
|
|
|
+ .1082, .0970, .0859, .0747, .0636, .0575, .0514, .0453,
|
|
|
+ .0392, .0360, .0327, .0295, .0262, .0235, .0209, .0182,
|
|
|
+ .0155, .0139, .0123, .0106, .0090, .0082, .0073, .0065,
|
|
|
+ .0057, .0053, .0050, .0046, .0043, .0040, .0037, .0033,
|
|
|
+ .0030, .0026, .0022, .0019, .0015
|
|
|
+ };
|
|
|
+
|
|
|
+ static const float wli[4] = {0.400, 0.580, 0.700, 1.450};
|
|
|
+ static const float wls[4] = {0.550, 0.780, 1.000, 1.800};
|
|
|
+
|
|
|
+ ffu.wlinf = (float)wli[iwa-1];
|
|
|
+ ffu.wlsup = (float)wls[iwa-1];
|
|
|
+
|
|
|
+ int i;
|
|
|
+ for(i = 0; i < 1501; i++) ffu.s[i] = 0;
|
|
|
+
|
|
|
+ switch(iwa)
|
|
|
+ {
|
|
|
+ case 1: for(i = 0; i < 61; i++) ffu.s[60+i] = sr1[i];
|
|
|
+ break;
|
|
|
+ case 2: for(i = 0; i < 81; i++) ffu.s[132+i] = sr2[i];
|
|
|
+ break;
|
|
|
+ case 3: for(i = 0; i < 121; i++) ffu.s[180+i] = sr3[i];
|
|
|
+ break;
|
|
|
+ case 4: for(i = 0; i < 141; i++) ffu.s[480+i] = sr4[i];
|
|
|
+ break;
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
float IWave::equivwl() const
|
|
|
{
|
|
|
float seb = 0;
|
|
@@ -2336,6 +2527,8 @@ void IWave::parse()
|
|
|
else if(iwave <= 84) avnir(iwave - 80);
|
|
|
else if(iwave <= 87) ikonos(iwave - 84);
|
|
|
else if(iwave <= 92) rapideye(iwave - 87);
|
|
|
+ else if(iwave <= 96) vgt1_spot4(iwave - 92);
|
|
|
+ else if(iwave <= 100) vgt2_spot5(iwave - 96);
|
|
|
else G_warning(_("Unsupported iwave value: %d"), iwave);
|
|
|
}
|
|
|
|
|
@@ -2352,7 +2545,7 @@ void IWave::parse()
|
|
|
/* --- spectral condition ---- */
|
|
|
void IWave::print()
|
|
|
{
|
|
|
- static const string nsat[94] = {
|
|
|
+ static const string nsat[102] = {
|
|
|
string(" constant "), string(" user s "),
|
|
|
string(" meteosat "), string(" goes east "), string(" goes west "),
|
|
|
string(" avhrr 1 (noaa6) "), string(" avhrr 2 (noaa6) "),
|
|
@@ -2392,6 +2585,10 @@ void IWave::print()
|
|
|
string(" ikonos green "), string(" ikonos red "), string(" ikonos NIR "),
|
|
|
string(" rapideye blue "), string(" rapideye green "), string(" rapideye red "),
|
|
|
string(" rapideye rededge"), string(" rapideye NIR "),
|
|
|
+ string(" vgt1 spot4 0 "), string(" vgt1 spot4 2 "), string(" vgt1 spot4 3 "),
|
|
|
+ string(" vgt1 spot4 MIR "),
|
|
|
+ string(" vgt2 spot5 0 "), string(" vgt2 spot5 2 "), string(" vgt2 spot5 3 "),
|
|
|
+ string(" vgt2 spot5 MIR "),
|
|
|
};
|
|
|
|
|
|
|