[GRASS-SVN] r38573 - in grass/branches/develbranch_6: . imagery/i.atcorr

svn_grass at osgeo.org svn_grass at osgeo.org
Sun Aug 2 06:37:58 EDT 2009


Author: neteler
Date: 2009-08-02 06:37:57 -0400 (Sun, 02 Aug 2009)
New Revision: 38573

Modified:
   grass/branches/develbranch_6/contributors_extra.csv
   grass/branches/develbranch_6/imagery/i.atcorr/GeomCond.cpp
   grass/branches/develbranch_6/imagery/i.atcorr/GeomCond.h
   grass/branches/develbranch_6/imagery/i.atcorr/Iwave.cpp
   grass/branches/develbranch_6/imagery/i.atcorr/Iwave.h
Log:
Michael Perdue <michael perdue yahoo ca>: ASTER sensor added (trac #712)

Modified: grass/branches/develbranch_6/contributors_extra.csv
===================================================================
--- grass/branches/develbranch_6/contributors_extra.csv	2009-08-02 10:17:23 UTC (rev 38572)
+++ grass/branches/develbranch_6/contributors_extra.csv	2009-08-02 10:37:57 UTC (rev 38573)
@@ -29,6 +29,7 @@
 Lorenzo Moretti,<lorenzo moretti bologna.enea.it>,-
 Maris Nartiss,<maris nartiss gmail.com>,-
 Tomas Paudits,<tpaudits mailbox.sk>,-
+Michael Perdue,<michael_perdue yahoo.ca>,-
 Francesco Pirotti,<francesco.pirotti unipd.it>,-
 Phisan Santitamnont,<fsvpss eng.chula.ac.th>,-
 Christoph Simon,<ciccio kiosknet.com.br>,-

Modified: grass/branches/develbranch_6/imagery/i.atcorr/GeomCond.cpp
===================================================================
--- grass/branches/develbranch_6/imagery/i.atcorr/GeomCond.cpp	2009-08-02 10:17:23 UTC (rev 38572)
+++ grass/branches/develbranch_6/imagery/i.atcorr/GeomCond.cpp	2009-08-02 10:37:57 UTC (rev 38573)
@@ -363,6 +363,7 @@
     case 7: /* tm    ( landsat ) * enter month,day,hh.ddd,long.,lat. */
     case 8: /* etm+  ( landsat7) * enter month,day,hh.ddd,long.,lat. */
     case 9: /* liss  ( IRS 1C)   * enter month,day,hh.ddd,long.,lat. */
+     case 10: /* aster            * enter month,day,hh.ddd,long.,lat. */
     {
 	cin >> month;
 	cin >> jday;
@@ -408,7 +409,7 @@
 /* ---- print geometrical conditions ---- */
 void GeomCond::print()
 {
-    static const string etiq1[10] = {
+    static const string etiq1[11] = {
 	string(" user defined conditions     "),
 	string(" meteosat observation        "),
 	string(" goes east observation       "),
@@ -418,7 +419,8 @@
 	string(" h.r.v.   observation        "),
 	string(" t.m.     observation        "),
 	string(" etm+     observation        "),
-	string(" liss     observation        ")
+	string(" liss     observation        "),
+	string(" aster    observation        ")
     };
 
     static const string head(" geometrical conditions identity  ");

Modified: grass/branches/develbranch_6/imagery/i.atcorr/GeomCond.h
===================================================================
--- grass/branches/develbranch_6/imagery/i.atcorr/GeomCond.h	2009-08-02 10:17:23 UTC (rev 38572)
+++ grass/branches/develbranch_6/imagery/i.atcorr/GeomCond.h	2009-08-02 10:37:57 UTC (rev 38573)
@@ -47,7 +47,9 @@
 /*                                                                      c */
 /*         9       liss  ( IRC 1C )  * enter month,day,hh.ddd,long.,lat.c */
 /*                                                                      c */
+/*         10      aster             * enter month,day,hh.ddd,long.,lat.c */
 /*                                                                      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 */

Modified: grass/branches/develbranch_6/imagery/i.atcorr/Iwave.cpp
===================================================================
--- grass/branches/develbranch_6/imagery/i.atcorr/Iwave.cpp	2009-08-02 10:17:23 UTC (rev 38572)
+++ grass/branches/develbranch_6/imagery/i.atcorr/Iwave.cpp	2009-08-02 10:37:57 UTC (rev 38573)
@@ -1792,6 +1792,172 @@
     }
 }
 
+void IWave::aster(int iwa)
+{
+    /* Spectral filter data found on the following page:
+	 http://www.science.aster.ersdac.or.jp/en/about_aster/sensor/
+	 */
+    /* Band 1 of Aster; Central Wavelength = 556nm */
+    static const float sr1[67] = {
+		.0000, .0054, .0073, .0078, .0076, .0074, .0093, .0217,
+		.0580, .0947, .1566, .2694, .3712, .4813, .6204, .7414,
+		.8392, .9077, .9552, .9878, .9973, .9992, .9781, .9373,
+		.8900, .8784, .8786, .8941, .8993, .9049, .9231, .9238,
+		.9184, .9301, .9423, .9493, .9522, .9548, .9598, .9593,
+		.9528, .9256, .8967, .8748, .8265, .7625, .7065, .6282,
+		.5206, .3775, .2535, .1629, .1168, .0859, .0593, .0451,
+		.0355, .0174, .0078, .0049, .0040, .0038, .0053, .0052,
+		.0037, .0023, .0000
+    };
+	
+    /* Band 2 of Aster; Central Wavelength = 659nm  */
+    static const float sr2[59] = {
+		.0000, .0038, .0034, .0008, .0008, .0024, .0029, .0006,
+		.0047, .0050, .0033, .0049, .0126, .0000, .1220, .2738,
+		.4703, .6723, .8350, .9709, .9990, .9835, .9715, .9710,
+		.9734, .9430, .9095, .9305, .9418, .9386, .9202, .9100,
+		.8973, .8606, .8195, .7986, .7889, .7702, .7538, .6961,
+		.6087, .5186, .4523, .4258, .3811, .3244, .2591, .1854,
+		.1121, .0623, .0469, .0334, .0181, .0112, .0010, .0054,
+		.0044, .0017, .0000
+    };
+	
+    /* Band 3N (N=Nadir pointing) of Aster; Central Wavelength = 807nm  */
+    static const float sr3[77] = {
+		.0000, .0017, .0078, .0167, .0285, .0447, .0492, .0509,
+		.0744, .1160, .1768, .2527, .3625, .5534, .8008,1.0000,
+		.9903, .9613, .9012, .9032, .9197, .9655, .9868, .9942,
+		.9857, .9745, .9648, .9465, .9368, .9634, .9760, .9820,
+		.9938, .9968, .9908, .9810, .9756, .9855, .9832, .9694,
+		.9587, .9527, .9499, .9357, .9263, .9552, .9579, .9489,
+		.9447, .9399, .9322, .8945, .8220, .7353, .6193, .4813,
+		.3584, .2614, .1890, .1269, .0841, .0618, .0442, .0318,
+		.0277, .0245, .0213, .0130, .0075, .0074, .0068, .0049,
+		.0030, .0024, .0024, .0017, .0000
+    };
+	
+    /* Band 4 of Aster; Central Wavelength = 1657nm  */
+    static const float sr4[89] = {
+		.0000, .0001, .0001, .0002, .0004, .0005, .0007, .0009,
+		.0012, .0014, .0017, .0021, .0024, .0028, .0032, .0036,
+		.0040, .0045, .0054, .0065, .0080, .0112, .0170, .0245,
+		.0330, .0450, .0740, .0990, .1520, .2140, .3050, .4200,
+		.5970, .6750, .7900, .8270, .8400, .8408, .9010, .9050,
+		.9100, .9140, .9050, .9260, .9470, .9670, .9760, .9840,
+		.9710, .9790, .9880,1.0000, .9902, .9840, .9780, .9710,
+		.9470, .9510, .9450, .9380, .9340, .9300, .9360, .9420,
+		.9140, .8970, .7980, .7000, .5970, .4610, .3700, .2630,
+		.1730, .1259, .0888, .0619, .0450, .0346, .0267, .0207,
+		.0160, .0120, .0086, .0060, .0040, .0025, .0013, .0003,
+		.0000
+    };
+	
+    /* Band 5 of Aster; Central Wavelength = 2169nm  */
+    static const float sr5[74] = {
+		.0000, .0001, .0007, .0017, .0030, .0045, .0062, .0080,
+		.0100, .0124, .0157, .0200, .0290, .0410, .0780, .1310,
+		.2050, .3030, .5410, .7050, .7790, .7910, .8030, .8220,
+		.8400, .9180, .9590,1.0000, .9750, .9020, .7790, .6890,
+		.5900, .4180, .3030, .2300, .1720, .1070, .0700, .0610,
+		.0498, .0385, .0273, .0160, .0140, .0120, .0100, .0080,
+		.0070, .0060, .0050, .0040, .0038, .0036, .0034, .0033,
+		.0031, .0029, .0027, .0025, .0024, .0023, .0021, .0020,
+		.0019, .0017, .0016, .0015, .0013, .0011, .0008, .0005,
+		.0002, .0000
+    };
+	
+    /* Band 6 of Aster; Central Wavelength = 2209nm  */
+    static const float sr6[78] = {
+		.0000, .0001, .0001, .0003, .0005, .0007, .0010, .0014,
+		.0018, .0022, .0027, .0032, .0037, .0044, .0050, .0057,
+		.0064, .0072, .0080, .0092, .0110, .0133, .0160, .0194,
+		.0240, .0298, .0370, .0490, .0660, .1070, .1720, .2540,
+		.3520, .5000, .6020, .7420, .7620, .7790, .8520, .8690,
+		.8860, .9020, .9290, .9550, .9840,1.0000, .9340, .8200,
+		.7540, .5160, .3280, .2380, .1640, .1070, .0570, .0468,
+		.0365, .0263, .0160, .0140, .0120, .0100, .0080, .0070,
+		.0060, .0050, .0040, .0036, .0032, .0029, .0025, .0022,
+		.0018, .0015, .0011, .0006, .0002, .0000
+    };
+	
+    /* Band 7 of Aster; Central Wavelength = 2263nm  */
+    static const float sr7[78] = {
+		.0000, .0012, .0031, .0054, .0080, .0111, .0149, .0195,
+		.0250, .0330, .0490, .0700, .1150, .1760, .2500, .3850,
+		.5080, .6560, .7950, .8690, .8480, .9100, .9100, .9260,
+		.9260, .9430, .9590, .9750, .9750,1.0000, .9590, .8690,
+		.7990, .7050, .6230, .5000, .3930, .3030, .2420, .1760,
+		.1270, .1060, .0840, .0625, .0410, .0370, .0330, .0290,
+		.0250, .0230, .0215, .0199, .0182, .0165, .0147, .0130,
+		.0112, .0093, .0084, .0078, .0074, .0070, .0067, .0062,
+		.0058, .0053, .0049, .0044, .0040, .0035, .0031, .0027,
+		.0022, .0018, .0013, .0008, .0004, .0000
+    };
+	
+    /* Band 8 of Aster; Central Wavelength = 2334nm  */
+    static const float sr8[92] = {
+		.0000, .0026, .0055, .0081, .0103, .0120, .0131, .0138,
+		.0147, .0160, .0195, .0260, .0347, .0450, .0610, .0820,
+		.1060, .1390, .2040, .2860, .4490, .6040, .7020, .8330,
+		.9710, .9880, .9550, .9800, .9770, .9750, .9720, .9700,
+		.9670, .9470, .9620, .9770, .9920,1.0000, .9800, .9960,
+		.9920, .9960, .9550, .9630, .9060, .8370, .7840, .7020,
+		.5800, .4410, .3430, .2780, .2200, .1670, .1307, .0996,
+		.0747, .0570, .0440, .0332, .0250, .0200, .0171, .0150,
+		.0134, .0120, .0108, .0098, .0089, .0080, .0070, .0059,
+		.0049, .0040, .0031, .0022, .0015, .0012, .0010, .0009,
+		.0008, .0007, .0006, .0005, .0004, .0004, .0003, .0002,
+		.0002, .0001, .0001, .0000
+    };
+	
+    /* Band 9 of Aster; Central Wavelength = 2400nm  */
+    static const float sr9[98] = {
+		.0000, .0004, .0012, .0020, .0028, .0036, .0044, .0053,
+		.0062, .0071, .0080, .0089, .0098, .0108, .0120, .0133,
+		.0148, .0169, .0200, .0290, .0450, .0650, .0780, .1100,
+		.1550, .2290, .3270, .4240, .5390, .7270, .7840, .9060,
+		.9270, .8980, .9000, .9010, .9030, .9040, .9060, .9310,
+		.9270, .9220, .9610,1.0000, .9800, .9590, .9270, .8940,
+		.8690, .8330, .8160, .7670, .7020, .6610, .5630, .4240,
+		.3430, .2610, .1920, .1439, .1021, .0695, .0490, .0369,
+		.0274, .0205, .0160, .0132, .0111, .0094, .0080, .0066,
+		.0053, .0044, .0040, .0051, .0073, .0087, .0088, .0088,
+		.0087, .0087, .0086, .0085, .0084, .0082, .0079, .0076,
+		.0072, .0067, .0062, .0055, .0047, .0039, .0029, .0018,
+		.0005, .0000
+    };
+	
+    static const float wli[9] = { 0.4800, 0.5875, 0.7225, 1.5300, 2.1025, 2.1050, 2.2000, 2.2475, 2.2950 };
+    static const float wls[9] = { 0.6450, 0.7325, 0.9125, 1.7500, 2.2850, 2.2975, 2.3925, 2.4750, 2.5375 };
+	
+    ffu.wlinf = wli[iwa-1];
+    ffu.wlsup = wls[iwa-1];
+	
+    int i;
+    for(i = 0; i < 1501; i++) ffu.s[i] = 0; 
+	
+    switch(iwa)
+    {
+		case  1: for(i = 0; i <  67; i++)	 ffu.s[92+i] = sr1[i];
+			break;
+		case  2: for(i = 0; i <  59; i++)	 ffu.s[135+i] = sr2[i];
+			break;
+		case  3: for(i = 0; i <  77; i++)	 ffu.s[189+i] = sr3[i];
+			break;
+		case  4: for(i = 0; i <  89; i++)	 ffu.s[512+i] = sr4[i];
+			break;
+		case  5: for(i = 0; i <  74; i++)	 ffu.s[741+i] = sr5[i];
+			break;
+		case  6: for(i = 0; i <  78; i++)	 ffu.s[742+i] = sr6[i];
+			break;
+		case  7: for(i = 0; i <  78; i++)	 ffu.s[780+i] = sr7[i];
+			break;
+		case  8: for(i = 0; i <  92; i++)	 ffu.s[799+i] = sr8[i];
+			break;
+		case  9: for(i = 0; i <  98; i++)	 ffu.s[818+i] = sr9[i];
+    }
+}
+
 float IWave::equivwl() const
 {
     float seb = 0;
@@ -1858,6 +2024,7 @@
 	else if(iwave <= 60)	polder(iwave - 52);
 	else if(iwave <= 67)	etmplus(iwave - 60);
 	else if(iwave <= 71)	irs_1c_liss(iwave - 67);
+	else if(iwave <= 80)	aster(iwave - 71);
 	else G_warning(_("Unsupported iwave value: %d"), iwave);
     }
 
@@ -1874,7 +2041,7 @@
 /* --- spectral condition ---- */
 void IWave::print()
 {
-    static const string nsat[72] = {
+    static const string nsat[82] = {
 	string(" constant        "), string(" user s          "),
 	string(" meteosat        "), string(" goes east       "), string(" goes west       "),
 	string(" avhrr 1 (noaa6) "), string(" avhrr 2 (noaa6) "),
@@ -1905,7 +2072,10 @@
 	string(" etm+ 4          "), string(" etm+ 5          "), string(" etm+ 7          "),
 	string(" etm+ 8          "),
 	string(" liss 2          "), string(" liss 3          "), string(" liss 4          "),
-	string(" liss 5          ")
+	string(" liss 5          "),
+	string(" aster 1         "), string(" aster 2         "), string(" aster 3N        "),
+	string(" aster 4         "), string(" aster 5         "), string(" aster 6         "),
+	string(" aster 7         "), string(" aster 8         "), string(" aster 9         ")
     };
 
 

Modified: grass/branches/develbranch_6/imagery/i.atcorr/Iwave.h
===================================================================
--- grass/branches/develbranch_6/imagery/i.atcorr/Iwave.h	2009-08-02 10:17:23 UTC (rev 38572)
+++ grass/branches/develbranch_6/imagery/i.atcorr/Iwave.h	2009-08-02 10:37:57 UTC (rev 38573)
@@ -93,6 +93,15 @@
 c        69  3rd      "               ( 0.612-0.700 )                  c
 c        70  4th      "               ( 0.752-0.880 )                  c
 c        71  5th      "               ( 1.452-1.760 )                  c
+c        72  1st band of aster        ( 0.480-0.645 )                  c
+c        73  2nd      "               ( 0.588-0.733 )                  c
+c        74  3N       "               ( 0.723-0.913 )                  c
+c        75  4th      "               ( 1.530-1.750 )                  c
+c        76  5th      "               ( 2.103-2.285 )                  c
+c        77  6th      "               ( 2.105-2.298 )                  c
+c        78  7th      "               ( 2.200-2.393 )                  c
+c        79  8th      "               ( 2.248-2.475 )                  c
+c        80  9th      "               ( 2.295-2.538 )                  c
 c  note: wl has to be in micrometer                                    c
 c**********************************************************************/
 
@@ -128,6 +137,7 @@
 	void polder(int iwa);
 	void etmplus(int iwa);
 	void irs_1c_liss(int iwa);
+	void aster(int iwa);
 
 
 public:



More information about the grass-commit mailing list