Aslak Grinsted‎ > ‎Misc. Debris‎ > ‎

Slicing up our Earth

posted Aug 5, 2013, 2:47 AM by Aslak Grinsted   [ updated Aug 9, 2013, 2:37 AM ]
I have been experimenting with different methods of slicing up Earth. My motivation is that I want to divide the Earth into an equal area grid because this is critical for lots of statistical analysis. Linear methods such as EOF analysis try to minimize a variance. This is a squared quantity and un-equal areas pose a problem because (a+b)2 a2+b2. You cannot compensate for this using simple area weighing. So for that reason I wanted a way to tesselate the sphere with an equal area grid and I believe I have found a better way than the 'standard' bucky ball approach. 

The icosahedral grid / bucky ball

I googled around abit and found that most people who have tried this use the bucky ball approach to tesselate the sphere. See e.g. here for a GCM.  To construct the icosahedral grid then you start with from an icosahedron (see right) and then you start subdividing each face. If you split each face into 9 triangles three times then you end up with this:

Where the area and length has standard deviations of ~6%. Colors show face area. I was not quite satisfied by this spread in areas, so I set out to improve on this. And my best approach so far has been the dodecahedral grid (see right column).  

(Each vertex will have 5 or six neighbors. You get the bucky ball by simply making hexagons / pentagons out of this triangular mesh (see Voronoi). This can be used in making "C-grids". When you do this then of course you will also change the spread between areas.)

Best way to subdivide each face. 

You can split each triangular face in 4 sub triangles recursively. However, when you do this on a sphere then the central triangle has a greater area than the 3 corner triangles. When this approach is applied to the Icosahedron then I got about 10% standard deviation is face areas. You can also divide each face into 9 sub triangles. That results in a smaller spread between of ~6% (see above). 

You can also subdivide to even higher degrees by simply splitting the great circles of the triangles into sections. When I split each great circle at 15 locations then I can reduce the icosahedral area standard deviation to ~2.5% (the dodecahedral grid is still better). Here's a sketch explaining how I perform this splitting. I first insert vertices along the 3 edges of the triangle using great circle interpolation. To calculate the position of an interior vertex then i use great circle interpolation from the side vertices along the 3 dashed lines in the figure and average those three positions. This performs much better than the recursive splitting and I am convinced this can be improved further. Perhaps spherical barycentric coordinates is the clue.

Collaboration ?
Email me if your are interested in collaborating on this for any purpose. I'd like to see EOF, M-SSA, Optimal Interpolation and perhaps some circulation modelling on the dodecahedral grid. 

The Icosahedron and the Dodecahedron

Relationship: If you take the central point in each face from the Icosahedron and take the convex hull of these then you will get the Dodecahedron.

My dodecahedral grid

"My" new dodecahedral method results in better and more uniform grids than the icosahedral grid (IMHO). In this I start from a dodecahedron and split each pentagon by adding a vertex at the center of each face. I then subdivide each face edge at 15 locations and get

The area deviation is much improved over the icosahedral grid and the edge length is also slightly better. Equal area is my primary concern and thus I consider the dodecahedral grid superior. 

Inspiration that prompted this work.

I saw talks by Jagger and Elsner where they divided regional maps into equal area hexagons in order to do statistical analysis. The particular method they use is detailed in their Hurricane Climatology book (with R-code). They have research demonstrating why hexagons in particular are useful which you can find on their home pages. However, it is simply impossible to divide the entire earth into hexagons (as i need for my purpose). 

Finally, a note on circulation modelling. I think there would be an advantage in tesselating the oceans and the land separately to enforce that the coastline is closely approximated by face edges. I think this could easily be achieved using distmesh for matlab. Somebody should do t