diff --git a/Modules/Applications/AppClassification/app/otbComputeConfusionMatrix.cxx b/Modules/Applications/AppClassification/app/otbComputeConfusionMatrix.cxx index bfc3098307572a70f5024ecba61864422094c6cb..410fe23752ec0262837e8384e02c01b535d669db 100644 --- a/Modules/Applications/AppClassification/app/otbComputeConfusionMatrix.cxx +++ b/Modules/Applications/AppClassification/app/otbComputeConfusionMatrix.cxx @@ -217,7 +217,7 @@ private: { std::ofstream outFile; outFile.open( this->GetParameterString( "out" ).c_str() ); - outFile << contingencyTable->to_csv(); + outFile << contingencyTable->ToCsv(); outFile.close(); } diff --git a/Modules/Applications/AppClassification/app/otbTrainVectorClassifier.cxx b/Modules/Applications/AppClassification/app/otbTrainVectorClassifier.cxx index db1226b04ee267ad4a16ee3d96eaf987537e27b1..e65d49ae9e7e83bc805b02e647e20eb7ec3658d6 100644 --- a/Modules/Applications/AppClassification/app/otbTrainVectorClassifier.cxx +++ b/Modules/Applications/AppClassification/app/otbTrainVectorClassifier.cxx @@ -113,7 +113,7 @@ protected: // Write contingency table std::ofstream outFile; outFile.open( this->GetParameterString( "io.confmatout" ).c_str() ); - outFile << table->to_csv(); + outFile << table->ToCsv(); } } diff --git a/Modules/Learning/Unsupervised/include/otbContingencyTable.h b/Modules/Learning/Unsupervised/include/otbContingencyTable.h index 5ea3665f06fc761f6184ac82ca9667059ec2f9f7..bb3414f754bb70550dcdfe02382a1831628075b8 100644 --- a/Modules/Learning/Unsupervised/include/otbContingencyTable.h +++ b/Modules/Learning/Unsupervised/include/otbContingencyTable.h @@ -66,23 +66,8 @@ public: // Retrieve the maximal width from the matrix and the labels size_t maxWidth = 6; - for( size_t i = 0; i << contingencyTable.m_ProdLabels.size(); ++i ) - { - std::ostringstream oss; - oss << contingencyTable.m_ProdLabels[i]; - size_t length = oss.str().length(); - if( length > maxWidth ) - maxWidth = length; - } - - for( size_t i = 0; i << contingencyTable.m_RefLabels.size(); ++i ) - { - std::ostringstream oss; - oss << contingencyTable.m_RefLabels[i]; - size_t length = oss.str().length(); - if( length > maxWidth ) - maxWidth = length; - } + maxWidth = GetLabelsMaximumLength(contingencyTable.m_ProdLabels, maxWidth); + maxWidth = GetLabelsMaximumLength(contingencyTable.m_RefLabels, maxWidth); for( unsigned int i = 0; i < contingencyTable.matrix.Rows(); ++i ) { @@ -120,7 +105,7 @@ public: return o; } - std::string to_csv() const + std::string ToCsv() const { const char separator = ','; @@ -162,6 +147,20 @@ private: ContingencyTable(const Self &); //purposely not implemented void operator=(const Self &); //purposely not implemented + static size_t GetLabelsMaximumLength(const LabelList& labels, size_t maxWidth) + { + size_t tmpMaxWidth = maxWidth; + for( size_t i = 0; i < labels.size(); ++i ) + { + std::ostringstream oss; + oss << labels[i]; + size_t length = oss.str().length(); + if( length > tmpMaxWidth ) + tmpMaxWidth = length; + } + return tmpMaxWidth; + } + LabelList m_RefLabels; LabelList m_ProdLabels;