[GRASS-SVN] r58272 - grass/trunk/imagery/i.landsat.toar

svn_grass at osgeo.org svn_grass at osgeo.org
Thu Nov 21 14:12:00 PST 2013


Author: neteler
Date: 2013-11-21 14:12:00 -0800 (Thu, 21 Nov 2013)
New Revision: 58272

Modified:
   grass/trunk/imagery/i.landsat.toar/landsat_met.c
Log:
i.landsat.toar: fixes for Landsat-8 metadata file support (author: E. Jorge Tizado)

Modified: grass/trunk/imagery/i.landsat.toar/landsat_met.c
===================================================================
--- grass/trunk/imagery/i.landsat.toar/landsat_met.c	2013-11-21 21:32:01 UTC (rev 58271)
+++ grass/trunk/imagery/i.landsat.toar/landsat_met.c	2013-11-21 22:12:00 UTC (rev 58272)
@@ -57,6 +57,7 @@
     value[i] = '\0';
 }
 
+/* future implementation
 double get_metdouble(const char metadata[], char *format, int code, char value[])
 {
     char key[MAX_STR];
@@ -65,6 +66,7 @@
     get_metformat(metadata, key, value);
     return atof(value);			    
 }
+*/
 
 
 /* NEW Metadata Files */
@@ -85,6 +87,7 @@
     value[i] = '\0';
 }
 
+/* future implementation
 double get_mtldouble(const char metadata[], char *format, int code, char value[])
 {
     char key[MAX_STR];
@@ -93,9 +96,9 @@
     get_mtlformat(metadata, key, value);
     return atof(value);			    
 }
+*/
 
 
-
 /****************************************************************************
  * PURPOSE:     Read parameters from Landsat metadata files
  *****************************************************************************/
@@ -106,9 +109,8 @@
     char mtldata[METADATA_SIZE];
     char key[MAX_STR], value[MAX_STR];
     void (*get_mtldata) (const char[], char *, char[]);
-    void (*get_mtlreal) (const char[], char *, int, char[]);
+    /* void (*get_mtlreal) (const char[], char *, int, char[]); */
     int i, j, ver_mtl;
-    double X2;
 
     /* store metadata in ram */
     if ((f = fopen(metafile, "r")) == NULL)
@@ -117,7 +119,8 @@
     (void)fclose(f);
 
     /* set version of the metadata file */
-    /* get_mtldata = (strstr(mtldata, " VALUE ") != NULL) ? get_metformat : get_mtlformat; */
+    get_mtldata = (strstr(mtldata, " VALUE ") != NULL) ? get_metformat : get_mtlformat;
+    /* future implementation
     if (strstr(mtldata, " VALUE ") != NULL)
     {
 	get_mtldata = get_metformat;
@@ -128,6 +131,7 @@
 	get_mtldata = get_mtlformat;
 	get_mtlreal = get_mtldouble;
     }
+    */
     ver_mtl = (strstr(mtldata, "QCALMAX_BAND") != NULL) ? 0 : 1;
 
     /* Fill with product metadata */
@@ -310,18 +314,20 @@
 		    if (lsat->band[i].thermal) {
 			sprintf(key, "K1_CONSTANT_BAND_%d", lsat->band[i].code);
 			get_mtldata(mtldata, key, value);
-			lsat->band[i].K1 = atof(value);
+			if (value[0] != '\0')
+			    lsat->band[i].K1 = atof(value);
 			sprintf(key, "K2_CONSTANT_BAND_%d", lsat->band[i].code);
 			get_mtldata(mtldata, key, value);
-			lsat->band[i].K2 = atof(value);
+			if (value[0] != '\0')
+			    lsat->band[i].K2 = atof(value);
 		    }
 		    else if (lsat->number == 8)
 		    {
 			/* ESUN from  REFLECTANCE and RADIANCE ADD_BAND */
 			sprintf(key, "REFLECTANCE_MAXIMUM_BAND_%d", lsat->band[i].code);
 			get_mtldata(mtldata, key, value);
-			X2 = atof(value);
-			lsat->band[i].esun = (double)(PI * lsat->dist_es * lsat->dist_es * lsat->band[i].lmax) / X2;
+			if (value[0] != '\0')
+			    lsat->band[i].esun = (double)(PI * lsat->dist_es * lsat->dist_es * lsat->band[i].lmax) / atof(value);
 		    }
 		}
 		if (lsat->number == 8)



More information about the grass-commit mailing list