Meet the team-intern edition vol. 5

Silvia Pichler, 

Moritz started his internship at at the same time as Caroline, whom we introduced you to last time. Just like her, he was extremely eager to learn new things and motivated to give his obligatory internship a meaning. In this blog he lets us in on what he’s been working on and what was the most important thing he learned during that time.

Quick intro: Tell us about yourself

My name is Moritz, I’m 22 years old and currently in the 6th semester of my “Verkehr und Umwelt” (Traffic and Environment) studies at the UAS Technikum Wien. There I’ve specialized on E-Mobility, but I’m fascinated by everything that involves mathematics, computers and programming. Since this is basically what the research department works with all day, I was more than happy to be able to join them for the internship I had to do for my final semester.

Brief summary of your project

In the 14 weeks I spent at the research department, I developed and implemented a JavaScript application for analysis and visualization of user trajectories in a building. The application incorporates several data-mining techniques and allows for indoor trajectory recordings to be compared, clustered and classified. I also conducted a company-wide “data-collection field day” in Lugner City mall, to create data for testing and evaluating my code.

What was the goal of your project?

I remember exactly when the task was given to me. It went something like, “See this?” interns moritz 1

“This is a useless mess of trajectories in a building. We can’t learn any useful information from it. Please try to find a way to do so. You could try edge bundling. Oh, and use JavaScript.”
So, after figuring out what all that meant and looking into the basics of JavaScript, I defined the goal of my project: Find an efficient way to simplify large sets of trajectory data and visualize them as nice and tidy bundles of lines.

What was a typical day at like?

In the beginning, I spent my time becoming familiar with JavaScript and the three.js visualization library, reading documentation and tutorials and trying out basic functions. After about a week of “getting started”, I began with the implementation of my application. This meant: Implement a function, test it, fix bugs, drink Club Mate, test again, find out why it suddenly works, talk to the research team, fix more bugs, implement a new function, start from the top, learn a LOT. In between doing this, I also documented my progress on a  (more-or-less) weekly basis and worked on my bachelor thesis about trajectory data mining techniques.

How did you proceed with your work?

After the above-mentioned “getting started” phase, I read some papers on trajectory data mining and consulted with the research team on how to best structure the application. I started with creating the basic functions for importing and visualizing floorplans and different trajectory representations, as well as a simple GUI for controlling the view. interns moritz 2

As a method of data simplification and aggregation, I then proceeded to implement a clustering algorithm for trajectory data, which produces a set of clusters from a dataset, based on spatial proximity. The clustered trajectory points are shown in the image below. The color of the points represent the number of points inside a cluster (ranging from green = low, to yellow = high). interns moritz 3

The next step was implementing a function to aggregate the midpoints of these clusters, the so-called “centroids”, and the raw trajectory lines into a single visual representation. The trajectory graph was created. In the graph, the line thickness results from the number of trajectories going through each edge. intens moritz 4

Since the trajectory graph removes information on origin and destination of trajectories, the curve graph representation was created. Here, the trajectories are rendered as Bezier curves passing by their centroids, rather than crossing them. To distinguish single curves, a functionality for selecting and highlighting single or multiple points and lines was added. interns moritz 5

Finally, an HTML info box was implemented, showing information and comparisons of objects when clicking them. interns moritz 6

What did you learn during the internship?

The main thing I learned is writing code in JavaScript. I started off with no knowledge of JavaScript or any related libraries and am now able to create visualizations, implement algorithms and generally DO things with this language. I also learned a lot about indoor positioning solutions and gathering data for testing applications with a lot of people involved. Finally, and most importantly, I learned, that working in a reasonably sized company like, with friendly, intelligent and slightly weird people, solving problems all day long, is really what I would like to do for a living some day.

Read about our other previous interns: