Blog d’Anita Graser

https://anitagraser.com

  • 12 septembre 2020Sol Katz Award – Thank you
    On Thursday, I was awarded the 2020 Sol Katz award for Free and Open Source Software for Geospatial. I feel very honored to have been selected for this award and I’d like to take this opportunity to share a few words of thanks: As people working in open source projects, we are constantly reminded that we are all standing on the shoulders of giants. However, particularly this year, we also see just how important small personal connections are. For me, my involvement with open source communities really took off when I joined the QGIS hackfest in Vienna in 2009 and I felt that my participation was really appreciated and welcome. I couldn’t imagine being without these connections anymore. Thank you to the whole QGIS community, particularly my fellow PSC members both current and former: Tim, Andreas, Jürgen, Richard, Paolo, Otto, Marco Hugentobler, Alessandro, our new chair Marco Bernasocchi, and of course QGIS founder Gary Sherman for starting this awesome project and for still being around and actively promoting geospatial open source by publishing so many great books covering multiple different OSGeo projects. I’d also like to thank my partner and my family for being incredibly under …
  • 23 août 2020Extracting trajectory-based flows between M³ prototypes
    Rendering large sets of trajectory lines gets messy fast. Different aggregation approaches have been developed to address this issue. However, most approaches, such as mobility graphs or generalized flow maps, cannot handle large input datasets. Building on M³ prototypes, the following approach can be used in distributed computing environments to extracts flows from large datasets.  This is part 3 of “Exploring massive movement datasets”. This flow extraction is based on a two-step process, conceptually similar to Andrienko flow maps: first, we extract M³ prototypes from the movement data. In the second step, we determine flows between these prototypes, including information about: distribution of travel speeds and number of observed transitions. The resulting flows can be visualized, for example, to explore the popularity of different paths of movement: After the prototypes have been computed, the flow algorithm computes transitions between pairs of prototypes. An object moving from prototype A to prototype B triggers an update of the corresponding flow. To allow for distributed processing, each node in the distributed computing environment needs a copy of the previously computed …
  • 26 juillet 2020Generating trajectories from massive movement datasets
    To explore travel patterns like origin-destination relationships, we need to identify individual trips with their start/end locations and trajectories between them. Extracting these trajectories from large datasets can be challenging, particularly if the records of individual moving objects don’t fit into memory anymore and if the spatial and temporal extent varies widely (as is the case with ship data, where individual vessel journeys can take weeks while crossing multiple oceans).  This is part 2 of “Exploring massive movement datasets”. Roughly speaking, trip trajectories can be generated by first connecting consecutive records into continuous tracks and then splitting them at stops. This general approach applies to many different movement datasets. However, the processing details (e.g. stop detection parameters) and preprocessing steps (e.g. removing outliers) vary depending on input dataset characteristics. For example, in our paper [1], we extracted vessel journeys from AIS data which meant that we also had to account for observation gaps when ships leave the observable (usually coastal) areas. In the accompanying 10-minute talk, I went through a 4-step trajectory exploration …
  • 19 juillet 2020M³ Massive Movement Model: aggregating movement data using prototypes
    Visualizations of raw movement data records, that is, simple point maps or point density (“heat”) maps provide very limited data exploration capabilities. Therefore, we need clever aggregation approaches that can actually reveal movement patterns. Many existing aggregation approaches, however, do not scale to large datasets. We therefore developed the M³ Massive Movement Model [1] which supports distributed computing environments and can be incrementally updated with new data. This is part 1 of “Exploring massive movement datasets”. Using state-of-the-art big gespatial tools, such as GeoMesa, it is quite straightforward to ingest, index and query large amounts of timestamped location records. Thanks to GeoMesa’s GeoServer integration, it is also possible to publish GeoMesa tables as WMS and WFS which can be visualized in QGIS and explored (for more about GeoMesa, see Scalable spatial vector data processing ).So far so good! But with this basic setup, we only get point maps and point density maps which don’t tell us much about important movement characteristics like speed and direction (particularly if the reporting interval between consecutive location records is irregular). Theref …
  • 12 juillet 2020Spatial on air #2: spatiotemporal everything!
    We’ve done it again! This time, Daniel O’Donohue and I talked about spatiotemporal data in GIS, including – of course – Time Manager, the new QGIS temporal support, and MovingPandas.   Since we need both data and tools to do spatiotemporal analysis, we also talked about file formats and data models. If you want to know more about data models for spatiotemporal (especially movement) data, have a look at the latest discussion paper I wrote together with Esteban Zimányi (MobilityDB) and Krishna Chaitanya Bommakanti (mobilitydb-sqlalchemy): Graser, A., Zimányi, E., & Bommakanti, K.C. (2020). From Simple Features to Moving Features and Beyond? arXiv:2006.16900. Data model of the Moving Features standard illustrated with two moving points A and B. Stars mark changes in attribute values. (Source: Graser et al. (2020)) For more details and all options for listening to this podcast, visit mapscaping.com.   …
  • 9 juillet 2020Movement data in GIS #31: exploring massive movement datasets
    Exploring large movement datasets is hard because visualizations of movement data quickly get cluttered and hard to interpret. Therefore, we need to aggregate the data. Density maps are commonly used since they are readily available and quick to compute but they provide only very limited insight. In contrast, meaningful aggregations that can help discover patterns are computationally expensive and therefore slow to generate. This post serves as a starting point for a series of new approaches to exploring massive movement data. This series will summarize parts of my PhD research and – for those of you who are interested in more details – there will be links to the relevant papers. Starting with the raw location records, we use different forms of aggregation to learn more about what information a movement dataset contains: Summarizing movement using prototypes by aggregating raw location records using our flexible M³ Massive Movement Model [1] Generating trajectories by connecting consecutive records into continuous tracks and splitting them into meaningful trajectories [2] Extracting flows by summarizing trajectory-based transitions between prototypes [3] Besides clever aggregation …
  • 24 mai 2020Movement data in GIS #30: synchronized trajectory animations with QGIS temporal controller
    QGIS Temporal Controller is a powerful successor of TimeManager. Temporal Controller is a new core feature of the current development version and will be shipped with the 3.14 release. This post demonstrates two key advantages of this new temporal support: Expression support for defining start and end timestamps Integration into the PyQGIS API These features come in very handy in many use cases. For example, they make it much easier to create animations from folders full of GPS tracks since the files can now be loaded and configured automatically: Script & Temporal Controller in action (click for full resolution) All tracks start at the same location but at different times. (Kudos for Andrew Fletcher for recordings these tracks and sharing them with me!) To create an animation that shows all tracks start simultaneously, we need to synchronize them. This synchronization can be achieved on-the-fly by subtracting the start time from all track timestamps using an expression: directory = « E:/Google Drive/QGIS_Course/05_TimeManager/Example_Dayrides/ » def load_and_configure(path): path = os.path.join(directory, filename) uri = ‘file:///’ + path + « ?type=csv&escape=&useHeader=No&detectType …
  • 21 mai 2020Spatial on air: talking Python on the MapScaping Podcast
    Podcasts have become huge. I’m an avid listener of podcasts myself. I particularly enjoy formats that take the time to talk about unconventional topics in detail. My first podcast experience was on the QGIS podcast hosted by Tim Sutton in 2014. Unfortunately, it seems like the podcast episodes are not online anymore. Recently, I had the pleasure to join the MapScaping Podcast by Daniel O’Donohue to talk about Python for Geospatial:  Other guests Daniel has already interviewed include: Kurt Menke talking first about QGIS and in a second episode on QField and Input (data collection apps based on QGIS) and Paul Ramsey on Vector Tiles from PostGIS Another geospatial podcast I really enjoy is The Mappyist Hour by Silas and Todd. Unfortunately, it’s a bit silent there now but it’s definitely worth to listen into their episode archive. One of my favorites is Episode 9 where Linda Stevens (Hecht) discusses her career at ESRI, the future of GIS, and the role of Open Source Spatial in that future: [soundcloud url="https://api.soundcloud.com/tracks/470759232" params="visual=true&show_artwork=true&maxwidth=545&maxheight=818&dnt=1" width="100%" height="400" iframe="true" /] If you listen to and …
  • 10 mai 2020TimeManager is dead, long live the Temporal Controller!
    TimeManager turns 10 this year. The code base has made the transition from QGIS 1.x to 2.x and now 3.x and it would be wrong to say that it doesn’t show 😉 Now, it looks like the days of TimeManager are numbered. Four days ago, Nyall Dawson has added native temporal support for vector layers to QGIS. This is part of a larger effort of adding time support for rasters, meshes, and now also vectors. The new Temporal Controller panel looks similar to TimeManager. Layers are configured through the new Temporal tab in Layer Properties. The temporal dimension can be used in expressions to create fancy time-dependent styles: TimeManager Geolife demo converted to Temporal Controller (click for full resolution) Obviously, this feature is brand new and will require polishing. Known issues listed by Nyall include limitations of supported time fields (only fields with datetime type are supported right now, strings cannot be used) and worse performance than TimeManager since features are filtered in QGIS rather than in the backend. If you want to give the new Temporal Controller a try, you need to install the current development version, e.g. qgis-dev in OSGeo4W. Update from May 16: Many of the …
  • 2 mai 2020QGIS video tutorials: election maps, hydrology, and more

    Mapping spatial decision patterns, such as election results, is always a hot topic. That’s why we decided to include a recipe for election maps in our QGIS Map Design books. What’s new is that this recipe is now available as a free video tutorial recorded by Oliver Burdekin:

    This video is just one of many recently published video tutorials that have been created by QGIS community members.

    For example, Hans van der Kwast and Kurt Menke have recorded a 7-part series on QGIS for Hydrological Applications:

    and Klas Karlsson’s Youtube channel is also always worth a follow:

    For the Pythonically inclined among you, there is also a new version of Python in QGIS on the Automating GIS-processes channel: