How it was done
To get the globe, I had to use a custom CRS for on-the-fly projection, an Ortho projection centered on (90W,44N). I created a custom CRS with the following proj4 settings:-
+proj=ortho +lat_0=44.0 +lon_0=-90.0 +x_0=0 +y_0=0
If you try to render a whole-world dataset using that projection, you get horrible artifacts. In some projections, this is caused by features crossing the anti-meridian. In the case of ortho, it's caused by features crossing the edge of the visible hemisphere.
To get around this, I used the Clip to Hemisphere plugin. This plugin lets you set a vector layer, a latitude and longitude, and clips the vector layer to the visible hemisphere.
I ran this against several layers, namely
- the hurricane lines layer
- the 15 degree graticule layer from Natural Earth
- the 10m country polygons from Natural Earth
- the WGS84 bounding box layer from Natural Earth
the end result is shown below (in WGS84). I used a Draw effect (Outer Glow) on the clipped WGS84 bounding box to give the 'atmosphere glow' effect.
and this is what it looks like using the custom CRS:-
Preparing for Time Manager
The Time Manager plugin allows you to export multiple renderings, based on a time value. If you have a time-based field on each feature, it will render only those features within a specific time interval.
The original dataset contained a field called season, giving the year (1845, 1846, ... 2015). I added a field called season2, which was season minus 1845. So each hurricane trail was given a value according to year, starting at 0.
I then told Time Manager to use this field. If time manager sees the field is a number, it assumes it's a unix time stamp (seconds since midnight on 1st Jan 1970). By setting the frame interval to 1 second, each successive frame showed one year's worth of hurricanes.
Rendering the Video using ffmpeg
I tend to use ffmpeg for video stitching, as it allows good control of frame rates, resolution and quality. The tip I have is to get rid of all the .pngw world files that Time Manager generates, as they get picked up by ffmpeg and make it fall over.