Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mapsme/omim.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVladiMihaylenko <vxmihaylenko@gmail.com>2018-07-20 18:44:35 +0300
committerVladimir Byko-Ianko <bykoianko@gmail.com>2018-07-23 20:06:39 +0300
commit1649eabbdbad63894a432c071dbfbf92a222acf9 (patch)
tree364864b951c1389ae320cf821a0aa253b4b62ffa /track_analyzing
parent36d15fb1d54a24ddbaa1adeeaada59cedd730a8f (diff)
[routing] Added comand to convert tracks into gpx.
Diffstat (limited to 'track_analyzing')
-rw-r--r--track_analyzing/track_analyzer/CMakeLists.txt1
-rw-r--r--track_analyzing/track_analyzer/cmd_gpx.cpp66
-rw-r--r--track_analyzing/track_analyzer/track_analyzer.cpp12
3 files changed, 78 insertions, 1 deletions
diff --git a/track_analyzing/track_analyzer/CMakeLists.txt b/track_analyzing/track_analyzer/CMakeLists.txt
index 186301fa3c..45cfbf3588 100644
--- a/track_analyzing/track_analyzer/CMakeLists.txt
+++ b/track_analyzing/track_analyzer/CMakeLists.txt
@@ -5,6 +5,7 @@ include_directories(${OMIM_ROOT}/3party/gflags/src)
set(
SRC
cmd_cpp_track.cpp
+ cmd_gpx.cpp
cmd_match.cpp
cmd_table.cpp
cmd_track.cpp
diff --git a/track_analyzing/track_analyzer/cmd_gpx.cpp b/track_analyzing/track_analyzer/cmd_gpx.cpp
new file mode 100644
index 0000000000..3c274cea2e
--- /dev/null
+++ b/track_analyzing/track_analyzer/cmd_gpx.cpp
@@ -0,0 +1,66 @@
+#include "track_analyzing/track.hpp"
+#include "track_analyzing/track_analyzer/utils.hpp"
+
+#include "routing_common/num_mwm_id.hpp"
+
+#include "storage/storage.hpp"
+
+#include "coding/file_name_utils.hpp"
+
+#include "base/logging.hpp"
+
+#include <cstdlib>
+#include <fstream>
+#include <memory>
+#include <string>
+
+namespace track_analyzing
+{
+using namespace routing;
+using namespace std;
+
+void CmdGPX(string const & logFile, string const & outputDirName, string const & userID)
+{
+ if (outputDirName.empty())
+ {
+ LOG(LERROR, ("Converting to GPX error: the path to the output files is empty"));
+ return;
+ }
+
+ shared_ptr<NumMwmIds> numMwmIds;
+ storage::Storage storage;
+ MwmToTracks mwmToTracks;
+ ParseTracks(logFile, numMwmIds, storage, mwmToTracks);
+ for (auto const & kv : mwmToTracks)
+ {
+ auto const & mwmName = numMwmIds->GetFile(kv.first).GetName();
+ size_t i = 0;
+ for (auto const & track : kv.second)
+ {
+ if (!userID.empty() && track.first != userID)
+ continue;
+
+ auto const path = my::JoinPath(outputDirName, mwmName + to_string(i) + ".gpx");
+ ofstream ofs(path, ofstream::out);
+ ofs << "<gpx>\n";
+ ofs << "<metadata>\n";
+ ofs << "<desc>" << track.first << "</desc>\n";
+ ofs << "</metadata>\n";
+ for (auto const & point : track.second)
+ {
+ ofs << "<wpt lat=\""
+ << point.m_latLon.lat
+ << "\" lon=\""
+ << point.m_latLon.lon << "\">"
+ << "</wpt>\n";
+ }
+
+ ofs << "</gpx>\n";
+ if (!userID.empty())
+ break;
+
+ ++i;
+ }
+ }
+}
+} // namespace track_analyzing
diff --git a/track_analyzing/track_analyzer/track_analyzer.cpp b/track_analyzing/track_analyzer/track_analyzer.cpp
index 92e7065217..392f4b4e38 100644
--- a/track_analyzing/track_analyzer/track_analyzer.cpp
+++ b/track_analyzing/track_analyzer/track_analyzer.cpp
@@ -7,6 +7,8 @@
#include "3party/gflags/src/gflags/gflags.h"
+#include <string>
+
using namespace std;
using namespace track_analyzing;
@@ -33,9 +35,11 @@ DEFINE_string_ext(cmd, "",
"tracks - prints track statistics\n"
"track - prints info about single track\n"
"cpptrack - prints track coords to insert them to cpp code\n"
- "table - prints csv table based on matched tracks\n");
+ "table - prints csv table based on matched tracks\n"
+ "gpx - convert raw logs into gpx files\n");
DEFINE_string_ext(in, "", "input log file name");
DEFINE_string(out, "", "output track file name");
+DEFINE_string_ext(output_dir, "", "output dir for gpx files");
DEFINE_string_ext(mwm, "", "short mwm name");
DEFINE_string_ext(user, "", "user id");
DEFINE_int32(track, -1, "track index");
@@ -88,6 +92,8 @@ void CmdTrack(string const & trackFile, string const & mwmName, string const & u
void CmdTracks(string const & filepath, string const & trackExtension, StringFilter mwmFilter,
StringFilter userFilter, TrackFilter const & filter, bool noTrackLogs,
bool noMwmLogs, bool noWorldLogs);
+
+void CmdGPX(string const & logFile, string const & outputFilesDir, string const & userID);
} // namespace track_analyzing
int main(int argc, char ** argv)
@@ -130,6 +136,10 @@ int main(int argc, char ** argv)
CmdTagsTable(Checked_in(), FLAGS_track_extension, MakeFilter(FLAGS_mwm),
MakeFilter(FLAGS_user));
}
+ else if (cmd == "gpx")
+ {
+ CmdGPX(Checked_in(), Checked_output_dir(), FLAGS_user);
+ }
else
{
LOG(LWARNING, ("Unknown command", FLAGS_cmd));