From 48e8446297d8e3df99f324dae4133f36f4dcb0c4 Mon Sep 17 00:00:00 2001 From: Mohcine Chraibi <m.chraibi@fz-juelich.de> Date: Fri, 15 Mar 2019 19:34:45 +0100 Subject: [PATCH] extract geometry txt --- src/MainWindow.cpp | 13 ++++++++++++- src/SaxParser.cpp | 27 +++++++++++++++++++++++++-- src/SaxParser.h | 2 +- 3 files changed, 38 insertions(+), 4 deletions(-) diff --git a/src/MainWindow.cpp b/src/MainWindow.cpp index 3c05ab0..79a5166 100755 --- a/src/MainWindow.cpp +++ b/src/MainWindow.cpp @@ -657,7 +657,18 @@ bool MainWindow::addPedestrianGroup(int groupID,QString fileName) auto&& geometry = _visualisationThread->getGeometry(); //try to get a geometry filename - QString geometry_file=SaxParser::extractGeometryFilename(fileName); + if(fileName.endsWith(".xml",Qt::CaseInsensitive)) + { + Debug::Messages("Extract geometry file from <xml> trajectories"); + QString geometry_file=SaxParser::extractGeometryFilename(fileName); + } + else + { + Debug::Messages("Extract geometry file from <txt> trajectories"); + QString geometry_file=SaxParser::extractGeometryFilenameTXT(fileName); + } + + Debug::Messages("MainWindow::addPedestrianGroup: geometry name: <%s>", geometry_file.toStdString().c_str()); // if xml is detected, just load and show the geometry then exit if(geometry_file.endsWith(".xml",Qt::CaseInsensitive)) { diff --git a/src/SaxParser.cpp b/src/SaxParser.cpp index 5f082b0..fca1609 100644 --- a/src/SaxParser.cpp +++ b/src/SaxParser.cpp @@ -1103,6 +1103,31 @@ QString SaxParser::extractGeometryFilename(QString &filename) return ""; } +QString SaxParser::extractGeometryFilenameTXT(QString &filename) +{ + QString extracted_geo_name=""; + QFile file(filename); + QString line; + if (file.open(QIODevice::ReadOnly | QIODevice::Text)) { + QTextStream in(&file); + while (!in.atEnd()) { + //look for a line with + line = in.readLine(); + std::cout << " >> " >> line >> endl; + if(line.split(":").size()==2) + { + if(line.split(":")[0] == "#geometry") + { + extracted_geo_name = line.split(":")[1] + } + } + }// while + } // if open + cout << ">> geo: " << extracted_geo_name << endl; + return extracted_geo_name; +} + + void SaxParser::parseGeometryXMLV04(QString filename, GeometryFactory& geoFac) { cout << "parsing 04\n" ; @@ -1371,8 +1396,6 @@ bool SaxParser::ParseTxtFormat(const QString &fileName, SyncData* dataset, doubl int agentID=-1 ; int frameID=-1; double color=155 ; - std::cout << pieces.size() << "\n"; - switch(pieces.size()) { case 5: diff --git a/src/SaxParser.h b/src/SaxParser.h index c953dcc..3ccc0d4 100644 --- a/src/SaxParser.h +++ b/src/SaxParser.h @@ -77,7 +77,7 @@ public: /// take a large file and find the geometry file location. static QString extractGeometryFilename(QString& filename); - + static QString SaxParser::extractGeometryFilenameTXT(QString &filename); /// parse the txt file format static bool ParseTxtFormat(const QString& fileName, SyncData* dataset, double * fps); -- GitLab