diff --git a/Code/IO/otbPleiadesImageMetadataInterface.cxx b/Code/IO/otbPleiadesImageMetadataInterface.cxx index a7663ef3139c9346e51b3663892c9ee1a8a60c2a..314bfb6e871272a1da289110cfa618c51ab5d270 100644 --- a/Code/IO/otbPleiadesImageMetadataInterface.cxx +++ b/Code/IO/otbPleiadesImageMetadataInterface.cxx @@ -140,7 +140,7 @@ PleiadesImageMetadataInterface::GetSolarIrradiance() const }; // tolerance threshold double tolerance = 0.05; - + if (outputValues.size() == 1) { // Pan @@ -558,6 +558,7 @@ PleiadesImageMetadataInterface outputValuesVariableLengthVector[i] = outputValues[this->BandIndexToWavelengthPosition(i)]; } + std::cout << "physical gain " << outputValuesVariableLengthVector << std::endl; return outputValuesVariableLengthVector; } @@ -862,9 +863,10 @@ PleiadesImageMetadataInterface // Panchromatic case if (nbBands == 1) { - if (sensorId == "PHR 1A") + if (sensorId.find("PHR") != std::string::npos) + //if (sensorId == "PHR 1A") { - const float b0[209] = + const float pan[209] = { 0.0000000, 0.0000000, @@ -1077,8 +1079,8 @@ PleiadesImageMetadataInterface 0.0000000 }; //add panchromatic band to the temporary list - const std::vector<float> vb0 (b0, b0 + sizeof(b0) / sizeof(float) ); - tmpSpectralBandList.push_back(vb0); + const std::vector<float> vpan (pan, pan + sizeof(pan) / sizeof(float) ); + tmpSpectralBandList.push_back(vpan); } else { @@ -1087,9 +1089,8 @@ PleiadesImageMetadataInterface } else if (nbBands > 1 && nbBands < 5) { - //FIXME add other instrument relative spectral response (not only HRG) - //band B0 - const float b1[209] = + //band B0 (blue band) + const float b0[209] = { 0.0098681, 0.0293268, @@ -1301,7 +1302,8 @@ PleiadesImageMetadataInterface 0.0057120, 0.0048136 }; - const float b2[209] = + //B1 green band + const float b1[209] = { 0.0000144, 0.0000143, @@ -1513,7 +1515,8 @@ PleiadesImageMetadataInterface 0.0079795, 0.0057516 }; - const float b3[209] = + //B2 red band + const float b2[209] = { 0.0097386, 0.0035306, @@ -1725,7 +1728,8 @@ PleiadesImageMetadataInterface 0.0125129, 0.0086117 }; - const float b4[209] = + //B3 nir band + const float b3[209] = { 0.0024163, 0.0017305, @@ -1938,21 +1942,22 @@ PleiadesImageMetadataInterface 0.0061346 }; //Add multispectral bands to the temporary list + const std::vector<float> vb0 (b0, b0 + sizeof(b0) / sizeof(float) ); const std::vector<float> vb1 (b1, b1 + sizeof(b1) / sizeof(float) ); - tmpSpectralBandList.push_back(vb1); const std::vector<float> vb2 (b2, b2 + sizeof(b2) / sizeof(float) ); - tmpSpectralBandList.push_back(vb2); const std::vector<float> vb3 (b3, b3 + sizeof(b3) / sizeof(float) ); + //For Pleiades MS image the order of band in 1A product is: B2 B1 B0 B3 + //(BandIndexToWavelength method could be used here) + tmpSpectralBandList.push_back(vb2); + tmpSpectralBandList.push_back(vb1); + tmpSpectralBandList.push_back(vb0); tmpSpectralBandList.push_back(vb3); - const std::vector<float> vb4 (b4, b4 + sizeof(b4) / sizeof(float) ); - tmpSpectralBandList.push_back(vb4); - } else { itkExceptionMacro(<< "Invalid number of bands..."); } - + unsigned int j = 0; for (std::list <std::vector<float> >::const_iterator it = tmpSpectralBandList.begin(); it != tmpSpectralBandList.end(); ++it) { @@ -1963,7 +1968,6 @@ PleiadesImageMetadataInterface wavelengthSpectralBand->GetNthElement(j)->SetUserStep(0.0025); ++j; } - return wavelengthSpectralBand; }