[pktools] 316/375: support multiple bands for statistics in pkinfo

Bas Couwenberg sebastic at xs4all.nl
Wed Dec 3 21:54:25 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 3aa352330ea961f8aa7c98672eab31a3785ec70e
Author: Pieter Kempeneers <kempenep at gmail.com>
Date:   Wed Sep 10 10:11:03 2014 +0200

    support multiple bands for statistics in pkinfo
---
 ChangeLog            |  2 ++
 src/apps/pkinfo.cc   | 64 ++++++++++++++++++++++++++++------------------------
 src/apps/pkkalman.cc |  3 ++-
 3 files changed, 39 insertions(+), 30 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index dfea511..bde1b8c 100755
--- a/ChangeLog
+++ b/ChangeLog
@@ -303,6 +303,8 @@ version 2.5.3
 	libLAS 1.8.0 support (ticket #42951)
  - myfann_cpp.h 
 	Fix build failure on ARM due to va_list usage in myfann_cpp.h
+ - pkinfo
+	Support multiple input bands when calculating statistics
 Next versions: 
  - todo for API: ImgReaderGdal (ImgWriterGdal) open in update mode (check gdal_edit.py: http://searchcode.com/codesearch/view/18938404)
 
diff --git a/src/apps/pkinfo.cc b/src/apps/pkinfo.cc
index 75f1fb1..116456c 100644
--- a/src/apps/pkinfo.cc
+++ b/src/apps/pkinfo.cc
@@ -258,33 +258,39 @@ int main(int argc, char *argv[])
     double maxValue=0;
     double meanValue=0;
     double stdDev=0;
-    if(stat_opt[0]){
-      assert(band_opt[0]<imgReader.nrOfBand());
-      GDALProgressFunc pfnProgress;
-      void* pProgressData;
-      GDALRasterBand* rasterBand;
-      rasterBand=imgReader.getRasterBand(band_opt[0]);
-      rasterBand->ComputeStatistics(0,&minValue,&maxValue,&meanValue,&stdDev,pfnProgress,pProgressData);
-      std::cout << "-min " << minValue << " -max " << maxValue << " --mean " << meanValue << " --stdDev " << stdDev << " ";
-    }
-
-    if(minmax_opt[0]||min_opt[0]||max_opt[0]){
-      assert(band_opt[0]<imgReader.nrOfBand());
-      if((ulx_opt.size()||uly_opt.size()||lrx_opt.size()||lry_opt.size())&&(imgReader.covers(ulx_opt[0],uly_opt[0],lrx_opt[0],lry_opt[0]))){
-	double uli,ulj,lri,lrj;
-	imgReader.geo2image(ulx_opt[0],uly_opt[0],uli,ulj);
-	imgReader.geo2image(lrx_opt[0],lry_opt[0],lri,lrj);
-	imgReader.getMinMax(static_cast<int>(uli),static_cast<int>(lri),static_cast<int>(ulj),static_cast<int>(lrj),band_opt[0],minValue,maxValue);
+    int nband=band_opt.size();
+    if(band_opt[0]<0)
+      nband=imgReader.nrOfBand();
+    for(int iband=0;iband<nband;++iband){
+      unsigned short theBand=(band_opt[0]<0)? iband : band_opt[iband];
+      if(stat_opt[0]){
+	assert(theBand<imgReader.nrOfBand());
+	GDALProgressFunc pfnProgress;
+	void* pProgressData;
+	GDALRasterBand* rasterBand;
+	rasterBand=imgReader.getRasterBand(theBand);
+	rasterBand->ComputeStatistics(0,&minValue,&maxValue,&meanValue,&stdDev,pfnProgress,pProgressData);
+	std::cout << "-min " << minValue << " -max " << maxValue << " --mean " << meanValue << " --stdDev " << stdDev << " ";
       }
-      else
-	imgReader.getMinMax(minValue,maxValue,band_opt[0],true);
-      if(minmax_opt[0])
-	std::cout << "-min " << minValue << " -max " << maxValue << " ";
-      else{
-	if(min_opt[0])
-	  std::cout << "-min " << minValue << " ";
-	if(max_opt[0])
-	  std::cout << "-max " << maxValue << " ";
+
+      if(minmax_opt[0]||min_opt[0]||max_opt[0]){
+	assert(theBand<imgReader.nrOfBand());
+	if((ulx_opt.size()||uly_opt.size()||lrx_opt.size()||lry_opt.size())&&(imgReader.covers(ulx_opt[0],uly_opt[0],lrx_opt[0],lry_opt[0]))){
+	  double uli,ulj,lri,lrj;
+	  imgReader.geo2image(ulx_opt[0],uly_opt[0],uli,ulj);
+	  imgReader.geo2image(lrx_opt[0],lry_opt[0],lri,lrj);
+	  imgReader.getMinMax(static_cast<int>(uli),static_cast<int>(lri),static_cast<int>(ulj),static_cast<int>(lrj),theBand,minValue,maxValue);
+	}
+	else
+	  imgReader.getMinMax(minValue,maxValue,theBand,true);
+	if(minmax_opt[0])
+	  std::cout << "-min " << minValue << " -max " << maxValue << " ";
+	else{
+	  if(min_opt[0])
+	    std::cout << "-min " << minValue << " ";
+	  if(max_opt[0])
+	    std::cout << "-max " << maxValue << " ";
+	}
       }
     }
     if(relative_opt[0])
@@ -374,9 +380,9 @@ int main(int argc, char *argv[])
 //       }
     }
     if(read_opt[0]){
-      int nband=band_opt.size();
-      if(band_opt[0]<0)
-        nband=imgReader.nrOfBand();
+      // int nband=band_opt.size();
+      // if(band_opt[0]<0)
+      //   nband=imgReader.nrOfBand();
       std::cout.precision(12);
       for(int iband=0;iband<nband;++iband){
         unsigned short theBand=(band_opt[0]<0)? iband : band_opt[iband];
diff --git a/src/apps/pkkalman.cc b/src/apps/pkkalman.cc
index 860b90b..0e67496 100644
--- a/src/apps/pkkalman.cc
+++ b/src/apps/pkkalman.cc
@@ -402,7 +402,8 @@ int main(int argc,char **argv) {
       double c1mod=0;
 
       if(verbose_opt[0])
-	  cout << "Calculating regression for " << imgReaderModel1.getFileName() << " " << imgReaderModel2.getFileName() << endl;
+	cout << "Calculating regression for " << imgReaderModel1.getFileName() << " " << imgReaderModel2.getFileName() << endl;
+      
       double errMod=imgreg.getRMSE(imgReaderModel1,imgReaderModel2,c0mod,c1mod);
       // double errMod=imgreg.getRMSE(imgReaderModel1,imgReaderModel2,c0mod,c1mod,verbose_opt[0]);
 

-- 
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