Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
42 changes: 37 additions & 5 deletions Libraries/VtkVgIO/vtkVgNitfMetaDataParser.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -86,7 +86,7 @@ bool vtkVgNitfMetaDataParser::ParseDateTime(
int mins = 0;
int secs = 0;
// Milliseconds
int ms = 0;
int ms = -1;

years = ConvertToInt(std::string(nitfTime, 0, 4)) - 1900;
months = ConvertToInt(std::string(nitfTime, 4, 2)) - 1;
Expand All @@ -108,12 +108,44 @@ bool vtkVgNitfMetaDataParser::ParseDateTime(
std::string msstr;
vtkVgNitfEngrda nitfEngdra;
vtkVgNitfMetaDataParser::ParseEngrda(tokens[1], nitfEngdra);
nitfEngdra.Get("milliseconds")->GetData(msstr);
auto mseconds = nitfEngdra.Get("milliseconds");
if (mseconds)
{
mseconds->GetData(msstr);

if (!msstr.empty())
{
ms = ConvertToInt(msstr);
}
}
}
}
}

if (!msstr.empty())
// If ms data not read from ENGRDA, look for it in the NITF_IMAGE_COMMENTS
if (ms < 0)
{
for (size_t i = 0; i < mdata.size(); ++i)
{
size_t found = mdata[i].find("NITF_IMAGE_COMMENTS");
if (found != std::string::npos)
{
tokens = vgStringUtils::Split(mdata[i], ' ');

// Format: " COLLECTION TIMESTAMP: 20150731184301.043659 UTC"
for (int i = 0; i < tokens.size() - 2; ++i)
{
ms = ConvertToInt(msstr);
if (tokens[i] == "COLLECTION" && tokens[i + 1] == "TIMESTAMP:")
{
// Split date/time in secs from data after the decimal point
tokens = vgStringUtils::Split(tokens[i + 2], '.');
// Make sure we have exactly 3 characters
tokens[1].resize(3, '0');
ms = ConvertToInt(tokens[1]);
}
}

break;
}
}
}
Expand All @@ -124,7 +156,7 @@ bool vtkVgNitfMetaDataParser::ParseDateTime(

boost::posix_time::ptime pt (boost::gregorian::date_from_tm(utm),
bt::hours(hrs) + bt::minutes(mins) + bt::seconds(secs) +
bt::milliseconds(ms));
bt::milliseconds(ms > -1 ? ms : 0));

// To micoseconds
time.SetTime(static_cast<double>(Convert(pt)) * 1e3);
Expand Down