This is an automated email from the git hooks/post-receive script.

sebastic-guest pushed a commit to branch upstream-master
in repository pktools.

commit 185b48502c8ec91182d8e1d7fa2dbeefae0a88f8
Author: Pieter Kempeneers <kempe...@gmail.com>
Date:   Mon Mar 18 10:23:46 2013 +0100

    error in classValueMap when class name and value option not provided
---
 src/algorithms/Filter.h    | 25 +++++++++++++++----------
 src/apps/pkclassify_svm.cc |  8 ++++++--
 src/apps/pkfilter.cc       | 12 ++++++++----
 src/base/Makefile.am       |  2 +-
 src/base/Makefile.in       |  2 +-
 5 files changed, 31 insertions(+), 18 deletions(-)

diff --git a/src/algorithms/Filter.h b/src/algorithms/Filter.h
index 75bce71..eaf5e33 100644
--- a/src/algorithms/Filter.h
+++ b/src/algorithms/Filter.h
@@ -55,10 +55,10 @@ public:
   void morphology(const ImgReaderGdal& input, ImgWriterGdal& output, const 
std::string& method, int dim, short down=1, int offset=0);
   void doit(const ImgReaderGdal& input, ImgWriterGdal& output, short down=1, 
int offset=0);
 
-  template<class T> double applySrf(const vector<double> &wavelengthIn, const 
Vector2d<T>& input, const Vector2d<double>& srf, const std::string& 
interpolationType, vector<T>& output, double delta=1.0, bool normalize=false, 
bool verbose=false);
+  template<class T> double applySrf(const vector<double> &wavelengthIn, const 
Vector2d<T>& input, const Vector2d<double>& srf, const std::string& 
interpolationType, vector<T>& output, double delta=1.0, bool normalize=false, 
int down=1, bool verbose=false);
   // void applySrf(const vector<double> &wavelengthIn, const ImgReaderGdal& 
input, const vector< Vector2d<double> > &srf, const std::string& 
interpolationType, ImgWriterGdal& output, bool verbose=false);
   template<class T> void applyFwhm(const vector<double> &wavelengthIn, const 
vector<double>& input, const vector<double> &wavelengthOut, const 
vector<double> &fwhm, const std::string& interpolationType, vector<double>& 
output, bool verbose=false);
-  template<class T> void applyFwhm(const vector<double> &wavelengthIn, const 
Vector2d<T>& input, const vector<double> &wavelengthOut, const vector<double> 
&fwhm, const std::string& interpolationType, Vector2d<T>& output, bool 
verbose=false);
+  template<class T> void applyFwhm(const vector<double> &wavelengthIn, const 
Vector2d<T>& input, const vector<double> &wavelengthOut, const vector<double> 
&fwhm, const std::string& interpolationType, Vector2d<T>& output, int down=1, 
bool verbose=false);
   // void applyFwhm(const vector<double> &wavelengthIn, const ImgReaderGdal& 
input, const vector<double> &wavelengthOut, const vector<double> &fwhm, const 
std::string& interpolationType, ImgWriterGdal& output, bool verbose=false);
 // int fir(double* input, int nbandIn, vector<double>& output, int startBand, 
const string& wavelength, const string& fwhm, bool verbose);
 // int fir(const vector<double>&input, vector<double>& output, int startBand, 
double fwhm, int ntaps, int down, int offset, bool verbose);
@@ -102,12 +102,12 @@ private:
 
 //input[band][sample], output[sample]
 //returns wavelength for which srf is maximum
-  template<class T> double Filter::applySrf(const vector<double> 
&wavelengthIn, const Vector2d<T>& input, const Vector2d<double>& srf, const 
std::string& interpolationType, vector<T>& output, double delta, bool 
normalize, bool verbose)
+  template<class T> double Filter::applySrf(const vector<double> 
&wavelengthIn, const Vector2d<T>& input, const Vector2d<double>& srf, const 
std::string& interpolationType, vector<T>& output, double delta, bool 
normalize, int down, bool verbose)
 {  
   assert(srf.size()==2);//[0]: wavelength, [1]: response function
   int nband=srf[0].size(); 
   unsigned int nsample=input[0].size();
-  output.resize(nsample);
+  output.resize((nsample+down-1)/down);
   double start=floor(wavelengthIn[0]);
   double end=ceil(wavelengthIn.back());
   if(verbose)
@@ -151,6 +151,8 @@ private:
   assert(splineOut);
 
   for(int isample=0;isample<nsample;++isample){
+    if((isample+1+down/2)%down)
+      continue;
     vector<T> inputValues;
     input.selectCol(isample,inputValues);
     assert(wavelengthIn.size()==inputValues.size());
@@ -164,10 +166,11 @@ private:
     assert(input_fine.size()==srf_fine.size());
     assert(input_fine.size()==wavelength_fine.size());
     
stat.initSpline(splineOut,&(wavelength_fine[0]),&(product[0]),wavelength_fine.size());
+    //hiero
     if(normalize)
-      output[isample]=gsl_spline_eval_integ(splineOut,start,end,accOut)/norm;
+      
output[isample/down]=gsl_spline_eval_integ(splineOut,start,end,accOut)/norm;
     else
-      output[isample]=gsl_spline_eval_integ(splineOut,start,end,accOut);
+      output[isample/down]=gsl_spline_eval_integ(splineOut,start,end,accOut);
   }
   gsl_spline_free(splineOut);
   gsl_interp_accel_free(accOut);
@@ -229,7 +232,7 @@ template<class T> void Filter::applyFwhm(const 
vector<double> &wavelengthIn, con
 
 
   //input[inBand][sample], output[outBand][sample]
-template<class T> void Filter::applyFwhm(const vector<double> &wavelengthIn, 
const Vector2d<T>& input, const vector<double> &wavelengthOut, const 
vector<double> &fwhm, const std::string& interpolationType, Vector2d<T>& 
output, bool verbose){
+  template<class T> void Filter::applyFwhm(const vector<double> &wavelengthIn, 
const Vector2d<T>& input, const vector<double> &wavelengthOut, const 
vector<double> &fwhm, const std::string& interpolationType, Vector2d<T>& 
output, int down, bool verbose){
   double delta=1;//1 nm resolution
   vector<double> stddev(fwhm.size());
   for(int index=0;index<fwhm.size();++index)
@@ -249,7 +252,7 @@ template<class T> void Filter::applyFwhm(const 
vector<double> &wavelengthIn, con
   }
   int nbandIn=wavelength_fine.size();
   int nbandOut=wavelengthOut.size();
-  output.resize(nbandOut,input[0].size());
+  output.resize(nbandOut,(input[0].size()+down-1)/down);
 
   gsl::matrix tf(nbandIn,nbandOut);
   vector<double> norm(nbandOut);
@@ -268,15 +271,17 @@ template<class T> void Filter::applyFwhm(const 
vector<double> &wavelengthIn, con
   }
 
   for(int isample=0;isample<input[0].size();++isample){
+    if((isample+1+down/2)%down)
+      continue;
     vector<T> inputValues;
     input.selectCol(isample,inputValues);
     assert(wavelengthIn.size()==inputValues.size());
     for(int indexOut=0;indexOut<nbandOut;++indexOut){
       vector<double> input_fine;
       
stat.interpolateUp(wavelengthIn,inputValues,wavelength_fine,interpolationType,input_fine,verbose);
-      output[indexOut][isample]=0;
+      output[indexOut][(isample+down-1)/down]=0;
       for(int indexIn=0;indexIn<nbandIn;++indexIn){
-        
output[indexOut][isample]+=input_fine[indexIn]*tf(indexIn,indexOut)/norm[indexOut];
+        
output[indexOut][(isample+down-1)/down]+=input_fine[indexIn]*tf(indexIn,indexOut)/norm[indexOut];
       }
     }
   }
diff --git a/src/apps/pkclassify_svm.cc b/src/apps/pkclassify_svm.cc
index 6f3e986..f4b5cf6 100644
--- a/src/apps/pkclassify_svm.cc
+++ b/src/apps/pkclassify_svm.cc
@@ -559,8 +559,12 @@ int main(int argc, char *argv[])
   if(input_opt[0].find(".shp")==string::npos){
     if(classname_opt.empty()){
       std::cerr << "Warning: no class name and value pair provided for all " 
<< nclass << " classes, using string2type<int> instead!" << std::endl;
-      for(int iclass=0;iclass<nclass;++iclass)
-       
classValueMap[type2string<short>(iclass)]=string2type<short>(cm.getClass(iclass));
+      for(int iclass=0;iclass<nclass;++iclass){
+       
classValueMap[cm.getClass(iclass)]=string2type<short>(cm.getClass(iclass));
+        if(verbose_opt[0]>0)
+          std::cout << iclass << " " << classValueMap[cm.getClass(iclass)] << 
" -> " << string2type<short>(cm.getClass(iclass)) << std::endl;
+       // 
classValueMap[type2string<short>(iclass)]=string2type<short>(cm.getClass(iclass));
+      }
     }
        
     ImgReaderGdal testImage;
diff --git a/src/apps/pkfilter.cc b/src/apps/pkfilter.cc
index cbf9ca0..7db2f8b 100644
--- a/src/apps/pkfilter.cc
+++ b/src/apps/pkfilter.cc
@@ -133,7 +133,7 @@ int main(int argc,char **argv) {
     if(fwhm_opt.size()||srf_opt.size()){
       //todo: support down and offset
       int nband=fwhm_opt.size()? fwhm_opt.size():srf_opt.size();
-      
output.open(output_opt[0],input.nrOfCol(),input.nrOfRow(),nband,theType,imageType,option_opt);
+      
output.open(output_opt[0],(input.nrOfCol()+down_opt[0]-1)/down_opt[0],(input.nrOfRow()+down_opt[0]-1)/down_opt[0],nband,theType,imageType,option_opt);
     }
     else
       
output.open(output_opt[0],(input.nrOfCol()+down_opt[0]-1)/down_opt[0],(input.nrOfRow()+down_opt[0]-1)/down_opt[0],input.nrOfBand(),theType,imageType,option_opt);
@@ -228,12 +228,14 @@ int main(int argc,char **argv) {
     double progress=0;
     pfnProgress(progress,pszMessage,pProgressArg);
     for(int y=0;y<input.nrOfRow();++y){
+      if((y+1+down_opt[0]/2)%down_opt[0])
+        continue;
       for(int iband=0;iband<input.nrOfBand();++iband)
         input.readData(lineInput[iband],GDT_Float64,y,iband);
-      
filter1d.applyFwhm<double>(wavelengthIn_opt,lineInput,wavelengthOut_opt,fwhm_opt,
 interpolationType_opt[0], lineOutput, verbose_opt[0]);
+      
filter1d.applyFwhm<double>(wavelengthIn_opt,lineInput,wavelengthOut_opt,fwhm_opt,
 interpolationType_opt[0], lineOutput, down_opt[0], verbose_opt[0]);
       for(int iband=0;iband<output.nrOfBand();++iband){
         try{
-          output.writeData(lineOutput[iband],GDT_Float64,y,iband);
+          output.writeData(lineOutput[iband],GDT_Float64,y/down_opt[0],iband);
         }
         catch(string errorstring){
           cerr << errorstring << "in band " << iband << ", line " << y << endl;
@@ -282,6 +284,8 @@ int main(int argc,char **argv) {
     double progress=0;
     pfnProgress(progress,pszMessage,pProgressArg);
     for(int y=0;y<input.nrOfRow();++y){
+      if((y+1+down_opt[0]/2)%down_opt[0])
+        continue;
       for(int iband=0;iband<input.nrOfBand();++iband)
         input.readData(lineInput[iband],GDT_Float64,y,iband);
       for(int isrf=0;isrf<srf.size();++isrf){
@@ -292,7 +296,7 @@ int main(int argc,char **argv) {
         if(verbose_opt[0])
           std::cout << "centre wavelength srf " << isrf << ": " << 
centreWavelength << std::endl;
         try{
-          output.writeData(lineOutput,GDT_Float64,y,isrf);
+          output.writeData(lineOutput,GDT_Float64,y/down_opt[0],isrf);
         }
         catch(string errorstring){
           cerr << errorstring << "in srf " << srf_opt[isrf] << ", line " << y 
<< endl;
diff --git a/src/base/Makefile.am b/src/base/Makefile.am
index 3c1a63b..17d46b1 100644
--- a/src/base/Makefile.am
+++ b/src/base/Makefile.am
@@ -20,7 +20,7 @@ noinst_LIBRARIES = libbase.a
 libbase_adir = $(includedir)/base
 
 # the list of header files that belong to the library (to be installed later)
-libbase_a_HEADERS = PointData.h
+libbase_a_HEADERS = $(top_srcdir)/config.h PointData.h Vector2d.h IndexValue.h 
Optionpk.h PosValue.h
 
 # the sources to add to the library and to add to the source distribution
 libbase_a_SOURCES = $(libbase_a_HEADERS) PointData.cc
diff --git a/src/base/Makefile.in b/src/base/Makefile.in
index a0ddf10..ed38054 100644
--- a/src/base/Makefile.in
+++ b/src/base/Makefile.in
@@ -228,7 +228,7 @@ noinst_LIBRARIES = libbase.a
 libbase_adir = $(includedir)/base
 
 # the list of header files that belong to the library (to be installed later)
-libbase_a_HEADERS = PointData.h
+libbase_a_HEADERS = $(top_srcdir)/config.h PointData.h Vector2d.h IndexValue.h 
Optionpk.h PosValue.h
 
 # the sources to add to the library and to add to the source distribution
 libbase_a_SOURCES = $(libbase_a_HEADERS) PointData.cc

-- 
Alioth's /usr/local/bin/git-commit-notice on 
/srv/git.debian.org/git/pkg-grass/pktools.git

_______________________________________________
Pkg-grass-devel mailing list
Pkg-grass-devel@lists.alioth.debian.org
http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/pkg-grass-devel

Reply via email to