[pktools] 289/375: pkkalman, back from the states

Bas Couwenberg sebastic at xs4all.nl
Wed Dec 3 21:54:22 UTC 2014


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 d91154e52eb21d5b1bf0228c9848b7f584d794ef
Author: user <user at osgeolive.(none)>
Date:   Wed Jun 18 15:22:07 2014 +0200

    pkkalman, back from the states
---
 src/algorithms/Filter.cc |  9 +++++++++
 src/algorithms/Filter.h  |  4 ++++
 src/apps/pkkalman.cc     | 22 ++++++++++++----------
 3 files changed, 25 insertions(+), 10 deletions(-)

diff --git a/src/algorithms/Filter.cc b/src/algorithms/Filter.cc
index 4095566..eb2ddb4 100644
--- a/src/algorithms/Filter.cc
+++ b/src/algorithms/Filter.cc
@@ -284,6 +284,15 @@ void filter::Filter::smooth(const ImgReaderGdal& input, ImgWriterGdal& output, s
   filter(input,output,down,offset);
 }
 
+// void filter::Filter::smoothnodata(const ImgReaderGdal& input, ImgWriterGdal& output, short dim, short down, int offset)
+// {
+//   assert(dim>0);
+//   m_taps.resize(dim);
+//   for(int itap=0;itap<dim;++itap)
+//     m_taps[itap]=1.0/dim;
+//   filter(input,output,down,offset);
+// }
+
 void filter::Filter::filter(const ImgReaderGdal& input, ImgWriterGdal& output, short down, int offset)
 {
   Vector2d<double> lineInput(input.nrOfBand(),input.nrOfCol());
diff --git a/src/algorithms/Filter.h b/src/algorithms/Filter.h
index 38ce28e..dc4cc12 100644
--- a/src/algorithms/Filter.h
+++ b/src/algorithms/Filter.h
@@ -419,6 +419,7 @@ template<class T> void Filter::filter(const std::vector<T>& input, std::vector<T
   for(i=offset;i<m_taps.size()/2;++i){
     if((i-offset)%down)
       continue;
+    //todo:introduce nodata
     output[(i-offset+down-1)/down]=m_taps[m_taps.size()/2]*input[i];
     for(int t=1;t<=m_taps.size()/2;++t)
       output[(i-offset+down-1)/down]+=(m_taps[m_taps.size()/2+t]+m_taps[m_taps.size()/2-t])*input[i+t];
@@ -427,6 +428,7 @@ template<class T> void Filter::filter(const std::vector<T>& input, std::vector<T
   for(i=offset+m_taps.size()/2;i<input.size()-m_taps.size()/2;++i){
     if((i-offset)%down)
       continue;
+    //todo:introduce nodata
     T leaveOut=(*(m_taps.begin()))*input[i-m_taps.size()/2];
     T include=(m_taps.back())*input[i+m_taps.size()/2];
     output[(i-offset+down-1)/down]=0;
@@ -437,7 +439,9 @@ template<class T> void Filter::filter(const std::vector<T>& input, std::vector<T
   for(i=input.size()-m_taps.size()/2;i<input.size();++i){
     if((i-offset)%down)
       continue;
+    //todo:introduce nodata
     output[(i-offset+down-1)/down]=m_taps[m_taps.size()/2]*input[i];
+    //todo:introduce nodata
     for(int t=1;t<=m_taps.size()/2;++t)
       output[(i-offset+down-1)/down]+=(m_taps[m_taps.size()/2+t]+m_taps[m_taps.size()/2-t])*input[i-t];
   }
diff --git a/src/apps/pkkalman.cc b/src/apps/pkkalman.cc
index dd666c2..0d53bcf 100644
--- a/src/apps/pkkalman.cc
+++ b/src/apps/pkkalman.cc
@@ -276,7 +276,7 @@ int main(int argc,char **argv) {
 	    if(uncertObs>eps_opt[0]){
 	      double noemer=uncertObs*uncertObs+stdDev*stdDev;
 	      estWriteBuffer[icol]*=uncertModel_opt[0]*stdDev*stdDev/noemer;
-	      estWriteBuffer[icol]+=uncertModel_opt[0]*uncertObs*uncertObs/noemer;
+	      estWriteBuffer[icol]+=uncertModel_opt[0]*uncertObs*uncertObs/noemer;//todo:check! error?
 	    }
 	    else{
 	      //no need to fill write buffer (already done in imgReaderObs.readData
@@ -377,10 +377,11 @@ int main(int argc,char **argv) {
 	  double certNorm=(errMod*errMod+errObs*errObs);
 	  double certMod=errObs*errObs/certNorm;
 	  double certObs=errMod*errMod/certNorm;
-	  // estWriteBuffer[icol]=(c0mod+c1mod*estValue)*certMod*regTime_opt[0]/(regTime_opt[0]+regSensor_opt[0]);
-	  // estWriteBuffer[icol]+=(c0obs+c1obs*estValue)*certObs*regSensor_opt[0]/(regTime_opt[0]+regSensor_opt[0]);
-	  estWriteBuffer[icol]=(c0mod+c1mod*estValue)*certMod;
-	  estWriteBuffer[icol]+=(c0obs+c1obs*estValue)*certObs;
+	  double regTime=(c0mod+c1mod*estValue)*certMod*regTime_opt[0]/(regTime_opt[0]+regSensor_opt[0]);
+	  double regSensor=(c0obs+c1obs*estValue)*certObs*regSensor_opt[0]/(regTime_opt[0]+regSensor_opt[0]);
+	  estWriteBuffer[icol]=regTime+regSensor;
+	  // estWriteBuffer[icol]=(c0mod+c1mod*estValue)*certMod;
+	  // estWriteBuffer[icol]+=(c0obs+c1obs*estValue)*certObs;
 	  double totalUncertainty=0;
 	  if(errMod<eps_opt[0])
 	    totalUncertainty=errObs;
@@ -493,7 +494,7 @@ int main(int argc,char **argv) {
 	    if(uncertObs>eps_opt[0]){
 	      double noemer=uncertObs*uncertObs+stdDev*stdDev;
 	      estWriteBuffer[icol]*=uncertModel_opt[0]*stdDev*stdDev/noemer;
-	      estWriteBuffer[icol]+=uncertModel_opt[0]*uncertObs*uncertObs/noemer;
+	      estWriteBuffer[icol]+=uncertModel_opt[0]*uncertObs*uncertObs/noemer;//todo: check error?
 	    }
 	    else{
 	      //no need to fill write buffer (already done in imgReaderObs.readData
@@ -594,10 +595,11 @@ int main(int argc,char **argv) {
 	  double certNorm=(errMod*errMod+errObs*errObs);
 	  double certMod=errObs*errObs/certNorm;
 	  double certObs=errMod*errMod/certNorm;
-	  // estWriteBuffer[icol]=(c0mod+c1mod*estValue)*certMod*regTime_opt[0]/(regTime_opt[0]+regSensor_opt[0]);
-	  // estWriteBuffer[icol]+=(c0obs+c1obs*estValue)*certObs*regSensor_opt[0]/(regTime_opt[0]+regSensor_opt[0]);
-	  estWriteBuffer[icol]=(c0mod+c1mod*estValue)*certMod;
-	  estWriteBuffer[icol]+=(c0obs+c1obs*estValue)*certObs;
+	  double regTime=(c0mod+c1mod*estValue)*certMod*regTime_opt[0]/(regTime_opt[0]+regSensor_opt[0]);
+	  double regSensor=(c0obs+c1obs*estValue)*certObs*regSensor_opt[0]/(regTime_opt[0]+regSensor_opt[0]);
+	  estWriteBuffer[icol]=regTime+regSensor;
+	  // estWriteBuffer[icol]=(c0mod+c1mod*estValue)*certMod;
+	  // estWriteBuffer[icol]+=(c0obs+c1obs*estValue)*certObs;
 	  double totalUncertainty=0;
 	  if(errMod<eps_opt[0])
 	    totalUncertainty=errObs;

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



More information about the Pkg-grass-devel mailing list