The “Movement data in GIS” series discusses all things related to working with movement data aka. trajectories in GIS, covering concepts, libraries, desktop GIS, databases, and big data technology.
Here are all posts in chronological order:
- Issues & ideas
- Visualizing individual trajectories
- Visualizing massive trajectory datasets
Update 2017: Trajectory aggregation code & sample data
Update 2020: Trajectory aggregation in MovingPandas - Variations in movement over time
- Current research topics
- Updates from AGILE2017
- Animated trajectories with TimeManager
Extra: GPS Trajectories with error ellipses - Edge bundling for flow maps
- Trajectory data models
Update 2020: From Simple Features to Moving Features and Beyond? - Open tools for AIS tracks from MarineCadastre.gov
- FOSS4G2017 talk recordings
- Why you should be using PostGIS trajectories
- Timestamp labels for trajectories
- Updates from GI_Forum 2018
- Writing a PL/pgSQL stop detection function for PostGIS trajectories
- Towards pure Python trajectories using GeoPandas
- Spatial analysis of GeoPandas trajectories
- Creating evaluation data for trajectory predictions
- Splitting trajectories by date
- Trajectools v1 released!
- New interactive notebook to get started with MovingPandas
- Movement data in GIS and the AI hype
- Trajectories in context
- MovingPandas hands-on tutorials
- Moving object databases
- Towards a template for exploring movement data
- Extracting trip origin clusters from MovingPandas trajectories
- Open geospatial tools for movement data exploration
- Web apps with movement data using mobilitydb-sqlalchemy
- Synchronized trajectory animations with QGIS temporal controller
- Exploring massive movement datasets
Part 1: M³ Massive Movement Model: aggregating movement data using prototypes
Part 2: Generating trajectories from massive movement datasets
Part 3: Extracting trajectory-based flows between M³ prototypes - “Exploring movement data” 🎬
- “Exploratory analysis of massive movement data” 🎬
- A protocol for exploring movement data
- Stop detection & analysis with MovingPandas
- Trucks from space
- “Understanding Movement Data” 🎬
- MovingPandas now supports local coordinates
- New OGC Moving Features JSON support in MovingPandas
- Detecting close encounters using MobilityDB 1.0
- Visualizing trajectories with QGIS & MobilityDB
- Deep learning from trajectory data
- How to use Kaggle’s Taxi Trajectory Data in MovingPandas
Relevant source code repositories:
- https://github.com/movingpandas/movingpandas
- https://github.com/movingpandas/movingpandas-examples
- https://github.com/anitagraser/EDA-protocol-movement-data
- https://github.com/anitagraser/qgis-processing-trajectory
- https://github.com/dts-ait/qgis-edge-bundling
- https://bitbucket.org/anitagraser/pg-trajectory
My scientific publications on this topic:
- Dissertation
- Book chapters
- Graser, A., Dragaschnig, M., & Koller, H. (2021). Exploratory analysis of massive movement data. In: Handbook of Big Geospatial Data, Editors: Werner, Martin, Chiang, Yao-Yi (pp. 285-319). Springer.
- Graser, A. & Dragaschnig, M. (2020). Potentiale entdecken ‒ Explorative räumliche Analyse von Bewegungsdaten. In Geo-IT in Mobilität und Verkehr: Geoinformatik als Grundlage für moderne Verkehrsplanung und Mobilitätsmanagement (pp. 137-154). Wichmann Verlag/VDE. ISBN 978-3-87907-682-6.
- Journal papers
- Graser, A. (2022). The State of Trajectory Visualization in Notebook Environments. GI_Forum 2022, 10(2), 73-91. doi:10.1553/giscience2022_02_s73.
- Graser, A. (2021). An exploratory data analysis protocol for identifying problems in continuous movement data. Journal of Location Based Services. doi:10.1080/17489725.2021.1900612.
- Graser, A., Widhalm, P., & Dragaschnig, M. (2020). Extracting Patterns from Large Movement Datasets. GI_Forum – Journal of Geographic Information Science, 1-2020, 153-163. doi:10.1553/giscience2020_01_s153.
- Graser. A., Widhalm, P., & Dragaschnig, M. (2020). The M³ massive movement model: a distributed incrementally updatable solution for big movement data exploration. International Journal of Geographical Information Science. doi:10.1080/13658816.2020.1776293.
- Graser, A. & Dragaschnig, M. (2020). Open Geospatial Tools for Movement Data Exploration. KN ‒ Journal of Cartography and Geographic Information, 70(1), 3-10. doi:10.1007/s42489-020-00039-y.
- Graser, A. (2019). MovingPandas: Efficient Structures for Movement Data in Python. GI_Forum ‒ Journal of Geographic Information Science 2019, 1-2019, 54-68. doi:10.1553/giscience2019_01_s54.
- Graser, A. (2018) Evaluating Spatio-temporal Data Models for Trajectories in PostGIS Databases. GI_Forum ‒ Journal of Geographic Information Science, 1-2018, 16-33. doi: 10.1553/giscience2018_01_s16.
- Graser, A., Schmidt, J., Roth, F., & Brändle, N. (2017) Untangling Origin-Destination Flows in Geographic Information Systems. Information Visualization 2019, Vol. 18(1) 153–172. doi:10.1177/1473871617738122.
- Straub, M., & Graser, A. (2015). Learning from Experts: Inferring Road Popularity from GPS Trajectories. GI_Forum ‒ Journal for Geographic Information Science, 1-2015, 41-50, doi:10.1553/giscience2015s41.
- Other papers
- Graser, A., Jalali, A., Lampert, J., Weißenfeld, A., & Janowicz, K. (2023). Deep Learning From Trajectory Data: a Review of Neural Networks and the Trajectory Data Representations to Train Them. Workshop on Big Mobility Data Analysis BMDA2023 in conjunction with EDBT/ICDT 2023.
- Jonietz, D., Sester, M., Stewart, K., Winter, S, Tomko, M., & Xin, Y. (eds). Urban Mobility Analytics (Dagstuhl Seminar 22162). Dagstuhl Reports, 12(4), 26–53. https://doi.org/10.4230/DagRep.12.4.26
- Mokbel, M., Sakr, M., Xiong, L., Züfle, A., Almeida, J., Anderson, T., Aref, W., Andrienko, G., Andrienko, N., Cao, Y., Chawla, S., Cheng, R., Chrysanthis, P., Fei, X., Ghinita, G., Graser, A., Gunopulos, D., Jensen, C., Kim, J.-S., … Zimányi, E. (2022). Mobility Data Science (Dagstuhl Seminar 22021). Dagstuhl Reports, 12(1), 1–34. https://doi.org/10.4230/DagRep.12.1.1
- Graser, A. (2021). Notebook-based Visual Analysis of Large Tracking Datasets. Workshop on Big Mobility Data Analysis BMDA2021 in conjunction with EDBT/ICDT 2021. – 🎬 video
- Graser, A., & Dragaschnig. M. (2020). Exploring movement data in notebook environments. Workshop on Information Visualization of Geospatial Networks, Flows and Movement (MoVis) in conjunction with IEEE VIS 2020. – 🎬 video
- Graser, A., Dragaschnig, M., Widhalm, P., Koller, H., & Brändle, N. (2020). Exploratory Trajectory Analysis for Massive Historical AIS Datasets. In: 21st IEEE International Conference on Mobile Data Management (MDM) 2020. doi:10.1109/MDM48529.2020.00059
- Graser, A., Schmidt, J., Dragaschnig, M., & Widhalm, P. (2019). Data-driven Trajectory Prediction and Spatial Variability of Prediction Performance in Maritime Location Based Services, LBS 2019, 11-13 November 2019, Vienna, Austria.
- Graser, A., & Widhalm, P. (2018). Modelling Massive AIS Streams with Quad Trees and Gaussian Mixtures. In: Mansourian, A. et al. (Eds.), 2018. Geospatial Technologies for All: short papers, posters and poster abstracts of the 21th AGILE Conference on Geographic Information Science. Lund, Sweden.
- Graser, A., Schmidt, J., & Widhalm, P. (2018). Predicting trajectories with probabilistic time geography and massive unconstrained movement data. Workshop on Analysis of Movement Data AMD2018 in conjunction with GIScience 2018, Melbourne, Australia.
- Koller, H., Widhalm, P., Dragaschnig, M., & Graser, A. (2015). Fast Hidden Markov Model Map-Matching for Sparse and Noisy Trajectories. In Intelligent Transportation Systems (ITSC), 2015 IEEE 18th International Conference on (pp. 2557-2561). IEEE.
Hey Anita. Have you seen this project? http://movevis.org/ It would be interesting to be able to do this in QGIS as well.
Thanks Nicolai! Yes, I’m aware of movevis. It looks very nice. Of course, TimeManager is more general purpose than movevis is but automatic styling like that would be a nice feature. (Note that it is already possible to achieve these effects manually: https://anitagraser.com/2015/05/08/trajectory-animations-with-fadeout-effect/)
Maybe there is not that great a leap towards RSF in QGIS then :)
Hi Anita. I do not know if asking you this question here is correct or not, and I apologize if I do not do it correctly.
In your article # 13 “Timestamp labels for trajectories” you showed the track time, but what if you want to see the distance that has been traveled? (showing for example every 10km?).
I have launched this query in Gis Stack Exchange.com. https://gis.stackexchange.com/questions/364736/what-is-the-equivalent-of-arcgis-option-hatching-features-in-a-layer-in-qgis. Thank you for advance.
Hi, can you share the LineStringM geometry? That would make it easier to try find a solution.
Hi, thank you so much for your interest.
Here is my LineStringZM geometry:
https://github.com/rbenet71/Sharing_Little_Things/blob/master/Python/Qgis/Track%20Distance%20Km/test.gpkg
Here is a part of my code to calculate M coordinate:
https://github.com/rbenet71/Sharing_Little_Things/blob/master/Python/Qgis/Track%20Distance%20Km/Code_For_M_Coordinate.py
Here is the original GPX track:
https://github.com/rbenet71/Sharing_Little_Things/blob/master/Python/Qgis/Track%20Distance%20Km/04_001_Op_52.gpx
For now, I think your best bet is to use the Points along geometry tool to generate a new point layer that can be labeled. Basically, if the Points along geometry function was available in the Geometry generator functions, we could use it to generate (and label) the points on the fly.
Hi Anita, by the moment I don’t know, from Geometry Generator, how to call:
( “processing.run(“native:pointsalonglines”, {‘INPUT’:’$geometry’,’DISTANCE’:1,’START_OFFSET’:0,’END_OFFSET’:0,’OUTPUT’:’TEMPORARY_OUTPUT’})
By the moment I discover another function, that creates a point in a distance (10km for example):
line_interpolate_point($geometry,10000)
If you create for 20km, 30km,… you can have every 10km, but if you want for each km I think it’s a lot of work.
Do you think is possible to create a bucle for do this? Or do you how I call the function “pointsalonglines” from Geometry Generator?
Thank you so much for help and attention.
I also considered line_interpolate_point() but I don’t see a convenient way to automate it for lines of arbitrary length. I also don’t have an example at hand of how to use a processing algorithm in a expression function (which can then be used in a geometry generator). I recommend asking on gis.stackexchange.com because maybe somebody already has an example at hadn.
Thank you so much, I will do.
Here is the solution. Thank you so much for your help.
https://gis.stackexchange.com/questions/365896/how-to-use-a-processing-algorithm-in-a-expression-function-used-in-a-geometry-ge
And the final result:
https://gis.stackexchange.com/questions/364736/hatching-features-in-layer-using-qgis
FYSA: temporal / time data controller: https://github.com/mitre/QgisTDC