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 655c1250cc1e51903af0b25395382bdf33d4a69c Author: Pieter Kempeneers <kempe...@gmail.com> Date: Sat Mar 29 23:02:51 2014 +0100 support layer name in read training data in ogr --- ChangeLog | 2 +- doc/{faq_pkcomposit.dox => faq_pkcomposite.dox} | 0 src/apps/pkann.cc | 18 ++++++++++-------- src/apps/pkfsann.cc | 18 ++++++++++-------- src/apps/pkfssvm.cc | 16 +++++++++------- src/apps/pkoptsvm.cc | 16 +++++++++------- src/apps/pksvm.cc | 18 ++++++++++-------- src/imageclasses/ImgReaderOgr.cc | 14 ++++++++++++-- src/imageclasses/ImgReaderOgr.h | 24 +++++++++++++----------- 9 files changed, 74 insertions(+), 52 deletions(-) diff --git a/ChangeLog b/ChangeLog index d0ef20a..2d4767b 100755 --- a/ChangeLog +++ b/ChangeLog @@ -278,7 +278,7 @@ version 2.5.2 removed underscore for QProcess in Windows - pkopt_svm -> pkoptsvm removed underscore for QProcess in Windows - - pkmosaic -> pkcomposit + - pkmosaic -> pkcomposite name was confusing as also compositing is supported (unlike gdal_merge.py and gdalwarp) - version control for libraries thanks to suggestion of Francesco Paolo Lovergine diff --git a/doc/faq_pkcomposit.dox b/doc/faq_pkcomposite.dox similarity index 100% rename from doc/faq_pkcomposit.dox rename to doc/faq_pkcomposite.dox diff --git a/src/apps/pkann.cc b/src/apps/pkann.cc index b3cdb16..15c1464 100644 --- a/src/apps/pkann.cc +++ b/src/apps/pkann.cc @@ -39,8 +39,9 @@ int main(int argc, char *argv[]) //--------------------------- command line options ------------------------------------ Optionpk<string> input_opt("i", "input", "input image"); - Optionpk<string> training_opt("t", "training", "training shape file. A single shape file contains all training features (must be set as: B0, B1, B2,...) for all classes (class numbers identified by label option). Use multiple training files for bootstrap aggregation (alternative to the bag and bsize options, where a random subset is taken from a single training file)"); - Optionpk<string> label_opt("label", "label", "identifier for class label in training shape file.","label"); + Optionpk<string> training_opt("t", "training", "training vector file. A single vector file contains all training features (must be set as: B0, B1, B2,...) for all classes (class numbers identified by label option). Use multiple training files for bootstrap aggregation (alternative to the bag and bsize options, where a random subset is taken from a single training file)"); + Optionpk<string> tlayer_opt("tln", "tln", "training layer name",""); + Optionpk<string> label_opt("label", "label", "identifier for class label in training vector file.","label"); Optionpk<unsigned int> balance_opt("bal", "balance", "balance the input data to this number of samples for each class", 0); Optionpk<bool> random_opt("random", "random", "in case of balance, randomize input data", true); Optionpk<int> minSize_opt("min", "min", "if number of training pixels is less then min, do not take this class into account (0: consider all classes)", 0); @@ -83,6 +84,7 @@ int main(int argc, char *argv[]) try{ doProcess=input_opt.retrieveOption(argc,argv); training_opt.retrieveOption(argc,argv); + tlayer_opt.retrieveOption(argc,argv); label_opt.retrieveOption(argc,argv); balance_opt.retrieveOption(argc,argv); random_opt.retrieveOption(argc,argv); @@ -137,7 +139,7 @@ int main(int argc, char *argv[]) if(mask_opt.size()) cout << "mask filename: " << mask_opt[0] << endl; if(training_opt.size()){ - cout << "training shape file: " << endl; + cout << "training vector file: " << endl; for(int ifile=0;ifile<training_opt.size();++ifile) cout << training_opt[ifile] << endl; } @@ -207,13 +209,13 @@ int main(int argc, char *argv[]) trainingMap.clear(); trainingPixels.clear(); if(verbose_opt[0]>=1) - cout << "reading imageShape file " << training_opt[0] << endl; + cout << "reading imageVector file " << training_opt[0] << endl; try{ ImgReaderOgr trainingReaderBag(training_opt[ibag]); if(band_opt.size()) - totalSamples=trainingReaderBag.readDataImageShape(trainingMap,fields,band_opt,label_opt[0],verbose_opt[0]); + totalSamples=trainingReaderBag.readDataImageOgr(trainingMap,fields,band_opt,label_opt[0],tlayer_opt[0],verbose_opt[0]); else - totalSamples=trainingReaderBag.readDataImageShape(trainingMap,fields,start_opt[0],end_opt[0],label_opt[0],verbose_opt[0]); + totalSamples=trainingReaderBag.readDataImageOgr(trainingMap,fields,start_opt[0],end_opt[0],label_opt[0],tlayer_opt[0],verbose_opt[0]); if(trainingMap.size()<2){ string errorstring="Error: could not read at least two classes from training file, did you provide class labels in training sample (see option label)?"; throw(errorstring); @@ -962,9 +964,9 @@ int main(int argc, char *argv[]) classImageBag.close(); classImageOut.close(); } - else{//classify shape file + else{//classify vector file cm.clearResults(); - //notice that fields have already been set by readDataImageShape (taking into account appropriate bands) + //notice that fields have already been set by readDataImageOgr (taking into account appropriate bands) for(int ivalidation=0;ivalidation<input_opt.size();++ivalidation){ if(output_opt.size()) assert(output_opt.size()==input_opt.size()); diff --git a/src/apps/pkfsann.cc b/src/apps/pkfsann.cc index 777925d..b115dcb 100644 --- a/src/apps/pkfsann.cc +++ b/src/apps/pkfsann.cc @@ -197,8 +197,9 @@ int main(int argc, char *argv[]) //--------------------------- command line options ------------------------------------ Optionpk<string> input_opt("i", "input", "input test set (leave empty to perform a cross validation based on training only)"); - Optionpk<string> training_opt("t", "training", "training shape file. A single shape file contains all training features (must be set as: B0, B1, B2,...) for all classes (class numbers identified by label option). Use multiple training files for bootstrap aggregation (alternative to the bag and bsize options, where a random subset is taken from a single training file)"); - Optionpk<string> label_opt("\0", "label", "identifier for class label in training shape file.","label"); + Optionpk<string> training_opt("t", "training", "training vector file. A single vector file contains all training features (must be set as: B0, B1, B2,...) for all classes (class numbers identified by label option). Use multiple training files for bootstrap aggregation (alternative to the bag and bsize options, where a random subset is taken from a single training file)"); + Optionpk<string> tlayer_opt("tln", "tln", "training layer name",""); + Optionpk<string> label_opt("\0", "label", "identifier for class label in training vector file.","label"); Optionpk<unsigned short> maxFeatures_opt("n", "nf", "number of features to select (0 to select optimal number, see also ecost option)", 0); Optionpk<unsigned int> balance_opt("\0", "balance", "balance the input data to this number of samples for each class", 0); Optionpk<bool> random_opt("random","random", "in case of balance, randomize input data", true); @@ -218,6 +219,7 @@ int main(int argc, char *argv[]) doProcess=input_opt.retrieveOption(argc,argv); training_opt.retrieveOption(argc,argv); maxFeatures_opt.retrieveOption(argc,argv); + tlayer_opt.retrieveOption(argc,argv); label_opt.retrieveOption(argc,argv); balance_opt.retrieveOption(argc,argv); random_opt.retrieveOption(argc,argv); @@ -261,7 +263,7 @@ int main(int argc, char *argv[]) if(input_opt.size()) cv_opt[0]=0; if(verbose_opt[0]>=1) - std::cout << "training shape file: " << training_opt[0] << std::endl; + std::cout << "training vector file: " << training_opt[0] << std::endl; unsigned int totalSamples=0; unsigned int totalTestSamples=0; @@ -304,22 +306,22 @@ int main(int argc, char *argv[]) map<string,Vector2d<float> > trainingMap; map<string,Vector2d<float> > testMap; if(verbose_opt[0]>=1) - std::cout << "reading imageShape file " << training_opt[0] << std::endl; + std::cout << "reading imageVector file " << training_opt[0] << std::endl; try{ ImgReaderOgr trainingReader(training_opt[0]); if(band_opt.size()){ - totalSamples=trainingReader.readDataImageShape(trainingMap,fields,band_opt,label_opt[0],verbose_opt[0]); + totalSamples=trainingReader.readDataImageOgr(trainingMap,fields,band_opt,label_opt[0],tlayer_opt[0],verbose_opt[0]); if(input_opt.size()){ ImgReaderOgr inputReader(input_opt[0]); - totalTestSamples=trainingReader.readDataImageShape(testMap,fields,band_opt,label_opt[0],verbose_opt[0]); + totalTestSamples=trainingReader.readDataImageOgr(testMap,fields,band_opt,label_opt[0],tlayer_opt[0],verbose_opt[0]); inputReader.close(); } } else{ - totalSamples=trainingReader.readDataImageShape(trainingMap,fields,start_opt[0],end_opt[0],label_opt[0],verbose_opt[0]); + totalSamples=trainingReader.readDataImageOgr(trainingMap,fields,start_opt[0],end_opt[0],label_opt[0],tlayer_opt[0],verbose_opt[0]); if(input_opt.size()){ ImgReaderOgr inputReader(input_opt[0]); - totalTestSamples=trainingReader.readDataImageShape(testMap,fields,start_opt[0],end_opt[0],label_opt[0],verbose_opt[0]); + totalTestSamples=trainingReader.readDataImageOgr(testMap,fields,start_opt[0],end_opt[0],label_opt[0],tlayer_opt[0],verbose_opt[0]); inputReader.close(); } } diff --git a/src/apps/pkfssvm.cc b/src/apps/pkfssvm.cc index f1bcc61..4dcf05b 100644 --- a/src/apps/pkfssvm.cc +++ b/src/apps/pkfssvm.cc @@ -221,8 +221,9 @@ int main(int argc, char *argv[]) //--------------------------- command line options ------------------------------------ Optionpk<string> input_opt("i", "input", "input test set (leave empty to perform a cross validation based on training only)"); - Optionpk<string> training_opt("t", "training", "training shape file. A single shape file contains all training features (must be set as: B0, B1, B2,...) for all classes (class numbers identified by label option)."); - Optionpk<string> label_opt("\0", "label", "identifier for class label in training shape file.","label"); + Optionpk<string> training_opt("t", "training", "training vector file. A single vector file contains all training features (must be set as: B0, B1, B2,...) for all classes (class numbers identified by label option)."); + Optionpk<string> tlayer_opt("tln", "tln", "training layer name",""); + Optionpk<string> label_opt("\0", "label", "identifier for class label in training vector file.","label"); Optionpk<unsigned short> maxFeatures_opt("n", "nf", "number of features to select (0 to select optimal number, see also ecost option)", 0); Optionpk<unsigned int> balance_opt("\0", "balance", "balance the input data to this number of samples for each class", 0); Optionpk<bool> random_opt("random","random", "in case of balance, randomize input data", true); @@ -240,6 +241,7 @@ int main(int argc, char *argv[]) doProcess=input_opt.retrieveOption(argc,argv); training_opt.retrieveOption(argc,argv); maxFeatures_opt.retrieveOption(argc,argv); + tlayer_opt.retrieveOption(argc,argv); label_opt.retrieveOption(argc,argv); balance_opt.retrieveOption(argc,argv); random_opt.retrieveOption(argc,argv); @@ -285,7 +287,7 @@ int main(int argc, char *argv[]) if(verbose_opt[0]>=1){ if(input_opt.size()) std::cout << "input filename: " << input_opt[0] << std::endl; - std::cout << "training shape file: " << std::endl; + std::cout << "training vector file: " << std::endl; for(int ifile=0;ifile<training_opt.size();++ifile) std::cout << training_opt[ifile] << std::endl; std::cout << "verbose: " << verbose_opt[0] << std::endl; @@ -346,18 +348,18 @@ int main(int argc, char *argv[]) try{ ImgReaderOgr trainingReader(training_opt[0]); if(band_opt.size()){ - totalSamples=trainingReader.readDataImageShape(trainingMap,fields,band_opt,label_opt[0],verbose_opt[0]); + totalSamples=trainingReader.readDataImageOgr(trainingMap,fields,band_opt,label_opt[0],tlayer_opt[0],verbose_opt[0]); if(input_opt.size()){ ImgReaderOgr inputReader(input_opt[0]); - totalTestSamples=inputReader.readDataImageShape(testMap,fields,band_opt,label_opt[0],verbose_opt[0]); + totalTestSamples=inputReader.readDataImageOgr(testMap,fields,band_opt,label_opt[0],tlayer_opt[0],verbose_opt[0]); inputReader.close(); } } else{ - totalSamples=trainingReader.readDataImageShape(trainingMap,fields,start_opt[0],end_opt[0],label_opt[0],verbose_opt[0]); + totalSamples=trainingReader.readDataImageOgr(trainingMap,fields,start_opt[0],end_opt[0],label_opt[0],tlayer_opt[0],verbose_opt[0]); if(input_opt.size()){ ImgReaderOgr inputReader(input_opt[0]); - totalTestSamples=inputReader.readDataImageShape(testMap,fields,start_opt[0],end_opt[0],label_opt[0],verbose_opt[0]); + totalTestSamples=inputReader.readDataImageOgr(testMap,fields,start_opt[0],end_opt[0],label_opt[0],tlayer_opt[0],verbose_opt[0]); inputReader.close(); } } diff --git a/src/apps/pkoptsvm.cc b/src/apps/pkoptsvm.cc index e63f37d..ce77a17 100644 --- a/src/apps/pkoptsvm.cc +++ b/src/apps/pkoptsvm.cc @@ -231,8 +231,9 @@ int main(int argc, char *argv[]) map<short,int> reclassMap; vector<int> vreclass; Optionpk<string> input_opt("i", "input", "input image"); - Optionpk<string> training_opt("t", "training", "training shape file. A single shape file contains all training features (must be set as: B0, B1, B2,...) for all classes (class numbers identified by label option)."); - Optionpk<string> label_opt("\0", "label", "identifier for class label in training shape file.","label"); + Optionpk<string> training_opt("t", "training", "training vector file. A single vector file contains all training features (must be set as: B0, B1, B2,...) for all classes (class numbers identified by label option)."); + Optionpk<string> tlayer_opt("tln", "tln", "training layer name",""); + Optionpk<string> label_opt("\0", "label", "identifier for class label in training vector file.","label"); // Optionpk<unsigned short> reclass_opt("\0", "rc", "reclass code (e.g. --rc=12 --rc=23 to reclass first two classes to 12 and 23 resp.).", 0); Optionpk<unsigned int> balance_opt("\0", "balance", "balance the input data to this number of samples for each class", 0); Optionpk<bool> random_opt("random","random", "in case of balance, randomize input data", true); @@ -253,6 +254,7 @@ int main(int argc, char *argv[]) try{ doProcess=input_opt.retrieveOption(argc,argv); training_opt.retrieveOption(argc,argv); + tlayer_opt.retrieveOption(argc,argv); label_opt.retrieveOption(argc,argv); // reclass_opt.retrieveOption(argc,argv); balance_opt.retrieveOption(argc,argv); @@ -301,7 +303,7 @@ int main(int argc, char *argv[]) if(verbose_opt[0]>=1){ if(input_opt.size()) std::cout << "input filename: " << input_opt[0] << std::endl; - std::cout << "training shape file: " << std::endl; + std::cout << "training vector file: " << std::endl; for(int ifile=0;ifile<training_opt.size();++ifile) std::cout << training_opt[ifile] << std::endl; std::cout << "verbose: " << verbose_opt[0] << std::endl; @@ -355,18 +357,18 @@ int main(int argc, char *argv[]) try{ ImgReaderOgr trainingReader(training_opt[0]); if(band_opt.size()){ - totalSamples=trainingReader.readDataImageShape(trainingMap,fields,band_opt,label_opt[0],verbose_opt[0]); + totalSamples=trainingReader.readDataImageOgr(trainingMap,fields,band_opt,label_opt[0],tlayer_opt[0],verbose_opt[0]); if(input_opt.size()){ ImgReaderOgr inputReader(input_opt[0]); - totalTestSamples=inputReader.readDataImageShape(testMap,fields,band_opt,label_opt[0],verbose_opt[0]); + totalTestSamples=inputReader.readDataImageOgr(testMap,fields,band_opt,label_opt[0],tlayer_opt[0],verbose_opt[0]); inputReader.close(); } } else{ - totalSamples=trainingReader.readDataImageShape(trainingMap,fields,start_opt[0],end_opt[0],label_opt[0],verbose_opt[0]); + totalSamples=trainingReader.readDataImageOgr(trainingMap,fields,start_opt[0],end_opt[0],label_opt[0],tlayer_opt[0],verbose_opt[0]); if(input_opt.size()){ ImgReaderOgr inputReader(input_opt[0]); - totalTestSamples=inputReader.readDataImageShape(testMap,fields,start_opt[0],end_opt[0],label_opt[0],verbose_opt[0]); + totalTestSamples=inputReader.readDataImageOgr(testMap,fields,start_opt[0],end_opt[0],label_opt[0],tlayer_opt[0],verbose_opt[0]); inputReader.close(); } trainingReader.close(); diff --git a/src/apps/pksvm.cc b/src/apps/pksvm.cc index cead84e..38e835f 100644 --- a/src/apps/pksvm.cc +++ b/src/apps/pksvm.cc @@ -49,8 +49,9 @@ int main(int argc, char *argv[]) //--------------------------- command line options ------------------------------------ Optionpk<string> input_opt("i", "input", "input image"); - Optionpk<string> training_opt("t", "training", "training shape file. A single shape file contains all training features (must be set as: B0, B1, B2,...) for all classes (class numbers identified by label option). Use multiple training files for bootstrap aggregation (alternative to the bag and bsize options, where a random subset is taken from a single training file)"); - Optionpk<string> label_opt("label", "label", "identifier for class label in training shape file.","label"); + Optionpk<string> training_opt("t", "training", "training vector file. A single vector file contains all training features (must be set as: B0, B1, B2,...) for all classes (class numbers identified by label option). Use multiple training files for bootstrap aggregation (alternative to the bag and bsize options, where a random subset is taken from a single training file)"); + Optionpk<string> tlayer_opt("tln", "tln", "training layer name",""); + Optionpk<string> label_opt("label", "label", "identifier for class label in training vector file.","label"); Optionpk<unsigned int> balance_opt("bal", "balance", "balance the input data to this number of samples for each class", 0); Optionpk<bool> random_opt("random", "random", "in case of balance, randomize input data", true); Optionpk<int> minSize_opt("min", "min", "if number of training pixels is less then min, do not take this class into account (0: consider all classes)", 0); @@ -99,6 +100,7 @@ int main(int argc, char *argv[]) try{ doProcess=input_opt.retrieveOption(argc,argv); training_opt.retrieveOption(argc,argv); + tlayer_opt.retrieveOption(argc,argv); label_opt.retrieveOption(argc,argv); balance_opt.retrieveOption(argc,argv); random_opt.retrieveOption(argc,argv); @@ -174,7 +176,7 @@ int main(int argc, char *argv[]) std::cout << "input filename: " << input_opt[0] << std::endl; if(mask_opt.size()) std::cout << "mask filename: " << mask_opt[0] << std::endl; - std::cout << "training shape file: " << std::endl; + std::cout << "training vector file: " << std::endl; for(int ifile=0;ifile<training_opt.size();++ifile) std::cout << training_opt[ifile] << std::endl; std::cout << "verbose: " << verbose_opt[0] << std::endl; @@ -249,13 +251,13 @@ int main(int argc, char *argv[]) trainingMap.clear(); trainingPixels.clear(); if(verbose_opt[0]>=1) - std::cout << "reading imageShape file " << training_opt[0] << std::endl; + std::cout << "reading imageVector file " << training_opt[0] << std::endl; try{ ImgReaderOgr trainingReaderBag(training_opt[ibag]); if(band_opt.size()) - totalSamples=trainingReaderBag.readDataImageShape(trainingMap,fields,band_opt,label_opt[0],verbose_opt[0]); + totalSamples=trainingReaderBag.readDataImageOgr(trainingMap,fields,band_opt,label_opt[0],tlayer_opt[0],verbose_opt[0]); else - totalSamples=trainingReaderBag.readDataImageShape(trainingMap,fields,start_opt[0],end_opt[0],label_opt[0],verbose_opt[0]); + totalSamples=trainingReaderBag.readDataImageOgr(trainingMap,fields,start_opt[0],end_opt[0],tlayer_opt[0],label_opt[0],verbose_opt[0]); if(trainingMap.size()<2){ string errorstring="Error: could not read at least two classes from training file, did you provide class labels in training sample (see option label)?"; throw(errorstring); @@ -960,9 +962,9 @@ int main(int argc, char *argv[]) classImageBag.close(); classImageOut.close(); } - else{//classify shape file + else{//classify vector file cm.clearResults(); - //notice that fields have already been set by readDataImageShape (taking into account appropriate bands) + //notice that fields have already been set by readDataImageOgr (taking into account appropriate bands) for(int ivalidation=0;ivalidation<input_opt.size();++ivalidation){ if(output_opt.size()) assert(output_opt.size()==input_opt.size()); diff --git a/src/imageclasses/ImgReaderOgr.cc b/src/imageclasses/ImgReaderOgr.cc index 500dac9..8472796 100644 --- a/src/imageclasses/ImgReaderOgr.cc +++ b/src/imageclasses/ImgReaderOgr.cc @@ -217,10 +217,11 @@ std::ostream& operator<<(std::ostream& theOstream, ImgReaderOgr& theImageReader) // } // } -unsigned int ImgReaderOgr::readDataImageShape(std::map<std::string,Vector2d<float> > &mapPixels, //[classNr][pixelNr][bandNr], +unsigned int ImgReaderOgr::readDataImageOgr(std::map<std::string,Vector2d<float> > &mapPixels, //[classNr][pixelNr][bandNr], std::vector<std::string>& fields, const std::vector<short>& bands, const std::string& label, + const std::string& layername, int verbose) { mapPixels.clear(); @@ -230,6 +231,10 @@ unsigned int ImgReaderOgr::readDataImageShape(std::map<std::string,Vector2d<floa if(verbose) std::cout << "reading shape file " << m_filename << std::endl; for(int ilayer=0;ilayer<getLayerCount();++ilayer){ + std::string currentLayername=getLayer(ilayer)->GetName(); + if(!layername.empty()) + if(currentLayername!=layername) + continue; try{ //only retain bands in fields getFields(fields,ilayer); @@ -295,11 +300,12 @@ unsigned int ImgReaderOgr::readDataImageShape(std::map<std::string,Vector2d<floa return totalSamples; } -unsigned int ImgReaderOgr::readDataImageShape(std::map<std::string,Vector2d<float> > &mapPixels, //[classNr][pixelNr][bandNr], +unsigned int ImgReaderOgr::readDataImageOgr(std::map<std::string,Vector2d<float> > &mapPixels, //[classNr][pixelNr][bandNr], std::vector<std::string>& fields, double start, double end, const std::string& label, + const std::string& layername, int verbose) { mapPixels.clear(); @@ -309,6 +315,10 @@ unsigned int ImgReaderOgr::readDataImageShape(std::map<std::string,Vector2d<floa if(verbose) std::cout << "reading shape file " << m_filename << std::endl; for(int ilayer=0;ilayer<getLayerCount();++ilayer){ + std::string currentLayername=getLayer(ilayer)->GetName(); + if(!layername.empty()) + if(currentLayername!=layername) + continue; try{ //only retain bands in fields getFields(fields,ilayer); diff --git a/src/imageclasses/ImgReaderOgr.h b/src/imageclasses/ImgReaderOgr.h index 36653e6..12e48c4 100644 --- a/src/imageclasses/ImgReaderOgr.h +++ b/src/imageclasses/ImgReaderOgr.h @@ -48,18 +48,20 @@ public: template <typename T> int readData(Vector2d<T>& data, const OGRFieldType& fieldType, std::vector<std::string>& fields, int layer=0, bool pos=false, bool verbose=false);//default layer 0 and no pos information in data template <typename T> int readData(std::map<int,Vector2d<T> >& data, const OGRFieldType& fieldType, std::vector<std::string>& fields, const std::string& label, int layer=0, bool pos=false, bool verbose=false);//default layer 0 and no pos information in data template <typename T> int readData(std::map<std::string,Vector2d<T> >& data, const OGRFieldType& fieldType, std::vector<std::string>& fields, const std::string& label, int layer=0, bool pos=false, bool verbose=false);//default layer 0 and no pos information in data - unsigned int readDataImageShape(std::map<std::string,Vector2d<float> > &mapPixels, //[classNr][pixelNr][bandNr], - std::vector<std::string>& fields, - const std::vector<short>& bands, - const std::string& label, - int verbose=false); + unsigned int readDataImageOgr(std::map<std::string,Vector2d<float> > &mapPixels, //[classNr][pixelNr][bandNr], + std::vector<std::string>& fields, + const std::vector<short>& bands, + const std::string& label, + const std::string& layername=std::string(), + int verbose=false); - unsigned int readDataImageShape(std::map<std::string,Vector2d<float> > &mapPixels, //[classNr][pixelNr][bandNr], - std::vector<std::string>& fields, - double start, - double end, - const std::string& label, - int verbose=false); + unsigned int readDataImageOgr(std::map<std::string,Vector2d<float> > &mapPixels, //[classNr][pixelNr][bandNr], + std::vector<std::string>& fields, + double start, + double end, + const std::string& label, + const std::string& layername=std::string(), + int verbose=false); void shape2ascii(std::ostream& theOstream, const std::string& pointname, int layer=0, bool verbose=false); unsigned long int getFeatureCount(int layer=0) const; -- 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