
A visualization of global weather conditions, forecast by supercomputers - moonlighter
http://earth.nullschool.net
======
IvyMike
Time to whip out the hairy ball theorem:
[https://en.wikipedia.org/wiki/Hairy_ball_theorem](https://en.wikipedia.org/wiki/Hairy_ball_theorem)

Yes I heard what I just said.

~~~
siddboots
Does the hairy ball theorem imply that there is always some place on the
earth's surface where wind speed is zero?

~~~
jackmaney
Yes, assuming that the wind vectors are orthogonal to the Earth (and that the
Earth is spherical).

Also, by the Borsak-Ulam Theorem (
[http://en.wikipedia.org/wiki/Borsuk%E2%80%93Ulam_theorem](http://en.wikipedia.org/wiki/Borsuk%E2%80%93Ulam_theorem)
), there are two points on the Earth directly opposite one another that have
the same wind speed.

~~~
nilkn
I think slight disturbances from being perfectly spherical are fine (since the
Euler characteristic wouldn't be affected). The wind vectors not always being
orthogonal to the Earth seems more damning, but maybe it is enough to just
consider their projection onto the Earth's surface.

------
adolgert
The javascript shows they are thinking about this as particle traces of wind
velocities. In visualization, the technique is called Line Integral
Convolution (LIC). Each line follows the direction of the wind vector, and the
overall brightness is the sum of the magnitude of the winds under the line.
This particular variant just uses the wind speed at one point under the line.
LIC won't accidentally miss field singularities like vector-arrow
representations, and there are variants that provide smooth animations.

It's great that we've advanced from needing VTK to being able to do a
visualization like this as a live movie, translating GRIB files to JSON.

------
moonlighter
Also interesting:
[http://earth.nullschool.net/about.html](http://earth.nullschool.net/about.html)

~~~
bradddd
Thanks. As mesmerizing as the visual is, the explanation is useful.

~~~
moonlighter
I'm always curious about the underlying modules used. Hadn't heard of when.js
before: [https://github.com/cujojs/when](https://github.com/cujojs/when)

------
Scaevolus
Beautiful!

If you turn the globe upside down, the controls for rotating it are backwards.

Some way to pan/zoom without pausing the visualization would be nice, but
probably very difficult without moving to webgl-based rendering.

------
mayhaffs
Beautiful design. This would be awesome to have hanging on a wall.

~~~
kybernetyk
I considered having this displayed on a spare monitor I have but ultimately
decided against it as the animation uses too much CPU for the rendering.

Maybe I'll port it over to C++ if I find some time.

------
aaren
Can it display different data by playing with the url?

e.g. I'm looking at

    
    
        http://earth.nullschool.net/#current/wind/isobaric/1000hPa/orthographic=-11.40,53.26,489
    

The only thing I can get to change is the lon, lat, zoom at the end. Are there
more things I can change?

------
LancerSykera
At 10hPa, it's windy as dicks around the arctic circle. The antarctic,
however, is relatively calm. Is that a seasonal thing? Will it be the opposite
in June?

~~~
michaelochurch
Polar-night jet stream:
[https://en.wikipedia.org/wiki/Jet_stream#Polar_night_jet](https://en.wikipedia.org/wiki/Jet_stream#Polar_night_jet)

------
jheriko
looks broken here if i rotate it until it redraws which is a shame...

i do find this interesting coming from a native rendering background. the idea
of converting data from one, fairly inefficient format (FORTRAN friendly from
the look) to a spectacularly less efficient format still is a bit mind
boggling without appreciation for the web stack (JSON is not for run-time in
my world - its for 'tools' or 'compile' time).

the rendering is also quite underwhelming on a desktop PC - especially that it
cuts out whilst rotating. there is some obvious stuff here that can be cached
on inspection of the comments on github...

for instance, since there is a lot of data processing already, how about
'unprojecting' the data to remove the extra interpolation overhead from having
to apply a transform and its inverse? Just because they have chosen to project
their data onto a sphere doesn't mean you have to follow suit... its probably
a useful format for meteorologists or cartographers but its not suited for
rendering at all.

of course doing that will have similar results to a low pass filter unless you
use a much higher density grid than the source (since you want a regular grid
in your result and have irregular data points) - but visually that is very
acceptable as a compromise.

the obvious guess suggestion is webgl and a 3d canvas, and dropping any fancy
svg or other elements if they need to be visually sycned up with precision and
rendering all of it yourself in a single consistent way. in the browser world
its often a bad idea to rely on the implementation of anything if you need
guarantees of quality - there is a lot of variation and a lot of bugs that
have persisted for years on end...

i'd also suggest partitioning the data once its in 3d - a kd-tree or regular
octree is quite easy to implement and understand and perfectly suited for this
imo

------
mehwoot
Is this current weather conditions?

~~~
arethuza
I checked it against the BBC Weather pressure map for the North Atlantic and
Europe and the low and high pressures seem to match so it does look fairly
"live".

~~~
lucaspiller
It says on the about page it is updated every three hours.

[http://earth.nullschool.net/about.html](http://earth.nullschool.net/about.html)

EDIT: If you click on 'Earth' it brings up a menu with time controls.

------
athst
This is really cool, but it is clearly heavily influenced in design by Viegas
and Wattenberg's Wind Map: [http://hint.fm/wind/](http://hint.fm/wind/)

The creator should really acknowledge their work...

~~~
cambecc
I have heavily acknowledged their work in tweets, on fb, on github, and in the
about page. I have also thanked them directly. Also happy to note that most
articles about the site also acknowledge the influence from hint.fm.

~~~
seanalltogether
Out of programmer curiosity, is there a reason you have to stop rendering the
globe while its moving?

~~~
cambecc
The NCEP data provides only 1º resolution, so bilinear interpolation is used
to fill in the gaps. How much interpolation is needed depends on the zoom
level and the projection. On top of that, the distortion caused by the
projection must be applied to the interpolated wind field. All of these heavy
calculations are done up front so the animation can be as fast as possible. So
each time the orientation of the globe changes, we have to redo the
calculations.

~~~
seanalltogether
"On top of that, the distortion caused by the projection must be applied to
the interpolated wind field."

I think I'm missing something. Are you overlaying a drawing canvas over the
globe and handling your own custom projection then? Is it not possible to
dynamically draw to a webgl texture and let the gpu take care of projection?

I do understand why you'd have to restart on zoom. Overall its an excellent
project you have here.

~~~
cambecc
Exactly! The globe is SVG and the animation is a Canvas layered on top.
However, I'm still using D3's projection logic to calculate the distortion.
Yeah, could save on redoing the distortion calc if just globe rotation
changes, but would still need to redo the grid interpolation. So, to keep it
easy I just rerun the whole deal.

WebGL would be fun to learn, but AFAIK not supported by mobile browsers yet.

~~~
nitrogen
WebGL is at the least supported by the default browser on the Galaxy S II, and
presumably newer models. It doesn't support floating point textures, however.

------
Oculus
Wicked cool visualization!

------
nagarch
Amazing

------
almosnow
Honest question.

Why does weather behave different over oceans when compared to land?

~~~
thematt
Probably because wind speeds are faster over the ocean due to less friction.
Mountains, trees, structures, etc. all affect that over land.

~~~
aaren
This. Even a little terrain is a lot more dynamically interesting than the
ocean.

There are also strong heat / surface moisture gradients on land (think edges
of forests, cities, coasts), which play a big role in convection.

By comparison, the ocean is an infinite plane so the dynamics are much more
dependent on large scale forcings like the Earth's rotation and there is less
local variability.

