[pktools] 370/375: exceptions in pkextract
Bas Couwenberg
sebastic at xs4all.nl
Wed Dec 3 21:54:31 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 54aebed9b198eb125d1d084428bd3cb9b98edebf
Author: Pieter Kempeneers <kempenep at gmail.com>
Date: Sun Nov 30 14:31:03 2014 +0100
exceptions in pkextract
---
src/apps/pkextract.cc | 484 ++++++++++++++++++++++++++------------------------
1 file changed, 247 insertions(+), 237 deletions(-)
diff --git a/src/apps/pkextract.cc b/src/apps/pkextract.cc
index d5686c4..8452fab 100644
--- a/src/apps/pkextract.cc
+++ b/src/apps/pkextract.cc
@@ -1057,19 +1057,26 @@ int main(int argc, char *argv[])
windowValues[iband].push_back(value);
}
else{
- if(verbose_opt[0]>1)
- std::cout << "set field " << fieldname_opt[iband] << " to " << value << std::endl;
- switch( fieldType ){
- case OFTInteger:
- case OFTReal:
- writePointFeature->SetField(fieldname_opt[iband].c_str(),value);
- break;
- case OFTString:
- writePointFeature->SetField(fieldname_opt[iband].c_str(),type2string<double>(value).c_str());
- break;
- default://not supported
- assert(0);
- break;
+ try{
+ if(verbose_opt[0]>1)
+ std::cout << "set field " << fieldname_opt[iband] << " to " << value << std::endl;
+ switch( fieldType ){
+ case OFTInteger:
+ case OFTReal:
+ writePointFeature->SetField(fieldname_opt[iband].c_str(),value);
+ break;
+ case OFTString:
+ writePointFeature->SetField(fieldname_opt[iband].c_str(),type2string<double>(value).c_str());
+ break;
+ default://not supported
+ std::string errorString="field type not supported";
+ throw(errorString);
+ break;
+ }
+ }
+ catch(std::string e){
+ std::cout << e << std::endl;
+ exit(1);
}
}//else
}//iband
@@ -1091,7 +1098,7 @@ int main(int argc, char *argv[])
throw(errorString);
}
}
- //destroy feature
+ //destroy feature
OGRFeature::DestroyFeature( writePointFeature );
++ntotalvalid;
if(verbose_opt[0])
@@ -1150,72 +1157,91 @@ int main(int argc, char *argv[])
std::cout << "number of points in window: " << nPointWindow << std::endl;
int theBand=(band_opt.size()) ? band_opt[index] : index;
- if(verbose_opt[0]>1)
- std::cout << "set field " << fieldname_opt[index] << " to " << theValue << std::endl;
- switch( fieldType ){
- case OFTInteger:
- case OFTReal:
- if(polygon_opt[0])
- writePolygonFeature->SetField(fieldname_opt[index].c_str(),theValue);
- else
- writeCentroidFeature->SetField(fieldname_opt[index].c_str(),theValue);
- break;
- case OFTString:
- if(polygon_opt[0])
- writePolygonFeature->SetField(fieldname_opt[index].c_str(),type2string<double>(theValue).c_str());
- else
- writeCentroidFeature->SetField(fieldname_opt[index].c_str(),type2string<double>(theValue).c_str());
- break;
- default://not supported
- std::cout << "field type not supported yet..." << std::endl;
- break;
+ try{
+ if(verbose_opt[0]>1)
+ std::cout << "set field " << fieldname_opt[index] << " to " << theValue << std::endl;
+ switch( fieldType ){
+ case OFTInteger:
+ case OFTReal:
+ if(polygon_opt[0])
+ writePolygonFeature->SetField(fieldname_opt[index].c_str(),theValue);
+ else
+ writeCentroidFeature->SetField(fieldname_opt[index].c_str(),theValue);
+ break;
+ case OFTString:
+ if(polygon_opt[0])
+ writePolygonFeature->SetField(fieldname_opt[index].c_str(),type2string<double>(theValue).c_str());
+ else
+ writeCentroidFeature->SetField(fieldname_opt[index].c_str(),type2string<double>(theValue).c_str());
+ break;
+ default://not supported
+ std::string errorString="field type not supported";
+ throw(errorString);
+ break;
+ }
+ }
+ catch(std::string e){
+ std::cout << e << std::endl;
+ exit(1);
}
}
}
else{//ruleMap[rule_opt[0]] is not rule::point
double theValue=0;
for(int index=0;index<windowValues.size();++index){
- if(windowValues[index].size()!=buffer_opt[0]*buffer_opt[0]){
- cerr << "Error: windowValues[index].size()=" << windowValues[index].size() << endl;
- }
- if(ruleMap[rule_opt[0]]==rule::mean)
- theValue=stat.mean(windowValues[index]);
- else if(ruleMap[rule_opt[0]]==rule::stdev)
- theValue=sqrt(stat.var(windowValues[index]));
- else if(ruleMap[rule_opt[0]]==rule::median)
- theValue=stat.median(windowValues[index]);
- else if(ruleMap[rule_opt[0]]==rule::sum)
- theValue=stat.sum(windowValues[index]);
- else if(ruleMap[rule_opt[0]]==rule::max)
- theValue=stat.mymax(windowValues[index]);
- else if(ruleMap[rule_opt[0]]==rule::min)
- theValue=stat.mymin(windowValues[index]);
- else{//rule::centroid
- if(verbose_opt[0])
- std::cout << "number of points in polygon: " << nPointWindow << std::endl;
- assert(nPointWindow<=1);
- assert(nPointWindow==windowValues[index].size());
- theValue=windowValues[index].back();
+ try{
+ if(windowValues[index].size()!=buffer_opt[0]*buffer_opt[0]){
+ std::string errorString="windowValues[index].size()!=buffer*buffer";
+ throw(errorString);
+ }
+ if(ruleMap[rule_opt[0]]==rule::mean)
+ theValue=stat.mean(windowValues[index]);
+ else if(ruleMap[rule_opt[0]]==rule::stdev)
+ theValue=sqrt(stat.var(windowValues[index]));
+ else if(ruleMap[rule_opt[0]]==rule::median)
+ theValue=stat.median(windowValues[index]);
+ else if(ruleMap[rule_opt[0]]==rule::sum)
+ theValue=stat.sum(windowValues[index]);
+ else if(ruleMap[rule_opt[0]]==rule::max)
+ theValue=stat.mymax(windowValues[index]);
+ else if(ruleMap[rule_opt[0]]==rule::min)
+ theValue=stat.mymin(windowValues[index]);
+ else if(ruleMap[rule_opt[0]]==rule::centroid){
+ if(verbose_opt[0])
+ std::cout << "number of points in polygon: " << nPointWindow << std::endl;
+ assert(nPointWindow<=1);
+ assert(nPointWindow==windowValues[index].size());
+ theValue=windowValues[index].back();
+ }
+ else{
+ std::string errorString="rule not supported";
+ throw(errorString);
+ }
+ if(verbose_opt[0]>1)
+ std::cout << "set field " << fieldname_opt[index] << " to " << theValue << std::endl;
+ switch( fieldType ){
+ case OFTInteger:
+ case OFTReal:
+ if(polygon_opt[0])
+ writePolygonFeature->SetField(fieldname_opt[index].c_str(),theValue);
+ else
+ writeCentroidFeature->SetField(fieldname_opt[index].c_str(),theValue);
+ break;
+ case OFTString:
+ if(polygon_opt[0])
+ writePolygonFeature->SetField(fieldname_opt[index].c_str(),type2string<double>(theValue).c_str());
+ else
+ writeCentroidFeature->SetField(fieldname_opt[index].c_str(),type2string<double>(theValue).c_str());
+ break;
+ default://not supported
+ std::string errorString="field type not supported";
+ throw(errorString);
+ break;
+ }
}
- if(verbose_opt[0]>1)
- std::cout << "set field " << fieldname_opt[index] << " to " << theValue << std::endl;
- switch( fieldType ){
- case OFTInteger:
- case OFTReal:
- if(polygon_opt[0])
- writePolygonFeature->SetField(fieldname_opt[index].c_str(),theValue);
- else
- writeCentroidFeature->SetField(fieldname_opt[index].c_str(),theValue);
- break;
- case OFTString:
- if(polygon_opt[0])
- writePolygonFeature->SetField(fieldname_opt[index].c_str(),type2string<double>(theValue).c_str());
- else
- writeCentroidFeature->SetField(fieldname_opt[index].c_str(),type2string<double>(theValue).c_str());
- break;
- default://not supported
- std::cout << "field type not supported yet..." << std::endl;
- break;
+ catch(std::string e){
+ std::cout << e << std::endl;
+ exit(1);
}
}
}
@@ -1615,70 +1641,87 @@ int main(int argc, char *argv[])
if(verbose_opt[0])
std::cout << "number of points in polygon: " << nPointPolygon << std::endl;
int theBand=(band_opt.size()) ? band_opt[index] : index;
-
- if(verbose_opt[0]>1)
- std::cout << "set field " << fieldname_opt[index] << " to " << theValue << std::endl;
- switch( fieldType ){
- case OFTInteger:
- case OFTReal:
- if(polygon_opt[0])
- writePolygonFeature->SetField(fieldname_opt[index].c_str(),theValue);
- else
- writeCentroidFeature->SetField(fieldname_opt[index].c_str(),theValue);
- break;
- case OFTString:
- if(polygon_opt[0])
- writePolygonFeature->SetField(fieldname_opt[index].c_str(),type2string<double>(theValue).c_str());
- else
- writeCentroidFeature->SetField(fieldname_opt[index].c_str(),type2string<double>(theValue).c_str());
- break;
- default://not supported
- std::cout << "field type not supported yet..." << std::endl;
- break;
+ try{
+ if(verbose_opt[0]>1)
+ std::cout << "set field " << fieldname_opt[index] << " to " << theValue << std::endl;
+ switch( fieldType ){
+ case OFTInteger:
+ case OFTReal:
+ if(polygon_opt[0])
+ writePolygonFeature->SetField(fieldname_opt[index].c_str(),theValue);
+ else
+ writeCentroidFeature->SetField(fieldname_opt[index].c_str(),theValue);
+ break;
+ case OFTString:
+ if(polygon_opt[0])
+ writePolygonFeature->SetField(fieldname_opt[index].c_str(),type2string<double>(theValue).c_str());
+ else
+ writeCentroidFeature->SetField(fieldname_opt[index].c_str(),type2string<double>(theValue).c_str());
+ break;
+ default://not supported
+ std::string errorString="field type not supported";
+ throw(errorString);
+ break;
+ }
+ }
+ catch(std::string e){
+ std::cout << e << std::endl;
+ exit(1);
}
}
}
else{//ruleMap[rule_opt[0]] is not rule::point
double theValue=0;
for(int index=0;index<polyValues.size();++index){
- if(ruleMap[rule_opt[0]]==rule::mean)
- theValue=stat.mean(polyValues[index]);
- else if(ruleMap[rule_opt[0]]==rule::stdev)
- theValue=sqrt(stat.var(polyValues[index]));
- else if(ruleMap[rule_opt[0]]==rule::median)
- theValue=stat.median(polyValues[index]);
- else if(ruleMap[rule_opt[0]]==rule::sum)
- theValue=stat.sum(polyValues[index]);
- else if(ruleMap[rule_opt[0]]==rule::max)
- theValue=stat.mymax(polyValues[index]);
- else if(ruleMap[rule_opt[0]]==rule::min)
- theValue=stat.mymin(polyValues[index]);
- else{//rule::centroid
- if(verbose_opt[0])
- std::cout << "number of points in polygon: " << nPointPolygon << std::endl;
- assert(nPointPolygon<=1);
- assert(nPointPolygon==polyValues[index].size());
- theValue=polyValues[index].back();
+ try{
+ if(ruleMap[rule_opt[0]]==rule::mean)
+ theValue=stat.mean(polyValues[index]);
+ else if(ruleMap[rule_opt[0]]==rule::stdev)
+ theValue=sqrt(stat.var(polyValues[index]));
+ else if(ruleMap[rule_opt[0]]==rule::median)
+ theValue=stat.median(polyValues[index]);
+ else if(ruleMap[rule_opt[0]]==rule::sum)
+ theValue=stat.sum(polyValues[index]);
+ else if(ruleMap[rule_opt[0]]==rule::max)
+ theValue=stat.mymax(polyValues[index]);
+ else if(ruleMap[rule_opt[0]]==rule::min)
+ theValue=stat.mymin(polyValues[index]);
+ else if(ruleMap[rule_opt[0]]==rule::centroid){
+ if(verbose_opt[0])
+ std::cout << "number of points in polygon: " << nPointPolygon << std::endl;
+ assert(nPointPolygon<=1);
+ assert(nPointPolygon==polyValues[index].size());
+ theValue=polyValues[index].back();
+ }
+ else{
+ std::string errorString="rule not supported";
+ throw(errorString);
+ }
+ if(verbose_opt[0]>1)
+ std::cout << "set field " << fieldname_opt[index] << " to " << theValue << std::endl;
+ switch( fieldType ){
+ case OFTInteger:
+ case OFTReal:
+ if(polygon_opt[0])
+ writePolygonFeature->SetField(fieldname_opt[index].c_str(),theValue);
+ else
+ writeCentroidFeature->SetField(fieldname_opt[index].c_str(),theValue);
+ break;
+ case OFTString:
+ if(polygon_opt[0])
+ writePolygonFeature->SetField(fieldname_opt[index].c_str(),type2string<double>(theValue).c_str());
+ else
+ writeCentroidFeature->SetField(fieldname_opt[index].c_str(),type2string<double>(theValue).c_str());
+ break;
+ default:
+ std::string errorString="field type not supported";
+ throw(errorString);
+ break;
+ }
}
- if(verbose_opt[0]>1)
- std::cout << "set field " << fieldname_opt[index] << " to " << theValue << std::endl;
- switch( fieldType ){
- case OFTInteger:
- case OFTReal:
- if(polygon_opt[0])
- writePolygonFeature->SetField(fieldname_opt[index].c_str(),theValue);
- else
- writeCentroidFeature->SetField(fieldname_opt[index].c_str(),theValue);
- break;
- case OFTString:
- if(polygon_opt[0])
- writePolygonFeature->SetField(fieldname_opt[index].c_str(),type2string<double>(theValue).c_str());
- else
- writeCentroidFeature->SetField(fieldname_opt[index].c_str(),type2string<double>(theValue).c_str());
- break;
- default://not supported
- std::cout << "field type not supported yet..." << std::endl;
- break;
+ catch(std::string e){
+ std::cout << e << std::endl;
+ exit(1);
}
}
}
@@ -2085,120 +2128,87 @@ int main(int argc, char *argv[])
if(verbose_opt[0])
std::cout << "number of points in polygon: " << nPointPolygon << std::endl;
int theBand=(band_opt.size()) ? band_opt[index] : index;
-
- if(verbose_opt[0]>1)
- std::cout << "set field " << fieldname_opt[index] << " to " << theValue << std::endl;
- switch( fieldType ){
- case OFTInteger:
- case OFTReal:
- if(polygon_opt[0])
- writePolygonFeature->SetField(fieldname_opt[index].c_str(),theValue);
- else
- writeCentroidFeature->SetField(fieldname_opt[index].c_str(),theValue);
- break;
- case OFTString:
- if(polygon_opt[0])
- writePolygonFeature->SetField(fieldname_opt[index].c_str(),type2string<double>(theValue).c_str());
- else
- writeCentroidFeature->SetField(fieldname_opt[index].c_str(),type2string<double>(theValue).c_str());
- break;
- // case OFTRealList:{
- // int fieldIndex;
- // int nCount;
- // const double *theList;
- // vector<double> vectorList;
- // if(polygon_opt[0]){
- // fieldIndex=writePolygonFeature->GetFieldIndex(fieldname_opt[index].c_str());
- // theList=writePolygonFeature->GetFieldAsDoubleList(fieldIndex,&nCount);
- // vectorList.resize(nCount+1);
- // for(int index=0;index<nCount;++index)
- // vectorList[index]=theList[index];
- // vectorList[nCount]=theValue;
- // writePolygonFeature->SetField(fieldIndex,vectorList.size(),&(vectorList[0]));
- // }
- // else{
- // fieldIndex=writeCentroidFeature->GetFieldIndex(fieldname_opt[index].c_str());
- // theList=writeCentroidFeature->GetFieldAsDoubleList(fieldIndex,&nCount);
- // vectorList.resize(nCount+1);
- // for(int index=0;index<nCount;++index)
- // vectorList[index]=theList[index];
- // vectorList[nCount]=theValue;
- // writeCentroidFeature->SetField(fieldIndex,vectorList.size(),&(vectorList[0]));
- // }
- // break;
- // }
- default://not supported
- std::cout << "field type not supported yet..." << std::endl;
- break;
+ try{
+ if(verbose_opt[0]>1)
+ std::cout << "set field " << fieldname_opt[index] << " to " << theValue << std::endl;
+ switch( fieldType ){
+ case OFTInteger:
+ case OFTReal:
+ if(polygon_opt[0])
+ writePolygonFeature->SetField(fieldname_opt[index].c_str(),theValue);
+ else
+ writeCentroidFeature->SetField(fieldname_opt[index].c_str(),theValue);
+ break;
+ case OFTString:
+ if(polygon_opt[0])
+ writePolygonFeature->SetField(fieldname_opt[index].c_str(),type2string<double>(theValue).c_str());
+ else
+ writeCentroidFeature->SetField(fieldname_opt[index].c_str(),type2string<double>(theValue).c_str());
+ break;
+ default://not supported
+ std::string errorString="field type not supported";
+ throw(errorString);
+ break;
+ }
+ }
+ catch(std::string e){
+ std::cout << e << std::endl;
+ exit(1);
}
}
}
else{//ruleMap[rule_opt[0]] is not rule::point
double theValue=0;
for(int index=0;index<polyValues.size();++index){
- if(ruleMap[rule_opt[0]]==rule::mean)
- theValue=stat.mean(polyValues[index]);
- else if(ruleMap[rule_opt[0]]==rule::stdev)
- theValue=sqrt(stat.var(polyValues[index]));
- else if(ruleMap[rule_opt[0]]==rule::median)
- theValue=stat.median(polyValues[index]);
- else if(ruleMap[rule_opt[0]]==rule::sum)
- theValue=stat.sum(polyValues[index]);
- else if(ruleMap[rule_opt[0]]==rule::max)
- theValue=stat.mymax(polyValues[index]);
- else if(ruleMap[rule_opt[0]]==rule::min)
- theValue=stat.mymin(polyValues[index]);
- else{//rule::centroid
- if(verbose_opt[0])
- std::cout << "number of points in polygon: " << nPointPolygon << std::endl;
- assert(nPointPolygon<=1);
- assert(nPointPolygon==polyValues[index].size());
- theValue=polyValues[index].back();
+ try{
+ if(ruleMap[rule_opt[0]]==rule::mean)
+ theValue=stat.mean(polyValues[index]);
+ else if(ruleMap[rule_opt[0]]==rule::stdev)
+ theValue=sqrt(stat.var(polyValues[index]));
+ else if(ruleMap[rule_opt[0]]==rule::median)
+ theValue=stat.median(polyValues[index]);
+ else if(ruleMap[rule_opt[0]]==rule::sum)
+ theValue=stat.sum(polyValues[index]);
+ else if(ruleMap[rule_opt[0]]==rule::max)
+ theValue=stat.mymax(polyValues[index]);
+ else if(ruleMap[rule_opt[0]]==rule::min)
+ theValue=stat.mymin(polyValues[index]);
+ else if(ruleMap[rule_opt[0]]==rule::centroid){
+ if(verbose_opt[0])
+ std::cout << "number of points in polygon: " << nPointPolygon << std::endl;
+ assert(nPointPolygon<=1);
+ assert(nPointPolygon==polyValues[index].size());
+ theValue=polyValues[index].back();
+ }
+ else{
+ std::string errorString="rule not supported";
+ throw(errorString);
+ }
+ if(verbose_opt[0]>1)
+ std::cout << "set field " << fieldname_opt[index] << " to " << theValue << std::endl;
+ switch( fieldType ){
+ case OFTInteger:
+ case OFTReal:
+ if(polygon_opt[0])
+ writePolygonFeature->SetField(fieldname_opt[index].c_str(),theValue);
+ else
+ writeCentroidFeature->SetField(fieldname_opt[index].c_str(),theValue);
+ break;
+ case OFTString:
+ if(polygon_opt[0])
+ writePolygonFeature->SetField(fieldname_opt[index].c_str(),type2string<double>(theValue).c_str());
+ else
+ writeCentroidFeature->SetField(fieldname_opt[index].c_str(),type2string<double>(theValue).c_str());
+ break;
+ default://not supported
+ std::string errorString="field type not supported";
+ throw(errorString);
+ break;
+ }
}
- if(verbose_opt[0]>1)
- std::cout << "set field " << fieldname_opt[index] << " to " << theValue << std::endl;
- switch( fieldType ){
- case OFTInteger:
- case OFTReal:
- if(polygon_opt[0])
- writePolygonFeature->SetField(fieldname_opt[index].c_str(),theValue);
- else
- writeCentroidFeature->SetField(fieldname_opt[index].c_str(),theValue);
- break;
- case OFTString:
- if(polygon_opt[0])
- writePolygonFeature->SetField(fieldname_opt[index].c_str(),type2string<double>(theValue).c_str());
- else
- writeCentroidFeature->SetField(fieldname_opt[index].c_str(),type2string<double>(theValue).c_str());
- break;
- // case OFTRealList:{
- // int fieldIndex;
- // int nCount;
- // const double *theList;
- // vector<double> vectorList;
- // if(polygon_opt[0]){
- // fieldIndex=writePolygonFeature->GetFieldIndex(fieldname_opt[index].c_str());
- // theList=writePolygonFeature->GetFieldAsDoubleList(fieldIndex,&nCount);
- // vectorList.resize(nCount+1);
- // for(int index=0;index<nCount;++index)
- // vectorList[index]=theList[index];
- // vectorList[nCount]=theValue;
- // writePolygonFeature->SetField(fieldIndex,vectorList.size(),&(vectorList[0]));
- // }
- // else{
- // fieldIndex=writeCentroidFeature->GetFieldIndex(fieldname_opt[index].c_str());
- // theList=writeCentroidFeature->GetFieldAsDoubleList(fieldIndex,&nCount);
- // vectorList.resize(nCount+1);
- // for(int index=0;index<nCount;++index)
- // vectorList[index]=theList[index];
- // vectorList[nCount]=theValue;
- // writeCentroidFeature->SetField(fieldIndex,vectorList.size(),&(vectorList[0]));
- // }
- // break;
- // }
- default://not supported
- std::cout << "field type not supported yet..." << std::endl;
- break;
+ catch(std::string e){
+ std::cout << e << std::endl;
+ exit(1);
}
}
}
--
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