I've got a polygon layer containing some time series data in cells and I'm trying to create a series of maps from it.

Data structure: every polygon has a timestamp and a value that I'm displaying on a map. There are usually multiple polygons "stacked" in one place with different timestamps.

What I'd like to do is to create one map for each unique timestamp using the same print layout, extent, layer styling, etc.

I tried using the Atlas feature of the layout manager by using the filter function with the expression "date" = attribute(@atlas_feature, 'date') and sort by "date", but that didn't work. The resulting pages all look exactly the same when I do this, but I don't understand why.

The only way I found that does exactly what I need is to use the filter function from the layer context menu in the layer overview. In there, I can use "date" = '2012-01-01T00:00:00.000' for example and then export the resulting map. I can't do that for all my layers by hand, though.

Any ideas how I could automate this approach?

  • How is the coverage layer setup? Do you have as many features in it as you have epochs (unique timestamps)? I'm not sure I understand how you built the atlas. – Gabriel Feb 4 '19 at 15:33
  • I've got multiple features per epoch. I'm trying to set up the atlas so it produces one page per epoch (and show only the features from that epoch). – karpfen Feb 4 '19 at 15:38
  • Is a separate layer setup, with a polygon for each epoch, as the coverage layer? – Gabriel Feb 4 '19 at 15:52
  • No, it's all in one layer. A few thousand polygons in total and there's always a few of them sharing the exact same timestamp (that's what I call an epoch here) – karpfen Feb 4 '19 at 16:29
  • I figured it out. Turns out you have to create a rule-based style schema, I adapted my approach from here: issues.qgis.org/issues/8766 Thanks for helping anyway! – karpfen Feb 4 '19 at 16:42

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.