[GRASS-SVN] r60610 - grass/trunk/imagery/i.atcorr
svn_grass at osgeo.org
svn_grass at osgeo.org
Fri May 30 08:14:49 PDT 2014
Author: neteler
Date: 2014-05-30 08:14:49 -0700 (Fri, 30 May 2014)
New Revision: 60610
Modified:
grass/trunk/imagery/i.atcorr/GeomCond.cpp
grass/trunk/imagery/i.atcorr/GeomCond.h
grass/trunk/imagery/i.atcorr/Iwave.cpp
grass/trunk/imagery/i.atcorr/Iwave.h
grass/trunk/imagery/i.atcorr/create_iwave.py
grass/trunk/imagery/i.atcorr/i.atcorr.html
Log:
i.atcorr: added Landsat8 support for testing (vesnikos, trac #2305)
Modified: grass/trunk/imagery/i.atcorr/GeomCond.cpp
===================================================================
--- grass/trunk/imagery/i.atcorr/GeomCond.cpp 2014-05-30 13:40:31 UTC (rev 60609)
+++ grass/trunk/imagery/i.atcorr/GeomCond.cpp 2014-05-30 15:14:49 UTC (rev 60610)
@@ -369,6 +369,9 @@
case 13: /* rapideye * enter month,day,hh.ddd,long.,lat. */
case 14: /* vgt1_spot4 * enter month,day,hh.ddd,long.,lat. */
case 15: /* vgt2_spot5 * enter month,day,hh.ddd,long.,lat. */
+ case 16: /* worldview2 * enter month,day,hh.ddd,long.,lat. */
+ case 17: /* quickbird2 * enter month,day,hh.ddd,long.,lat. */
+ case 18: /* Landsat 8 * enter month,day,hh.ddd,long.,lat. */
{
cin >> month;
cin >> jday;
@@ -414,24 +417,27 @@
/* ---- print geometrical conditions ---- */
void GeomCond::print()
{
- static const string etiq1[16] = {
+ static const string etiq1[] = {
string(" user defined conditions "),
- string(" meteosat observation "),
- string(" goes east observation "),
- string(" goes west observation "),
- string(" avhrr (AM noaa) observation "),
- string(" avhrr (PM noaa) observation "),
- string(" h.r.v. observation "),
- string(" t.m. observation "),
- string(" etm+ observation "),
- string(" liss observation "),
- string(" aster observation "),
- string(" avnir observation "),
- string(" ikonos observation "),
- string(" rapideye observation "),
- string(" vgt1_spot4 observation "),
- string(" vgt2_spot5 observation ")
- };
+ string(" Meteosat observation "),
+ string(" GOES east observation "),
+ string(" GOES west observation "),
+ string(" AVHRR (AM noaa) observation "),
+ string(" AVHRR (PM noaa) observation "),
+ string(" H.R.V. observation "),
+ string(" T.M. observation "),
+ string(" ETM+ observation "),
+ string(" LISS observation "),
+ string(" ASTER observation "),
+ string(" AVNIR observation "),
+ string(" Ikonos observation "),
+ string(" Rapideye observation "),
+ string(" VGT1-SPOT4 observation "),
+ string(" VGT2-SPOT5 observation "),
+ string(" Worldview2 observation "),
+ string(" Quickbird2 observation "),
+ string(" Landsat 8 observation ")
+ };
static const string head(" geometrical conditions identity ");
static const string line(" ------------------------------- ");
Modified: grass/trunk/imagery/i.atcorr/GeomCond.h
===================================================================
--- grass/trunk/imagery/i.atcorr/GeomCond.h 2014-05-30 13:40:31 UTC (rev 60609)
+++ grass/trunk/imagery/i.atcorr/GeomCond.h 2014-05-30 15:14:49 UTC (rev 60610)
@@ -59,15 +59,20 @@
/* c */
/* 15 vgt2_spot5 * enter month,day,hh.ddd,long.,lat.c */
/* c */
+/* 16 worldview2 * enter month,day,hh.ddd,long.,lat.c */
/* c */
+/* 17 quickbird * enter month,day,hh.ddd,long.,lat. c */
+/* c */
+/* 18 Landsat 8 * enter month,day,hh.ddd,long.,lat. c */
+/* c */
/* note: for hrv and tm experiments long. and lat. are the c */
/* coordinates of the scene center. c */
/* lat. must be > 0 for north lat., < 0 for south lat. c */
-/* long. must be > 0 for east long., <0 for west long. c */
+/* long. must be > 0 for east long., < 0 for west long. c */
/* c */
/* solar and viewing positions are computed c */
/* c */
-/* **********************************************************************c */
+/* *********************************************************************c */
struct GeomCond
{
Modified: grass/trunk/imagery/i.atcorr/Iwave.cpp
===================================================================
--- grass/trunk/imagery/i.atcorr/Iwave.cpp 2014-05-30 13:40:31 UTC (rev 60609)
+++ grass/trunk/imagery/i.atcorr/Iwave.cpp 2014-05-30 15:14:49 UTC (rev 60610)
@@ -2457,6 +2457,644 @@
}
}
+void IWave::worldview2(int iwa)
+{
+
+ /* WV2 Pan of wv2_spectral_response */
+ static const float sr1[301] = {
+ .0055, .0062, .0068, .0045, .0022, .0024, .0027, .0034,
+ .0041, .0038, .0030, .0039, .0049, .0042, .0034, .0037,
+ .0040, .0050, .0060, .0050, .0040, .0036, .0033, .0037,
+ .0042, .0052, .0063, .0048, .0034, .0061, .0088, .0105,
+ .0121, .0499, .0881, .2723, .4599, 1.6988, 2.9515, 55.9008,
+ 109.7660, 271.3440, 436.1630, 461.8220, 487.5330, 494.8560, 504.9920, 515.2150,
+ 525.5960, 529.5890, 535.5830, 529.7560, 522.2330, 527.2070, 533.6600, 528.6020,
+ 523.0890, 541.1120, 557.2800, 558.1700, 558.2320, 580.8990, 605.5330, 616.2080,
+ 626.7920, 612.1180, 595.4140, 612.0080, 630.7120, 649.1530, 671.5410, 663.7040,
+ 654.7330, 672.5320, 693.0980, 691.3350, 688.2370, 678.2900, 664.9730, 683.3230,
+ 701.5600, 705.9920, 713.5760, 709.8480, 709.7860, 738.4220, 765.7520, 762.7560,
+ 757.8270, 759.1620, 759.8180, 779.9830, 794.0850, 797.9350, 800.7150, 811.3510,
+ 819.2900, 820.8140, 823.0300, 829.7940, 838.8690, 848.9130, 860.8020, 858.0370,
+ 858.4620, 865.1970, 870.2850, 877.9320, 889.2780, 896.4750, 909.2530, 913.0800,
+ 917.8850, 914.2210, 910.7620, 916.9790, 924.8900, 936.8300, 950.7910, 943.9980,
+ 936.9110, 932.3110, 929.4170, 938.2740, 951.2320, 960.0120, 962.7810, 957.5010,
+ 953.8650, 954.7520, 957.3760, 968.1550, 977.7350, 961.3320, 949.2170, 946.9550,
+ 953.3340, 946.6560, 952.1930, 962.4700, 969.5950, 983.9680, 1000.0000, 994.3200,
+ 994.0030, 980.9740, 969.5630, 968.2530, 968.3970, 973.6740, 978.8550, 966.8470,
+ 963.7410, 952.2520, 946.6540, 945.9200, 952.9380, 954.7590, 962.5830, 962.1420,
+ 956.6370, 950.3810, 940.9620, 936.2240, 924.5960, 923.3790, 921.6840, 933.5680,
+ 940.8310, 957.9770, 963.8320, 958.1430, 941.2970, 924.2600, 903.0000, 895.8780,
+ 887.1520, 910.5230, 929.4020, 744.0190, 553.8670, 320.2460, 85.8164, 51.4292,
+ 17.2983, 12.0102, 6.5998, 4.3680, 2.1313, 1.5356, .9222, .7218,
+ .5287, .4897, .4497, .4318, .4090, .4071, .3964, .4203,
+ .4465, .4033, .3613, .3303, .2980, .3011, .3085, .2862,
+ .2615, .2536, .2423, .2746, .3070, .2950, .2837, .2615,
+ .2375, .2483, .2590, .2701, .2825, .2617, .2408, .2486,
+ .2580, .2735, .2876, .2828, .2762, .2753, .2731, .2568,
+ .2422, .2392, .2343, .2234, .2135, .2157, .2186, .2048,
+ .1911, .1799, .1690, .1771, .1832, .1676, .1513, .1388,
+ .1258, .1297, .1337, .1225, .1114, .1029, .0942, .1047,
+ .1152, .0995, .0839, .0845, .0853, .0776, .0701, .0707,
+ .0711, .0657, .0600, .0621, .0642, .0557, .0473, .0433,
+ .0392, .0361, .0329, .0341, .0352, .0314, .0276, .0255,
+ .0234, .0211, .0188, .0180, .0171, .0151, .0131, .0121,
+ .0111, .0100, .0088, .0088, .0087, .0080, .0072, .0071,
+ .0069, .0067, .0064, .0064, .0063
+ };
+
+ /* WV2 Coastal Blue of wv2_spectral_response */
+ static const float sr2[301] = {
+ .0019, .0033, .0033, .0028, .0017, .0033, .0036, .0044,
+ .0029, .0062, .0054, .0050, .0074, .0135, .0454, .1731,
+ .6347, 3.4150, 27.4284, 132.9030, 355.9880, 592.5800, 700.7190, 739.6250,
+ 765.3070, 787.8420, 817.0880, 838.6870, 861.7800, 883.5130, 905.0550, 917.0720,
+ 927.2080, 947.6580, 965.0880, 979.3040, 985.9210, 989.0940, 997.2360, 974.6130,
+ 853.9400, 588.0320, 281.5770, 80.5215, 8.9461, 1.3331, .3609, .1454,
+ .0712, .0380, .0115, .0096, .0051, .0112, .0110, .0108,
+ .0091, .0101, .0117, .0064, .0013, .0014, .0009, .0006,
+ .0007, .0009, .0009, .0011, .0010, .0007, .0009, .0012,
+ .0036, .0013, .0004, .0005, .0003, .0005, .0004, .0126,
+ .1417, .0024, .0003, .0003, .0005, .0005, .0003, .0003,
+ .0001, .0000, .0002, .0016, .0017, .0004, .0001, .0001,
+ .0005, .0029, .0045, .0028, .0010, .0017, .0013, .0014,
+ .0023, .0031, .0061, .0116, .0101, .0056, .0039, .0032,
+ .0027, .0031, .0025, .0026, .0027, .0027, .0025, .0021,
+ .0022, .0018, .0017, .0018, .0018, .0021, .0024, .0030,
+ .0044, .0093, .0172, .0163, .0078, .0042, .0044, .0042,
+ .0036, .0042, .0066, .0185, .0264, .0124, .0081, .0076,
+ .0085, .0096, .0122, .0292, .0976, .0936, .0333, .0238,
+ .0298, .0442, .0669, .1526, .4227, .2563, .0653, .0414,
+ .0578, .2646, .7112, .4411, .0894, .0305, .0131, .0081,
+ .0060, .0059, .0070, .0112, .0193, .0331, .0553, .1062,
+ .2462, .2458, .1162, .0691, .1216, .1248, .1605, .1959,
+ .1637, .1168, .0928, .0797, .0730, .0625, .0716, .0692,
+ .0699, .0721, .0593, .0474, .0512, .0388, .0287, .0282,
+ .0423, .0284, .0276, .0314, .0321, .0255, .0155, .0168,
+ .0152, .0173, .0183, .0163, .0163, .0211, .0168, .0132,
+ .0099, .0096, .0092, .0160, .0189, .0195, .0168, .0153,
+ .0145, .0112, .0095, .0074, .0062, .0047, .0040, .0040,
+ .0030, .0033, .0025, .0030, .0030, .0034, .0036, .0042,
+ .0041, .0050, .0054, .0060, .0054, .0064, .0054, .0049,
+ .0044, .0039, .0037, .0041, .0039, .0040, .0046, .0053,
+ .0049, .0046, .0042, .0035, .0032, .0026, .0024, .0023,
+ .0024, .0023, .0026, .0030, .0031, .0037, .0037, .0037,
+ .0038, .0034, .0031, .0027, .0025, .0021, .0019, .0016,
+ .0015, .0015, .0015, .0017, .0019, .0025, .0029, .0034,
+ .0041, .0043, .0046, .0048, .0047, .0050, .0050, .0056,
+ .0058, .0063, .0068, .0078, .0081
+ };
+
+ /* WV2 Blue of wv2_spectral_response */
+ static const float sr3[301] = {
+ .0008, .0004, .0003, .0002, .0003, .0001, .0002, .0003,
+ .0004, .0005, .0004, .0005, .0004, .0003, .0005, .0006,
+ .0007, .0005, .0006, .0007, .0028, .0024, .0017, .0010,
+ .0026, .0062, .0135, .0275, .0412, .0515, .0701, .1333,
+ .3374, .9579, 2.2771, 5.4329, 19.7821, 81.8229, 245.2000, 503.3090,
+ 700.9700, 757.6050, 778.2550, 788.6260, 800.0000, 801.7370, 809.8590, 821.0700,
+ 826.0450, 830.9250, 842.2620, 862.7060, 878.4820, 876.9430, 878.2670, 887.6130,
+ 907.5760, 930.5590, 950.1920, 976.8010, 1000.0000, 978.9400, 855.7790, 593.8730,
+ 297.6290, 125.6610, 50.3684, 18.1990, 5.7341, 2.9735, 1.6560, .9803,
+ .6049, .3915, .2592, .1681, .1089, .0763, .0514, .0520,
+ .0667, .0623, .0607, .0594, .0626, .0549, .0587, .0488,
+ .0494, .0415, .0310, .0297, .0174, .0175, .0143, .0109,
+ .0128, .0092, .0086, .0092, .0081, .0085, .0090, .0076,
+ .0081, .0091, .0074, .0072, .0080, .0061, .0055, .0061,
+ .0042, .0035, .0041, .0038, .0028, .0038, .0038, .0032,
+ .0042, .0054, .0057, .0057, .0100, .0162, .0175, .0215,
+ .0359, .0457, .0343, .0239, .0243, .0255, .0195, .0134,
+ .0126, .0141, .0120, .0086, .0076, .0088, .0101, .0090,
+ .0070, .0081, .0109, .0134, .0124, .0120, .0149, .0224,
+ .0310, .0326, .0310, .0340, .0454, .0611, .0653, .0523,
+ .0415, .0420, .0510, .0638, .0645, .0492, .0354, .0300,
+ .0320, .0400, .0444, .0393, .0299, .0248, .0245, .0294,
+ .0405, .0507, .0515, .0447, .0595, .0543, .0609, .0773,
+ .0848, .0927, .0950, .0805, .0570, .0509, .0510, .0429,
+ .0566, .0641, .0635, .0645, .0686, .0662, .0780, .0785,
+ .0748, .0557, .0449, .0383, .0324, .0264, .0202, .0219,
+ .0214, .0236, .0270, .0351, .0351, .0308, .0297, .0280,
+ .0215, .0221, .0192, .0175, .0185, .0174, .0181, .0187,
+ .0178, .0187, .0184, .0172, .0158, .0142, .0148, .0135,
+ .0130, .0131, .0118, .0109, .0106, .0099, .0088, .0079,
+ .0070, .0061, .0064, .0069, .0074, .0090, .0105, .0120,
+ .0136, .0146, .0152, .0146, .0128, .0114, .0094, .0078,
+ .0063, .0056, .0053, .0053, .0052, .0054, .0053, .0048,
+ .0038, .0032, .0027, .0022, .0020, .0021, .0022, .0024,
+ .0029, .0029, .0028, .0025, .0021, .0019, .0015, .0014,
+ .0014, .0018, .0022, .0027, .0030, .0032, .0030, .0027,
+ .0025, .0021, .0018, .0021, .0027, .0038, .0047, .0056,
+ .0063, .0059, .0051, .0043, .0033
+ };
+
+ /* WV2 Green of wv2_spectral_response */
+ static const float sr4[301] = {
+ .0004, .0003, .0001, .0002, .0002, .0001, .0002, .0002,
+ .0003, .0003, .0002, .0003, .0004, .0002, .0004, .0005,
+ .0004, .0004, .0004, .0005, .0004, .0005, .0005, .0005,
+ .0005, .0004, .0004, .0005, .0003, .0005, .0004, .0004,
+ .0003, .0004, .0005, .0003, .0002, .0003, .0005, .0004,
+ .0006, .0006, .0005, .0005, .0023, .0044, .0085, .0128,
+ .0141, .0159, .0198, .0212, .0226, .0266, .0356, .0435,
+ .0664, .1438, .3963, 1.1357, 3.0919, 11.1042, 40.5198, 133.7880,
+ 351.5100, 606.0390, 723.0070, 760.0260, 779.3890, 788.8110, 806.8500, 828.0350,
+ 840.7560, 842.0390, 844.3050, 846.8570, 850.3350, 859.7230, 863.5160, 869.1430,
+ 882.5710, 900.7200, 924.4690, 942.1680, 962.2850, 976.6010, 985.7260, 994.7640,
+ 1000.0000, 993.0530, 979.1210, 907.7450, 664.0400, 301.4360, 92.9241, 25.2385,
+ 5.5627, 2.4767, 1.1294, .5085, .2229, .1072, .0539, .0257,
+ .0069, .0035, .0017, .0003, .0018, .0017, .0062, .0086,
+ .0152, .0161, .0257, .0325, .0292, .0270, .0241, .0141,
+ .0002, .0001, .0002, .0002, .0003, .0005, .0007, .0008,
+ .0010, .0008, .0006, .0010, .0011, .0006, .0009, .0011,
+ .0012, .0011, .0009, .0008, .0011, .0011, .0010, .0009,
+ .0011, .0009, .0010, .0011, .0011, .0011, .0010, .0013,
+ .0009, .0011, .0008, .0008, .0010, .0012, .0008, .0010,
+ .0011, .0013, .0011, .0010, .0011, .0012, .0014, .0012,
+ .0017, .0035, .0040, .0027, .0014, .0010, .0008, .0007,
+ .0003, .0007, .0008, .0011, .0010, .0026, .0009, .0002,
+ .0000, .0000, .0000, .0000, .0000, .0000, .0000, .0006,
+ .0051, .0042, .0018, .0005, .0003, .0004, .0008, .0003,
+ .0001, .0023, .0086, .0047, .0017, .0002, .0001, .0017,
+ .0013, .0017, .0010, .0002, .0117, .0095, .0112, .0091,
+ .0090, .0085, .0077, .0067, .0077, .0070, .0060, .0055,
+ .0061, .0069, .0062, .0066, .0066, .0058, .0060, .0054,
+ .0054, .0049, .0040, .0036, .0035, .0035, .0029, .0026,
+ .0023, .0021, .0029, .0024, .0022, .0022, .0020, .0018,
+ .0018, .0017, .0015, .0015, .0012, .0014, .0014, .0013,
+ .0012, .0011, .0013, .0013, .0011, .0013, .0014, .0016,
+ .0016, .0020, .0019, .0018, .0019, .0019, .0017, .0016,
+ .0017, .0014, .0013, .0013, .0012, .0013, .0013, .0015,
+ .0017, .0019, .0023, .0030, .0038, .0052, .0072, .0097,
+ .0132, .0170, .0211, .0255, .0300, .0351, .0407, .0474,
+ .0551, .0653, .0811, .1055, .1401
+ };
+
+ /* WV2 Yellow of wv2_spectral_response */
+ static const float sr5[301] = {
+ .0003, .0001, .0001, .0001, .0000, .0000, .0001, .0001,
+ .0001, .0001, .0001, .0001, .0001, .0001, .0001, .0003,
+ .0006, .0211, .0273, .0005, .0000, .0001, .0000, .0001,
+ .0002, .0002, .0001, .0002, .0002, .0003, .0003, .0002,
+ .0003, .0004, .0004, .0004, .0010, .0050, .0032, .0012,
+ .0005, .0003, .0004, .0003, .0007, .0006, .0005, .0005,
+ .0004, .0007, .0007, .0007, .0007, .0007, .0007, .0006,
+ .0007, .0006, .0003, .0004, .0002, .0003, .0002, .0002,
+ .0002, .0002, .0001, .0003, .0001, .0002, .0004, .0003,
+ .0005, .0002, .0002, .0002, .0001, .0004, .0004, .0038,
+ .0070, .0062, .0044, .0049, .0038, .0111, .0267, .0575,
+ .1271, .3445, .8950, 2.2247, 5.8789, 26.5572, 134.6520, 389.2200,
+ 663.5500, 848.1980, 899.8060, 920.0230, 932.6340, 940.1810, 947.0260, 952.4410,
+ 966.4120, 981.4690, 989.7230, 992.7060, 1000.0000, 969.3680, 759.4330, 436.6510,
+ 134.3220, 30.8525, 7.3852, 2.2367, .6906, .2851, .1576, .0963,
+ .0443, .0231, .0129, .0075, .0050, .0033, .0022, .0014,
+ .0008, .0010, .0008, .0007, .0009, .0005, .0008, .0009,
+ .0006, .0009, .0005, .0007, .0010, .0005, .0009, .0008,
+ .0007, .0011, .0009, .0008, .0012, .0011, .0015, .0013,
+ .0012, .0011, .0013, .0013, .0010, .0009, .0011, .0011,
+ .0010, .0008, .0009, .0008, .0008, .0009, .0008, .0008,
+ .0006, .0005, .0005, .0006, .0007, .0002, .0004, .0006,
+ .0003, .0004, .0006, .0006, .0234, .0159, .0189, .0213,
+ .0113, .0140, .0189, .0200, .0194, .0099, .0183, .0115,
+ .0093, .0135, .0106, .0113, .0119, .0076, .0120, .0127,
+ .0171, .0114, .0067, .0086, .0089, .0068, .0044, .0064,
+ .0049, .0058, .0060, .0049, .0019, .0039, .0036, .0029,
+ .0033, .0030, .0031, .0047, .0039, .0043, .0039, .0038,
+ .0033, .0028, .0025, .0021, .0020, .0017, .0018, .0018,
+ .0010, .0014, .0013, .0013, .0007, .0008, .0009, .0009,
+ .0008, .0008, .0009, .0009, .0006, .0010, .0009, .0007,
+ .0009, .0007, .0007, .0008, .0009, .0008, .0010, .0014,
+ .0015, .0016, .0018, .0018, .0015, .0014, .0012, .0010,
+ .0005, .0004, .0005, .0004, .0004, .0005, .0004, .0003,
+ .0003, .0004, .0004, .0004, .0003, .0004, .0003, .0003,
+ .0002, .0002, .0002, .0001, .0001, .0001, .0001, .0001,
+ .0001, .0001, .0001, .0001, .0001, .0002, .0002, .0003,
+ .0003, .0004, .0005, .0005, .0006
+ };
+
+ /* WV2 Red of wv2_spectral_response */
+ static const float sr6[301] = {
+ .0003, .0001, .0001, .0000, .0001, .0000, .0001, .0001,
+ .0002, .0001, .0001, .0002, .0002, .0001, .0002, .0003,
+ .0004, .0002, .0003, .0004, .0003, .0003, .0003, .0004,
+ .0004, .0004, .0006, .0006, .0003, .0003, .0003, .0003,
+ .0003, .0003, .0002, .0002, .0003, .0002, .0004, .0002,
+ .0003, .0003, .0003, .0002, .0019, .0034, .0008, .0006,
+ .0012, .0024, .0010, .0009, .0006, .0013, .0013, .0014,
+ .0029, .0019, .0029, .0022, .0015, .0023, .0008, .0002,
+ .0003, .0002, .0002, .0002, .0002, .0002, .0001, .0000,
+ .0002, .0000, .0000, .0000, .0001, .0001, .0001, .0001,
+ .0001, .0000, .0001, .0002, .0001, .0001, .0001, .0001,
+ .0002, .0001, .0001, .0003, .0002, .0004, .0005, .0006,
+ .0008, .0009, .0013, .0091, .0126, .0268, .0410, .0704,
+ .1229, .2687, .6281, 1.6492, 4.8674, 22.7608, 95.5659, 294.3530,
+ 596.0710, 822.2890, 872.7760, 885.3350, 927.9280, 955.6950, 965.0420, 967.0950,
+ 965.5880, 957.7760, 955.5000, 952.8310, 955.8010, 965.2530, 970.3580, 976.4930,
+ 987.5260, 996.5750, 999.0850, 992.1070, 983.6940, 978.3110, 885.2800, 632.5950,
+ 291.8230, 83.2547, 20.4412, 5.6355, 1.9137, .8432, .4036, .2037,
+ .1018, .0569, .0272, .0162, .0142, .0168, .0133, .0144,
+ .0132, .0125, .0106, .0061, .0031, .0034, .0015, .0014,
+ .0012, .0004, .0006, .0012, .0030, .0050, .0095, .0073,
+ .0067, .0089, .0069, .0049, .0055, .0022, .0015, .0005,
+ .0022, .0007, .0006, .0009, .0138, .0140, .0134, .0163,
+ .0106, .0124, .0108, .0077, .0089, .0090, .0079, .0043,
+ .0108, .0045, .0070, .0065, .0062, .0064, .0084, .0069,
+ .0027, .0065, .0063, .0065, .0051, .0071, .0092, .0108,
+ .0067, .0079, .0041, .0043, .0086, .0062, .0072, .0061,
+ .0039, .0055, .0048, .0050, .0057, .0051, .0042, .0044,
+ .0040, .0035, .0035, .0040, .0027, .0031, .0032, .0024,
+ .0031, .0027, .0021, .0017, .0017, .0016, .0013, .0011,
+ .0012, .0010, .0013, .0010, .0011, .0009, .0008, .0007,
+ .0007, .0007, .0008, .0007, .0007, .0006, .0006, .0006,
+ .0005, .0005, .0005, .0006, .0005, .0006, .0005, .0005,
+ .0002, .0006, .0005, .0004, .0004, .0004, .0003, .0003,
+ .0004, .0005, .0005, .0006, .0006, .0008, .0007, .0006,
+ .0005, .0003, .0003, .0002, .0001, .0002, .0001, .0001,
+ .0002, .0002, .0002, .0002, .0002, .0002, .0002, .0002,
+ .0001, .0001, .0001, .0001, .0001
+ };
+
+ /* WV2 RedEdge of wv2_spectral_response */
+ static const float sr7[301] = {
+ .0001, .0002, .0003, .0002, .0002, .0001, .0001, .0002,
+ .0002, .0002, .0002, .0002, .0003, .0003, .0003, .0004,
+ .0008, .0023, .0013, .0013, .0020, .0011, .0016, .0010,
+ .0010, .0011, .0009, .0020, .0011, .0009, .0007, .0010,
+ .0097, .0509, .0025, .0003, .0008, .0239, .0026, .0002,
+ .0002, .0003, .0001, .0002, .0002, .0002, .0002, .0001,
+ .0001, .0005, .0008, .0017, .0009, .0058, .0138, .0079,
+ .0039, .0057, .0153, .0099, .0012, .0015, .0042, .0014,
+ .0002, .0002, .0001, .0001, .0002, .0001, .0001, .0001,
+ .0002, .0001, .0002, .0002, .0001, .0001, .0001, .0000,
+ .0000, .0001, .0002, .0001, .0004, .0020, .0021, .0008,
+ .0009, .0020, .0031, .0031, .0045, .0067, .0061, .0050,
+ .0071, .0113, .0138, .0161, .0240, .0344, .0375, .0398,
+ .0538, .0794, .0884, .0759, .0904, .1744, .1848, .0517,
+ .0088, .0045, .0027, .0015, .0011, .0007, .0014, .0028,
+ .0050, .0064, .0081, .0106, .0116, .0115, .0118, .0105,
+ .0113, .0084, .0082, .0089, .0097, .0153, .0328, .0787,
+ .2073, .7591, 3.1275, 18.8368, 99.6101, 346.8350, 622.9080, 853.7850,
+ 952.7920, 978.4220, 987.6340, 989.0260, 993.9010, 999.8580, 999.2800, 989.4170,
+ 986.8130, 980.9620, 977.1160, 944.1910, 846.3990, 615.8370, 359.7630, 138.8130,
+ 30.5442, 7.0917, 2.1585, .7300, .2699, .1188, .0553, .0240,
+ .0096, .0069, .0053, .0033, .0043, .0040, .0051, .0077,
+ .0083, .0094, .0064, .0050, .0001, .0003, .0003, .0003,
+ .0002, .0003, .0002, .0002, .0002, .0001, .0001, .0003,
+ .0002, .0002, .0002, .0001, .0003, .0003, .0002, .0004,
+ .0004, .0002, .0008, .0008, .0019, .0039, .0088, .0112,
+ .0114, .0077, .0047, .0043, .0104, .0084, .0076, .0074,
+ .0089, .0118, .0153, .0190, .0174, .0171, .0183, .0187,
+ .0180, .0190, .0157, .0145, .0127, .0102, .0081, .0062,
+ .0045, .0039, .0032, .0025, .0020, .0016, .0015, .0011,
+ .0010, .0010, .0008, .0007, .0008, .0006, .0007, .0005,
+ .0006, .0006, .0007, .0006, .0007, .0004, .0004, .0006,
+ .0004, .0005, .0005, .0005, .0005, .0004, .0004, .0004,
+ .0004, .0004, .0004, .0004, .0003, .0003, .0002, .0002,
+ .0002, .0002, .0002, .0002, .0002, .0001, .0001, .0001,
+ .0001, .0002, .0002, .0001, .0002, .0002, .0002, .0002,
+ .0002, .0001, .0001, .0001, .0001, .0001, .0001, .0000,
+ .0001, .0001, .0001, .0003, .0005
+ };
+
+ /* WV2 NIR1 of wv2_spectral_response */
+ static const float sr8[301] = {
+ .0003, .0000, .0000, .0001, .0001, .0000, .0000, .0001,
+ .0001, .0000, .0000, .0000, .0000, .0000, .0000, .0000,
+ .0001, .0000, .0000, .0001, .0002, .0000, .0001, .0001,
+ .0001, .0002, .0001, .0001, .0001, .0001, .0001, .0001,
+ .0001, .0002, .0001, .0001, .0016, .0061, .0004, .0001,
+ .0004, .0003, .0003, .0003, .0003, .0004, .0005, .0006,
+ .0004, .0004, .0007, .0014, .0006, .0009, .0016, .0006,
+ .0005, .0006, .0003, .0002, .0003, .0001, .0002, .0004,
+ .0002, .0003, .0003, .0004, .0003, .0004, .0002, .0001,
+ .0001, .0000, .0000, .0000, .0000, .0000, .0001, .0001,
+ .0000, .0001, .0001, .0002, .0001, .0000, .0001, .0001,
+ .0000, .0000, .0001, .0000, .0000, .0000, .0000, .0001,
+ .0001, .0000, .0000, .0000, .0002, .0000, .0000, .0002,
+ .0000, .0001, .0000, .0001, .0000, .0000, .0000, .0001,
+ .0000, .0000, .0000, .0001, .0000, .0001, .0001, .0004,
+ .0005, .0005, .0006, .0005, .0007, .0007, .0010, .0008,
+ .0011, .0008, .0009, .0010, .0010, .0009, .0009, .0012,
+ .0013, .0010, .0009, .0021, .0017, .0035, .0048, .0064,
+ .0052, .0043, .0039, .0044, .0050, .0060, .0066, .0111,
+ .0162, .0284, .0440, .0705, .1061, .1653, .2562, .4123,
+ .7130, 1.3994, 2.8857, 5.9533, 12.6868, 27.6938, 58.8599, 123.1170,
+ 260.2040, 506.7740, 759.9670, 940.5800, 995.8050, 997.6220, 988.9070, 983.0910,
+ 972.9340, 958.3120, 941.1390, 931.9070, 919.3820, 909.0800, 897.6000, 882.1200,
+ 871.1910, 863.0540, 844.2840, 836.4960, 838.0360, 841.1890, 835.6570, 833.8190,
+ 842.5480, 830.7770, 818.6040, 816.8370, 806.7110, 810.7600, 794.1610, 779.8840,
+ 767.3130, 749.6020, 739.2710, 738.7140, 734.1450, 711.8330, 697.1410, 680.4620,
+ 658.6350, 649.7810, 632.4710, 619.9080, 609.1200, 598.9920, 590.9140, 566.1070,
+ 507.1120, 402.7990, 275.1740, 157.6670, 73.8047, 32.7870, 13.8147, 5.3908,
+ 2.6246, 1.8086, 1.3063, 1.0328, .9172, .8912, .7983, .7457,
+ .7272, .7833, .7011, .6553, .6028, .5579, .2812, .2742,
+ .0044, .0032, .0029, .0022, .0020, .0015, .0011, .0010,
+ .0011, .0009, .0009, .0007, .0007, .0007, .0007, .0007,
+ .0004, .0006, .0007, .0006, .0003, .0005, .0005, .0005,
+ .0003, .0004, .0004, .0003, .0002, .0005, .0003, .0003,
+ .0003, .0004, .0003, .0003, .0002, .0002, .0002, .0002,
+ .0001, .0002, .0002, .0001, .0001, .0001, .0001, .0001,
+ .0001, .0001, .0001, .0001, .0001, .0001, .0001, .0001,
+ .0001, .0001, .0001, .0000, .0001
+ };
+
+ /* WV2 NIR2 of wv2_spectral_response */
+ static const float sr9[301] = {
+ .0003, .0070, .0199, .0874, .0748, .0052, .0005, .0006,
+ .0003, .0001, .0002, .0003, .0001, .0002, .0002, .0002,
+ .0002, .0002, .0002, .0002, .0002, .0001, .0002, .0002,
+ .0004, .0002, .0002, .0002, .0001, .0002, .0002, .0002,
+ .0001, .0002, .0001, .0008, .0012, .0001, .0002, .0019,
+ .0012, .0008, .0006, .0002, .0000, .0001, .0004, .0002,
+ .0000, .0009, .0037, .0012, .0002, .0001, .0007, .0009,
+ .0000, .0003, .0001, .0000, .0007, .0008, .0000, .0001,
+ .0002, .0004, .0008, .0009, .0004, .0002, .0002, .0027,
+ .0088, .0007, .0004, .0040, .0047, .0001, .0003, .0021,
+ .0010, .0001, .0002, .0001, .0001, .0000, .0000, .0000,
+ .0000, .0000, .0000, .0001, .0013, .0001, .0003, .0002,
+ .0002, .0005, .0006, .0002, .0006, .0005, .0005, .0006,
+ .0012, .0005, .0003, .0002, .0005, .0006, .0006, .0011,
+ .0011, .0003, .0004, .0005, .0001, .0006, .0007, .0008,
+ .0012, .0019, .0024, .0010, .0005, .0015, .0005, .0000,
+ .0003, .0002, .0003, .0005, .0008, .0002, .0002, .0005,
+ .0008, .0002, .0004, .0003, .0001, .0002, .0001, .0004,
+ .0005, .0007, .0007, .0009, .0009, .0006, .0010, .0009,
+ .0007, .0007, .0009, .0011, .0006, .0009, .0010, .0010,
+ .0012, .0009, .0008, .0005, .0008, .0007, .0009, .0006,
+ .0005, .0011, .0010, .0005, .0006, .0009, .0009, .0008,
+ .0012, .1141, .4534, .5047, .7796, 1.0461, .9763, 1.1133,
+ 1.0687, 1.0909, 1.0955, 1.1311, 1.0945, 1.0891, 1.0416, 1.1403,
+ 1.1270, 1.1706, 1.1509, 1.2061, 1.3547, 1.3002, 1.4918, 2.2310,
+ 4.3284, 10.5836, 30.5957, 107.8530, 313.7460, 571.8840, 789.2690, 951.5410,
+ 987.1440, 991.6770, 993.3630, 999.6910, 996.6910, 983.3270, 970.8560, 952.3600,
+ 933.0200, 922.3760, 910.9220, 899.7670, 892.1120, 878.5650, 864.6450, 850.5250,
+ 841.2980, 827.2570, 808.1800, 794.0050, 774.3770, 760.2820, 746.9060, 725.8480,
+ 708.9670, 689.1840, 661.7200, 640.6300, 620.9290, 596.4570, 574.6850, 551.8710,
+ 530.9050, 511.6300, 493.6670, 474.1180, 454.3110, 437.7660, 421.4490, 406.0470,
+ 389.7410, 376.6220, 363.5170, 349.8550, 336.6970, 326.9620, 317.0800, 305.8060,
+ 294.9200, 282.2030, 271.4390, 260.8070, 250.9120, 243.3730, 235.7340, 227.6580,
+ 217.5590, 208.7220, 198.5760, 188.1520, 178.7050, 168.4410, 159.0320, 148.1250,
+ 137.7700, 124.5570, 109.6120, 91.7406, 71.5068, 50.3125, 32.8064, 19.8817,
+ 9.7957, 4.7076, 2.1849, 1.0292, .5237, .2985, .2000, .1460,
+ .1143, .1020, .0801, .0766, .0801, .0645, .0701, .0646,
+ .0538, .0298, .0300, .0277, .0007
+ };
+
+ static const float wli[9] = {0.350, 0.350, 0.350, 0.350, 0.350, 0.350, 0.350, 0.350, 0.350};
+ static const float wls[9] = {1.100, 1.100, 1.100, 1.100, 1.100, 1.100, 1.100, 1.100, 1.100};
+
+ 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 < 301; i++) ffu.s[40+i] = sr1[i];
+ break;
+ case 2: for(i = 0; i < 301; i++) ffu.s[40+i] = sr2[i];
+ break;
+ case 3: for(i = 0; i < 301; i++) ffu.s[40+i] = sr3[i];
+ break;
+ case 4: for(i = 0; i < 301; i++) ffu.s[40+i] = sr4[i];
+ break;
+ case 5: for(i = 0; i < 301; i++) ffu.s[40+i] = sr5[i];
+ break;
+ case 6: for(i = 0; i < 301; i++) ffu.s[40+i] = sr6[i];
+ break;
+ case 7: for(i = 0; i < 301; i++) ffu.s[40+i] = sr7[i];
+ break;
+ case 8: for(i = 0; i < 301; i++) ffu.s[40+i] = sr8[i];
+ break;
+ case 9: for(i = 0; i < 301; i++) ffu.s[40+i] = sr9[i];
+ break;
+ }
+}
+
+void IWave::quickbird2(int iwa)
+{
+
+ /* QuickBird Pan of quickbird2 */
+ static const float sr1[65] = {
+ 300.0000, 312.5000, 325.0000, 337.5000, 350.0000, 362.5000, 375.0000, 387.5000,
+ 400.0000, 412.5000, 425.0000, 437.5000, 450.0000, 462.5000, 475.0000, 487.5000,
+ 500.0000, 512.5000, 525.0000, 537.5000, 550.0000, 562.5000, 575.0000, 587.5000,
+ 600.0000, 612.5000, 625.0000, 637.5000, 650.0000, 662.5000, 675.0000, 687.5000,
+ 700.0000, 712.5000, 725.0000, 737.5000, 750.0000, 762.5000, 775.0000, 787.5000,
+ 800.0000, 812.5000, 825.0000, 837.5000, 850.0000, 862.5000, 875.0000, 887.5000,
+ 900.0000, 912.5000, 925.0000, 937.5000, 950.0000, 962.5000, 975.0000, 987.5000,
+ 1000.0000, 1012.5000, 1025.0000, 1037.5000, 1050.0000, 1062.5000, 1075.0000, 1087.5000,
+ 1100.0000
+ };
+
+ /* QuickBird Blue of quickbird2 */
+ static const float sr2[65] = {
+ .0000, .0000, .0000, .0000, .0014, .0010, .0020, .0138,
+ .0362, .0758, .1219, .1789, .2198, .2854, .3364, .3579,
+ .3781, .4276, .4982, .5925, .7051, .8105, .8911, .9426,
+ .9598, .9922, .9876, .9573, .9183, .8831, .8893, .8848,
+ .8888, .8677, .8625, .8897, .9295, .9130, .9039, .8761,
+ .8457, .8582, .8339, .8526, .8394, .7850, .7342, .6788,
+ .6186, .5832, .4969, .4305, .3738, .3035, .2567, .2162,
+ .1776, .1421, .1085, .0773, .0548, .0050, .0000, .0000,
+ .0000
+ };
+
+ /* QuickBird Green of quickbird2 */
+ static const float sr3[65] = {
+ .0000, .0000, .0010, .0037, .0053, .0030, .0013, .0023,
+ .0025, .0053, .0284, .2164, .6299, .8176, .9178, .9801,
+ .9179, .4787, .1592, .0663, .0293, .0126, .0126, .0098,
+ .0098, .0091, .0036, .0025, .0028, .0030, .0089, .0256,
+ .0083, .0086, .0091, .0028, .0031, .0034, .0036, .0033,
+ .0030, .0035, .0040, .0042, .0048, .0057, .0052, .0052,
+ .0068, .0101, .0093, .0056, .0035, .0019, .0014, .0012,
+ .0011, .0012, .0015, .0015, .0012, .0000, .0000, .0000,
+ .0000
+ };
+
+ /* QuickBird Red of quickbird2 */
+ static const float sr4[65] = {
+ .0000, .0000, .0000, .0000, .0031, .0023, .0014, .0012,
+ .0012, .0013, .0023, .0046, .0178, .0356, .0982, .2739,
+ .5277, .8005, .8705, .9640, .9934, .9733, .9652, .7230,
+ .3124, .1139, .0365, .0268, .0242, .0140, .0132, .0076,
+ .0032, .0035, .0076, .0047, .0022, .0029, .0034, .0041,
+ .0038, .0031, .0031, .0035, .0051, .0084, .0090, .0078,
+ .0076, .0081, .0067, .0043, .0027, .0016, .0013, .0010,
+ .0008, .0009, .0013, .0010, .0009, .0000, .0000, .0000,
+ .0000
+ };
+
+ /* QuickBird NIR of quickbird2 */
+ static const float sr5[65] = {
+ .0000, .0000, .0000, .0000, .0037, .0018, .0011, .0009,
+ .0007, .0013, .0010, .0024, .0029, .0032, .0032, .0023,
+ .0031, .0036, .0053, .0065, .0078, .0110, .0177, .0399,
+ .0872, .2675, .6620, .8976, .9798, .9961, .8726, .5119,
+ .1651, .0417, .0201, .0205, .0095, .0048, .0045, .0063,
+ .0045, .0026, .0025, .0025, .0025, .0024, .0022, .0019,
+ .0021, .0028, .0015, .0010, .0010, .0008, .0007, .0006,
+ .0008, .0007, .0008, .0009, .0008, .0000, .0000, .0000,
+ .0000
+ };
+
+ static const float wli[5] = {0.001, 0.001, 0.001, 0.001, 0.001};
+ static const float wls[5] = {0.161, 0.161, 0.161, 0.161, 0.161};
+
+ 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 < 65; i++) ffu.s[-99+i] = sr1[i];
+ break;
+ case 2: for(i = 0; i < 65; i++) ffu.s[-99+i] = sr2[i];
+ break;
+ case 3: for(i = 0; i < 65; i++) ffu.s[-99+i] = sr3[i];
+ break;
+ case 4: for(i = 0; i < 65; i++) ffu.s[-99+i] = sr4[i];
+ break;
+ case 5: for(i = 0; i < 65; i++) ffu.s[-99+i] = sr5[i];
+ break;
+ }
+}
+
+void IWave::landsat_8(int iwa)
+{
+
+ /* Coastal Aerosol of landsat_8 */
+ static const float sr1[13] = {
+ .0001, .0025, .0248, .3860, .9087, .9806, .9867, .9966,
+ .9828, .8257, .2264, .0256, .0024
+ };
+
+ /* Blue of landsat_8 */
+ static const float sr2[37] = {
+ .0000, .0002, .0005, .0016, .0069, .0429, .2714, .7907,
+ .9030, .9047, .8897, .8792, .8797, .8898, .8485, .8363,
+ .8685, .9115, .9317, .9549, .9564, .9838, .9895, .9681,
+ .9887, .9611, .9661, .9821, .9631, .9982, .8449, .1195,
+ .0053, .0013, .0005, .0001, .0000
+ };
+
+ /* Green of landsat_8 */
+ static const float sr3[35] = {
+ .0000, .0003, .0009, .0022, .0049, .0133, .0415, .1676,
+ .5459, .8963, .9542, .9631, .9525, .9779, .9809, .9961,
+ .9838, .9612, .9479, .9721, .9534, .9743, .9810, .9733,
+ .9758, .9744, .9678, .9717, .9837, .9603, .8093, .4353,
+ .0878, .0100, .0010
+ };
+
+ /* Red of landsat_8 */
+ static const float sr4[23] = {
+ .0003, .0027, .0145, .1077, .5268, .9267, .9474, .9689,
+ .9836, .9783, .9556, .9550, 1.0000, .9831, .9730, .9945,
+ .9640, .9690, .9499, .4629, .0460, .0053, .0006
+ };
+
+ /* Pan of landsat_8 */
+ static const float sr5[82] = {
+ .0002, .0013, .0038, .0123, .0427, .1601, .4725, .7454,
+ .8319, .8553, .8596, .8577, .8585, .8583, .8502, .8582,
+ .8615, .8577, .8792, .8917, .9063, .9129, .9029, .9207,
+ .9130, .8857, .8794, .8742, .8754, .8917, .8741, .8869,
+ .9035, .9110, .9132, .9202, .9244, .9298, .9489, .9405,
+ .9457, .9394, .9467, .9340, .9408, .9580, .9682, .9665,
+ .9572, .9477, .9525, .9575, .9642, .9674, .9770, .9760,
+ .9696, .9728, .9658, .9667, .9721, .9793, .9711, .9534,
+ .9639, .9671, .9706, .9800, .9883, .9918, 1.0000, .9985,
+ .9926, .9858, .9139, .5244, .1673, .0462, .0152, .0067,
+ .0032, .0012
+ };
+
+ /* Nir of landsat_8 */
+ static const float sr6[27] = {
+ .0000, .0002, .0005, .0012, .0032, .0090, .0283, .1149,
+ .4035, .8177, .9868, .9884, .9898, .9740, .9512, .9523,
+ .9401, .9613, .9366, .7120, .2888, .0793, .0207, .0062,
+ .0019, .0006, .0001
+ };
+
+ /* Cirrus of landsat_8 */
+ static const float sr7[25] = {
+ .0001, .0004, .0009, .0016, .0030, .0063, .0170, .0560,
+ .1828, .5269, .8624, .9465, .9387, .9933, .9832, .9638,
+ .8727, .5295, .1910, .0538, .0162, .0056, .0018, .0007,
+ .0001
+ };
+
+ /* SWIR1 of landsat_8 */
+ static const float sr8[73] = {
+ .0001, .0003, .0006, .0010, .0016, .0023, .0033, .0046,
+ .0064, .0090, .0124, .0176, .0259, .0378, .0554, .0826,
+ .1202, .1755, .2529, .3528, .4736, .6052, .7213, .8047,
+ .8734, .9035, .9187, .9270, .9251, .9241, .9214, .9237,
+ .9346, .9451, .9464, .9489, .9513, .9548, .9615, .9591,
+ .9609, .9611, .9679, .9722, .9791, .9813, .9959, .9999,
+ .9966, .9826, .9551, .8983, .7965, .6654, .5099, .3684,
+ .2513, .1657, .1067, .0694, .0450, .0291, .0187, .0124,
+ .0082, .0054, .0036, .0024, .0015, .0009, .0005, .0003,
+ .0000
+ };
+
+ /* SWIR2 of landsat_8 */
+ static const float sr9[125] = {
+ .0000, .0002, .0003, .0005, .0007, .0010, .0014, .0019,
+ .0024, .0032, .0041, .0054, .0071, .0094, .0123, .0159,
+ .0210, .0274, .0354, .0482, .0633, .0841, .1128, .1534,
+ .2028, .2673, .3425, .4315, .5225, .6134, .6897, .7665,
+ .8137, .8500, .8836, .8907, .9097, .9221, .9322, .9420,
+ .9431, .9464, .9497, .9510, .9531, .9509, .9475, .9494,
+ .9533, .9494, .9515, .9437, .9434, .9426, .9381, .9468,
+ .9474, .9473, .9341, .9390, .9347, .9264, .9369, .9295,
+ .9358, .9364, .9566, .9543, .9644, .9630, .9637, .9600,
+ .9578, .9502, .9588, .9576, .9520, .9607, .9493, .9619,
+ .9643, .9694, .9809, .9844, .9915, .9954, .9927, .9996,
+ .9944, .9860, .9891, .9765, .9742, .9757, .9737, .9584,
+ .9551, .9419, .9071, .8695, .7849, .6751, .5526, .4283,
+ .3157, .2284, .1617, .1143, .0803, .0567, .0404, .0294,
+ .0213, .0156, .0114, .0085, .0063, .0047, .0034, .0025,
+ .0018, .0012, .0008, .0005, .0002
+ };
+
+ static const float wli[9] = {0.427, 0.436, 0.513, 0.626, 0.488, 0.830, 1.341, 1.516, 2.038};
+ static const float wls[9] = {0.459, 0.527, 0.600, 0.682, 0.692, 0.896, 1.402, 1.696, 2.350};
+
+ 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 < 13; i++) ffu.s[70+i] = sr1[i];
+ break;
+ case 2: for(i = 0; i < 37; i++) ffu.s[74+i] = sr2[i];
+ break;
+ case 3: for(i = 0; i < 35; i++) ffu.s[105+i] = sr3[i];
+ break;
+ case 4: for(i = 0; i < 23; i++) ffu.s[150+i] = sr4[i];
+ break;
+ case 5: for(i = 0; i < 82; i++) ffu.s[95+i] = sr5[i];
+ break;
+ case 6: for(i = 0; i < 27; i++) ffu.s[232+i] = sr6[i];
+ break;
+ case 7: for(i = 0; i < 25; i++) ffu.s[436+i] = sr7[i];
+ break;
+ case 8: for(i = 0; i < 73; i++) ffu.s[506+i] = sr8[i];
+ break;
+ case 9: for(i = 0; i < 125; i++) ffu.s[715+i] = sr9[i];
+ break;
+ }
+}
+
+
+
float IWave::equivwl() const
{
float seb = 0;
@@ -2529,6 +3167,9 @@
else if(iwave <= 92) rapideye(iwave - 87);
else if(iwave <= 96) vgt1_spot4(iwave - 92);
else if(iwave <= 100) vgt2_spot5(iwave - 96);
+ else if(iwave <= 109) worldview2(iwave - 100);
+ else if(iwave <= 114) quickbird2(iwave - 109);
+ else if(iwave <= 115) landsat_8(iwave - 114);
else G_warning(_("Unsupported iwave value: %d"), iwave);
}
@@ -2545,7 +3186,8 @@
/* --- spectral condition ---- */
void IWave::print()
{
- static const string nsat[102] = {
+/* The compiler will deduce the dimension from the initializer list. */
+ static const string nsat[] = {
string(" constant "), string(" user s "),
string(" meteosat "), string(" goes east "), string(" goes west "),
string(" avhrr 1 (noaa6) "), string(" avhrr 2 (noaa6) "),
@@ -2588,7 +3230,15 @@
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 "),
+ string(" vgt2 spot5 MIR "), string(" worldview 2 pan "), string(" worldview 2 coastal blue"),
+ string(" worldview 2 blue "), string(" worldview 2 blue "), string(" worldview 2 green"),
+ string(" worldview 2 yellow"), string(" worldview 2 red"), string(" worldview 2 red edge"),
+ string(" worldview 2 nir1"), string(" worldview 2 nir2"), string(" quickbird 2 pan"),
+ string(" quickbird 2 blue"), string(" quickbird 2 green"), string(" quickbird 2 red"),
+ string(" quickbird 2 nir"), string(" Landsat 8 Coastal Aerosol"), string(" Landsat 8 Blue"),
+ string(" Landsat 8 Green"),string(" Landsat 8 Red"), string(" Landsat 8 Panchromatic"),
+ string(" Landsat 8 NIR"),string(" Landsat 8 Cirrus"),string(" Landsat 8 SWIR1"),
+ string(" Landsat 8 SWIR2")
};
Modified: grass/trunk/imagery/i.atcorr/Iwave.h
===================================================================
--- grass/trunk/imagery/i.atcorr/Iwave.h 2014-05-30 13:40:31 UTC (rev 60609)
+++ grass/trunk/imagery/i.atcorr/Iwave.h 2014-05-30 15:14:49 UTC (rev 60610)
@@ -122,6 +122,30 @@
c 98 B2 " ( 0.580-0.780 ) c
c 99 B3 " ( 0.700-1.000 ) c
c 100 MIR " ( 1.450-1.800 ) c
+c 101 Pan band of Worldview 2 ( 0.450-0.800 ) c
+c 102 Coastal " ( 0.396-0.458 ) c
+c 103 Blue " ( 0.442-0.515 ) c
+c 104 Green " ( 0.506-0.586 ) c
+c 105 Yellow " ( 0.584-0.632 ) c
+c 106 Red " ( 0.624-0.694 ) c
+c 107 RedEdge " ( 0.699-0.749 ) c
+c 108 NIR1 " ( 0.765-0.901 ) c
+c 109 NIR2 " ( 0.856-1.043 ) c
+c 110 Pan band of QuickBird 2 ( 0.405-1.053 ) c
+c 111 Blue " ( 0.430-0.545 ) c
+c 112 Green " ( 0.466-0.620 ) c
+c 113 Red " ( 0.590-0.710 ) c
+c 114 NIR " ( 0.715-0.918 ) c
+c 115 Coastal Aerosol of LS8 ( 0.427-0.459 ) c
+c 116 Blue " ( 0.436-0.527 ) c
+c 117 Green " ( 0.512-0.610 ) c
+c 118 Red " ( 0.625-0.691 ) c
+c 119 Pan " ( 0.488-0.692 ) c
+c 120 NIR " ( 0.829-0.900 ) c
+c 121 Cirrus " ( 1.340-1.409 ) c
+c 122 SWIR1 " ( 1.515-1.697 ) c
+c 123 SWIR2 " ( 2.037-2.037 ) c
+c c
c note: wl has to be in micrometer c
c**********************************************************************/
@@ -163,8 +187,10 @@
void rapideye(int iwa);
void vgt1_spot4(int iwa);
void vgt2_spot5(int iwa);
+ void worldview2(int iwa);
+ void quickbird2(int iwa);
+ void landsat_8(int iwa);
-
public:
/* To compute the equivalent wavelength needed for the calculation of the
downward radiation field used in the computation of the non lambertian
Modified: grass/trunk/imagery/i.atcorr/create_iwave.py
===================================================================
--- grass/trunk/imagery/i.atcorr/create_iwave.py 2014-05-30 13:40:31 UTC (rev 60609)
+++ grass/trunk/imagery/i.atcorr/create_iwave.py 2014-05-30 15:14:49 UTC (rev 60610)
@@ -87,6 +87,7 @@
w = values[:,1] >= 0
response = values[w]
+
# interpolating
f = interpolate.interp1d(response[:,0],response[:,1])
Modified: grass/trunk/imagery/i.atcorr/i.atcorr.html
===================================================================
--- grass/trunk/imagery/i.atcorr/i.atcorr.html 2014-05-30 13:40:31 UTC (rev 60609)
+++ grass/trunk/imagery/i.atcorr/i.atcorr.html 2014-05-30 15:14:49 UTC (rev 60610)
@@ -161,6 +161,25 @@
<td><b>VGT2 (SPOT5)</b></td>
<td>enter month,day,hh.ddd,long.,lat. *</td>
</tr>
+
+<tr>
+<td>16</td>
+<td><b>WorldView 2</b></td>
+<td>enter month,day,hh.ddd,long.,lat. *</td>
+</tr>
+
+<tr>
+<td>17</td>
+<td><b>QuickBird</b></td>
+<td>enter month,day,hh.ddd,long.,lat. *</td>
+</tr>
+
+<tr>
+<td>17</td>
+<td><b>LandSat 8</b></td>
+<td>enter month,day,hh.ddd,long.,lat. *</td>
+</tr>
+
</table>
<blockquote>
@@ -557,6 +576,36 @@
<tr><td>98</td><td>VGT2 (SPOT5) band 2 (0.580-0.780)</td></tr>
<tr><td>99</td><td>VGT2 (SPOT5) band 3 (0.700-1.000)</td></tr>
<tr><td>100</td><td>VGT2 (SPOT5) MIR band (1.450-1.800)</td></tr>
+
+<tr><td>101</td><td>WorldView 2 Panchromatic band (0.447-0.808)</td></tr>
+<tr><td>102</td><td>WorldView 2 Coastal Blue band (0.396-0.458)</td></tr>
+<tr><td>103</td><td>WorldView 2 Blue band (0.442-0.515)</td></tr>
+<tr><td>104</td><td>WorldView 2 Green band (0.506-0.586)</td></tr>
+<tr><td>105</td><td>WorldView 2 Yellow band (0.584-0.632)</td></tr>
+<tr><td>106</td><td>WorldView 2 Red band (0.624-0.694)</td></tr>
+<tr><td>107</td><td>WorldView 2 Red Edge band (0.699-0.749)</td></tr>
+<tr><td>108</td><td>WorldView 2 NIR1 band (0.765-0.901)</td></tr>
+<tr><td>109</td><td>WorldView 2 NIR2 band (0.856-0.1043)</td></tr>
+
+<tr><td>110</td><td><b>QuickBird</b> Panchromatic band (0.405-1.053)</td></tr>
+<tr><td>111</td><td>QuickBird Blue band (0.430-0.545)</td></tr>
+<tr><td>112</td><td>QuickBird Green band (0.466-0.620)</td></tr>
+<tr><td>113</td><td>QuickBird Red band (0.590-0.710)</td></tr>
+<tr><td>114</td><td>QuickBird NIR1 band (0.715-0.918)</td></tr>
+
+<tr><td>115</td><td><b>Landsat 8 </b> Coastal Aerosol Band (0.427nm - 0.459nm)</td></tr>
+<tr><td>116</td><td>Landsat 8 Blue Band (436nm - 527nm)</td></tr>
+<tr><td>117</td><td>Landsat 8 Green Band (512nm-610nm)</td></tr>
+<tr><td>118</td><td>Landsat 8 Red Band (625nm-691nm)</td></tr>
+<tr><td>119</td><td>Landsat 8 Panchromatic Band (488nm-692nm)</td></tr>
+<tr><td>120</td><td>Landsat 8 NIR Band (829nm-900nm)</td></tr>
+<tr><td>121</td><td>Landsat 8 Cirrus Band (1340nm-1409nm)</td></tr>
+<tr><td>122</td><td>Landsat 8 SWIR1 Band (1515nm - 1697nm)</td></tr>
+<tr><td>123</td><td>Landsat 8 SWIR2 Band (2037nm - 2355nm)</td></tr>
+
+
+
+
</table>
<h2>EXAMPLES</h2>
@@ -696,6 +745,7 @@
<a href="http://www.rsgis.ait.ac.th/~honda/textbooks/advrs/6smanv2.0_P2.pdf">PDF2</a>,
and <a href="http://www.rsgis.ait.ac.th/~honda/textbooks/advrs/6smanv2.0_P3.pdf">PDF3</a>
<li>RapidEye sensors have been provided by <a href="http://www.rapideye.com/">RapidEye AG, Germany</a>
+<li> Julia A. Barsi, Brian L. Markham and Jeffrey A. Pedelty "The operational land imager: spectral response and spectral uniformity", Proc. SPIE 8153, 81530G (2011); doi:10.1117/12.895438
</ul>
@@ -722,5 +772,10 @@
<p><em>VGT1 and VGT2 sensors addition from <a href="http://6s.ltdri.org/">6SV-1.1 sources</a>, addition 07/2011:</em>
<br>Alfredo Alessandrini, Anne Ghisla
-<p><i>Last changed: $Date$</i>
+<p><em>Added Landsat 8 from <a href="http://landsat.gsfc.nasa.gov/?p=5779">NASA sources</a>, addition 05/2014:</em>
+<br>Nikolaos Ves
+
+<p>
+<i>Last changed: $Date$</i>
+
More information about the grass-commit
mailing list