浏览代码

Band limits now in micrometers, improved list comprehension.

git-svn-id: https://svn.osgeo.org/grass/grass/trunk@42763 15284696-431f-4ddb-bdfa-cd5b030d7da7
Anne Ghisla 15 年之前
父节点
当前提交
d7777cc4c3
共有 1 个文件被更改,包括 12 次插入12 次删除
  1. 12 12
      imagery/i.atcorr/create_iwave.py

+ 12 - 12
imagery/i.atcorr/create_iwave.py

@@ -89,7 +89,7 @@ def interpolate_band(values):
     
     filter_f = f(np.arange(response[0,0], response[-1,0], 2.5))
     
-    # converts limits from nanometers to micrometers
+    # convert limits from nanometers to micrometers
     lowerlimit = response[0,0]/1000
     upperlimit = response[-1,0]/1000
     
@@ -168,11 +168,11 @@ def write_cpp(bands, values, sensor, folder):
         
         # calculate wl slot for band start
         # slots range from 250 to 4000 at 2.5 increments (total 1500)
-        s_start = int((limits[0] - 250)/2.5)
+        s_start = int((limits[0] - 0.250)/2.5)
         
         outfile.write('\n')
-        outfile.write('    ffu.wlinf = %.4ff;\n' % (limits[0]/1000.0))
-        outfile.write('    ffu.wlsup = %.4ff;\n' % (limits[1]/1000.0))
+        outfile.write('    ffu.wlinf = %.4ff;\n' % (limits[0]))
+        outfile.write('    ffu.wlsup = %.4ff;\n' % (limits[1]))
         outfile.write('    int i = 0;\n')
         outfile.write('    for(i = 0; i < %i; i++)\tffu.s[i] = 0;\n' % (s_start))
         outfile.write('    for(i = 0; i < %i; i++)\tffu.s[%i+i] = sr[i];\n' % (len(filter_f), s_start))
@@ -189,15 +189,15 @@ def write_cpp(bands, values, sensor, folder):
         
         # writing band limits
         for b in range(len(bands)):
-            inf = str([i[0] for i in limits])
-            sup = str([i[1] for i in limits])
+            inf = ", ".join(["%.3f" % i[0] for i in limits])
+            sup = ", ".join(["%.3f" % i[1] for i in limits])
             
-            for j in zip(['[',']'],['{','}']):
-                inf = inf.replace(j[0],j[1])
-                sup = sup.replace(j[0],j[1])
+#            for j in zip(['[',']'],['{','}']):
+#                inf = inf.replace(j[0],j[1])
+#                sup = sup.replace(j[0],j[1])
         
-        outfile.write('    static const float wli[%i] = %s;\n' % (len(bands), inf))
-        outfile.write('    static const float wls[%i] = %s;\n' % (len(bands), sup))
+        outfile.write('    static const float wli[%i] = {%s};\n' % (len(bands), inf))
+        outfile.write('    static const float wls[%i] = {%s};\n' % (len(bands), sup))
         
         outfile.write('\n')
         outfile.write('    ffu.wlinf = (float)wli[iwa-1];\n')
@@ -210,7 +210,7 @@ def write_cpp(bands, values, sensor, folder):
         
         # now start of case part...
         for b in range(len(bands)):
-            s_start = int((limits[b][0] - 250)/2.5)
+            s_start = int((limits[b][0]*1000 - 250)/2.5)
             outfile.write('    case %i: for(i = 0; i < %i; i++)  ffu.s[%i+i] = sr%i[i];\n' % ((b+1), len(filter_f[b]), s_start, (b+1)))
             outfile.write('        break;\n')
         outfile.write('    }\n}\n')