[pktools] 319/375: small changes

Bas Couwenberg sebastic at xs4all.nl
Wed Dec 3 21:54:26 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 b9007e57db7627269256a8d522bf6ce13456502c
Author: Pieter Kempeneers <kempenep at gmail.com>
Date:   Fri Sep 12 19:02:05 2014 +0200

    small changes
---
 src/apps/pkcrop.cc    |   4 +-
 src/apps/pkdumpogr.cc | 243 +++++++++++++++++++++++++++-----------------------
 src/apps/pkfilter.cc  |   5 +-
 3 files changed, 138 insertions(+), 114 deletions(-)

diff --git a/src/apps/pkcrop.cc b/src/apps/pkcrop.cc
index 2684cd8..d926b91 100644
--- a/src/apps/pkcrop.cc
+++ b/src/apps/pkcrop.cc
@@ -61,7 +61,7 @@ int main(int argc, char *argv[])
   Optionpk<double>  nodata_opt("nodata", "nodata", "Nodata value to put in image if out of bounds.");
   Optionpk<string>  resample_opt("r", "resampling-method", "Resampling method (near: nearest neighbor, bilinear: bi-linear interpolation).", "near");
   Optionpk<string>  description_opt("d", "description", "Set image description");
-  Optionpk<bool>  verbose_opt("v", "verbose", "verbose", false);
+  Optionpk<short>  verbose_opt("v", "verbose", "verbose", 0);
 
   bool doProcess;//stop process when program was invoked with help option (-h --help)
   try{
@@ -479,7 +479,7 @@ int main(int argc, char *argv[])
 	    writeBuffer.push_back(nodataValue);
 	}
 	else{
-	  if(verbose_opt[0])
+	  if(verbose_opt[0]>1)
 	    cout << "reading row: " << readRow << endl;
 	  try{
             if(endCol<imgReader.nrOfCol()-1)
diff --git a/src/apps/pkdumpogr.cc b/src/apps/pkdumpogr.cc
index 44b1239..2a4e305 100644
--- a/src/apps/pkdumpogr.cc
+++ b/src/apps/pkdumpogr.cc
@@ -28,6 +28,7 @@ along with pktools.  If not, see <http://www.gnu.org/licenses/>.
 int main(int argc, char *argv[])
 {
   Optionpk<string> input_opt("i", "input", "Input shape file");
+  Optionpk<string> layer_opt("ln", "lname", "Layer name(s) in sample (leave empty to select all)");
   Optionpk<string> output_opt("o", "output", "Output ASCII file");
   Optionpk<string> attribute_opt("n", "name", "names of the attributes to select. Each attribute is stored in a separate band. Default is ALL: write all attributes", "ALL");
   Optionpk<bool> pos_opt("pos","pos","include position (x and y)",false);
@@ -37,6 +38,7 @@ int main(int argc, char *argv[])
   bool doProcess;//stop process when program was invoked with help option (-h --help)
   try{
     doProcess=input_opt.retrieveOption(argc,argv);
+    layer_opt.retrieveOption(argc,argv);
     output_opt.retrieveOption(argc,argv);
     attribute_opt.retrieveOption(argc,argv);
     pos_opt.retrieveOption(argc,argv);
@@ -65,124 +67,143 @@ int main(int argc, char *argv[])
     outputFile.open(output_opt[0].c_str(),ios::out);
 
   ImgReaderOgr inputReader(input_opt[0]);
-  if(attribute_opt[0]!="ALL"){
-    vector<double> xvector;
-    vector<double> yvector;
-    if(inputReader.getGeometryType()==wkbPoint)
-      inputReader.readXY(xvector,yvector);
-    Vector2d<std::string> theData(attribute_opt.size());
-    for(int ifield=0;ifield<attribute_opt.size();++ifield){
-      if(verbose_opt[0])
-        cout << "field: " << ifield << endl;
-      theData[ifield].clear();
-      inputReader.readData(theData[ifield],OFTReal,attribute_opt[ifield],0,verbose_opt[0]);
-    }
-    if(verbose_opt[0]){
-      std::cout << "number of fields: " << theData.size() << std::endl;
-      std::cout << "number of samples: " << theData[0].size() << std::endl;
-    }
-    if(transpose_opt[0]){
-      if(pos_opt[0]&&(inputReader.getGeometryType()==wkbPoint)){
-        if(output_opt.size()){
-          outputFile << "X" << " ";
-          for(int isample=0;isample<xvector.size();++isample){
-            outputFile << xvector[isample];
-            if(isample<xvector.size()-1)
-              outputFile << " ";
-            else
-              outputFile << std::endl;
-          }
-          outputFile << "Y" << " ";
-          for(int isample=0;isample<yvector.size();++isample){
-            outputFile << yvector[isample];
-            if(isample<yvector.size()-1)
-              outputFile << " ";
-            else
-              outputFile << std::endl;
-          }
-        }
-        else{
-          std::cout << "X" << " ";
-          for(int isample=0;isample<xvector.size();++isample){
-            std::cout << xvector[isample];
-            if(isample<xvector.size()-1)
-              std::cout << " ";
-            else
-              std::cout << std::endl;
-          }
-          std::cout << "Y" << " ";
-          for(int isample=0;isample<yvector.size();++isample){
-            std::cout << yvector[isample];
-            if(isample<yvector.size()-1)
-              std::cout << " ";
-            else
-              std::cout << std::endl;
-          }
-        }
+
+  //support multiple layers
+  int nlayerRead=inputReader.getDataSource()->GetLayerCount();
+  if(verbose_opt[0])
+    cout << "number of layers: " << nlayerRead << endl;
+      
+  for(int ilayer=0;ilayer<nlayerRead;++ilayer){
+    OGRLayer *readLayer=inputReader.getLayer(ilayer);
+    string currentLayername=readLayer->GetName();
+    if(layer_opt.size())
+      if(find(layer_opt.begin(),layer_opt.end(),currentLayername)==layer_opt.end())
+	continue;
+    if(verbose_opt[0])
+      cout << "processing layer " << currentLayername << endl;
+    if(layer_opt.size())
+      cout << " --lname " << currentLayername;
+      
+    if(attribute_opt[0]!="ALL"){
+      vector<double> xvector;
+      vector<double> yvector;
+      if(inputReader.getGeometryType()==wkbPoint)
+	inputReader.readXY(xvector,yvector);
+      Vector2d<std::string> theData(attribute_opt.size());
+      for(int ifield=0;ifield<attribute_opt.size();++ifield){
+	if(verbose_opt[0])
+	  cout << "field: " << ifield << endl;
+	theData[ifield].clear();
+	inputReader.readData(theData[ifield],OFTReal,attribute_opt[ifield],ilayer,verbose_opt[0]);
+      }
+      if(verbose_opt[0]){
+	std::cout << "number of fields: " << theData.size() << std::endl;
+	std::cout << "number of samples: " << theData[0].size() << std::endl;
       }
-      for(int ifield=0;ifield<theData.size();++ifield){
-        if(output_opt.size()){
-          outputFile << ifield << " ";
-          for(int isample=0;isample<theData[0].size();++isample){
-            outputFile << theData[ifield][isample];
-            if(isample<theData[0].size()-1)
-              outputFile << " ";
-            else
-              outputFile << std::endl;
-          }
-        }
-        else{
-          std::cout << ifield << " ";
-          for(int isample=0;isample<theData[0].size();++isample){
-            std::cout << theData[ifield][isample];
-            if(isample<theData[0].size()-1)
-              std::cout << " ";
-            else
-              std::cout << std::endl;
-          }
-        }
+      if(transpose_opt[0]){
+	if(pos_opt[0]&&(inputReader.getGeometryType()==wkbPoint)){
+	  if(output_opt.size()){
+	    outputFile << "X" << " ";
+	    for(int isample=0;isample<xvector.size();++isample){
+	      outputFile << xvector[isample];
+	      if(isample<xvector.size()-1)
+		outputFile << " ";
+	      else
+		outputFile << std::endl;
+	    }
+	    outputFile << "Y" << " ";
+	    for(int isample=0;isample<yvector.size();++isample){
+	      outputFile << yvector[isample];
+	      if(isample<yvector.size()-1)
+		outputFile << " ";
+	      else
+		outputFile << std::endl;
+	    }
+	  }
+	  else{
+	    std::cout << "X" << " ";
+	    for(int isample=0;isample<xvector.size();++isample){
+	      std::cout << xvector[isample];
+	      if(isample<xvector.size()-1)
+		std::cout << " ";
+	      else
+		std::cout << std::endl;
+	    }
+	    std::cout << "Y" << " ";
+	    for(int isample=0;isample<yvector.size();++isample){
+	      std::cout << yvector[isample];
+	      if(isample<yvector.size()-1)
+		std::cout << " ";
+	      else
+		std::cout << std::endl;
+	    }
+	  }
+	}
+	for(int ifield=0;ifield<theData.size();++ifield){
+	  if(output_opt.size()){
+	    outputFile << ifield << " ";
+	    for(int isample=0;isample<theData[0].size();++isample){
+	      outputFile << theData[ifield][isample];
+	      if(isample<theData[0].size()-1)
+		outputFile << " ";
+	      else
+		outputFile << std::endl;
+	    }
+	  }
+	  else{
+	    std::cout << ifield << " ";
+	    for(int isample=0;isample<theData[0].size();++isample){
+	      std::cout << theData[ifield][isample];
+	      if(isample<theData[0].size()-1)
+		std::cout << " ";
+	      else
+		std::cout << std::endl;
+	    }
+	  }
+	}
       }
+      else{
+	for(int isample=0;isample<theData[0].size();++isample){
+	  if(output_opt.size()){
+	    outputFile << isample << " ";
+	    if(pos_opt[0])
+	      outputFile << xvector[isample] << " " << yvector[isample] << " ";
+	    for(int ifield=0;ifield<theData.size();++ifield){
+	      outputFile << theData[ifield][isample];
+	      if(ifield<theData.size()-1)
+		outputFile << " ";
+	      else
+		outputFile << std::endl;
+	    }
+	  }
+	  else{
+	    std::cout << isample << " ";
+	    if(pos_opt[0])
+	      std::cout  << xvector[isample] << " " << yvector[isample] << " ";
+	    for(int ifield=0;ifield<theData.size();++ifield){
+	      std::cout << theData[ifield][isample];
+	      if(ifield<theData.size()-1)
+		std::cout << " ";
+	      else
+		std::cout << std::endl;
+	    }
+	  }
+	}
+      }
+      if(output_opt.size())
+	outputFile.close();
     }
     else{
-      for(int isample=0;isample<theData[0].size();++isample){
-        if(output_opt.size()){
-          outputFile << isample << " ";
-          if(pos_opt[0])
-            outputFile << xvector[isample] << " " << yvector[isample] << " ";
-          for(int ifield=0;ifield<theData.size();++ifield){
-            outputFile << theData[ifield][isample];
-            if(ifield<theData.size()-1)
-              outputFile << " ";
-            else
-              outputFile << std::endl;
-          }
-        }
-        else{
-          std::cout << isample << " ";
-          if(pos_opt[0])
-            std::cout  << xvector[isample] << " " << yvector[isample] << " ";
-          for(int ifield=0;ifield<theData.size();++ifield){
-            std::cout << theData[ifield][isample];
-            if(ifield<theData.size()-1)
-              std::cout << " ";
-            else
-              std::cout << std::endl;
-          }
-        }
+      if(output_opt.size()){
+	ofstream outputFile(output_opt[0].c_str(),ios::out);
+	outputFile << imgReader;
+	outputFile.close();
       }
+      else
+	std::cout << imgReader;
     }
-    if(output_opt.size())
-      outputFile.close();
-  }
-  else{
-    if(output_opt.size()){
-      ofstream outputFile(output_opt[0].c_str(),ios::out);
-      outputFile << imgReader;
-      outputFile.close();
-    }
-    else
-      std::cout << imgReader;
   }
+  inputReader.close();
   imgReader.close();
 }
 
diff --git a/src/apps/pkfilter.cc b/src/apps/pkfilter.cc
index 4ea7e06..11bc602 100644
--- a/src/apps/pkfilter.cc
+++ b/src/apps/pkfilter.cc
@@ -706,7 +706,10 @@ int main(int argc,char **argv) {
       if(verbose_opt[0])
 	std::cout << "classes set" << std::endl;
     default:
-      filter2d.doit(input,output,method_opt[0],dimX_opt[0],dimY_opt[0],down_opt[0],disc_opt[0]);
+      if(dimZ_opt.size()){
+      }
+      else
+	filter2d.doit(input,output,method_opt[0],dimX_opt[0],dimY_opt[0],down_opt[0],disc_opt[0]);
       break;
     }
   }

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