Reproducing the AuthaGraph World Map

The AuthaGraph world map by Hajime Narukawa took the media by storm when it was honoured with the Japan Good Design Grand Award in October 2016. After several rounds of copying the news, the journalists dubbed it “the most accurate world map ever”, comparing it with the usual straw man, Mercator projection. Hype aside, the facts are: the map almost avoids the chopping of land, almost has the equal-area property, and does a decent job with land shapes. Its large distortions near the vertices of the basal tetrahedron and drastic discontinuities along the boundary are masked by the ocean.

Since the map projection is not public, I set out to develop its lookalike with PROJ.4. My way is simpler than the AuthaGraph method at the cost of losing the proportions of areas that AuthaGraph claims to preserve. You can compare the results below. Among the most visible changes, my Iceland lies on the European side of the map, Australia properly looks smaller than China, and Brazil’s shape is distorted differently. Given the overall distortions of AuthaGraph, treating Earth as an ellipsoid would not buy us much, so my method assumes it is a sphere. The code is available on Bitbucket.

Original AuthaGraph

pseudo-AuthaGraph

The top border of the original AuthaGraph map corresponds to a great-circle arc that separates Africa from Iceland. If the border passed through the North Pole, it would have to follow a meridian. Any meridian near Africa with westernmost longitude 17° 33′ W and Iceland with easternmost longitude 13° 16′ W must pass through either land. As the border avoids land, it must not pass through the North Pole, which is projected inside the map. Therefore, in spite of the claims about tiling the plane with the map, juxtaposing two maps yields a map with two North Poles close to each other. Incidentally, even the Bering Strait is blocked for a land-avoiding meridian by St. Lawrence Island and Unalaska.

The map of the Arctic below shows the possible locations of the northern vertex with a land-avoiding top border. My northern vertex lies around 73° N 121° E, near the delta of Lena.

arctic

Another constraint is to keep Australia and New Zealand in the middle triangle of the map. The original map does not fulfill it entirely: the Stewart Island lies in its Antarctic triangle. Therefore, I based the projection on a disphenoid, an irregular tetrahedron that can be rotated, scaled, and translated so that its vertices have Cartesian coordinates (+a, +b, +c), (+a, -b, -c), (-a, +b, -c), and (-a, -b, +c). A disphenoid can still be developed to a parallelogram so we can cut a right triangle or trapezoid near the acute-angle vertex of its net and attach it to the opposite side, making the map rectangular.

My approach to projecting a point P from a sphere onto a plane begins with finding the spherical triangle ABC, ABD, ACD, or BCD that contains P.

Given a tetrahedron KLMN inscribed into the unit sphere, the point P lies inside the spherical triangle KLM if \left(P \cdot (K \times L)\right)\left(N \cdot (K \times L)\right) \le 0, \left(P \cdot (K \times M)\right)\left(N \cdot (K \times M)\right) \le 0, and \left(P \cdot (L \times M)\right)\left(N \cdot (L \times M)\right) \le 0.

I considered several ways to map spherical triangles onto planar triangles, keeping in mind that the projection should be continuous on the edges shared by two triangles and smooth in their interiors. Here are my attempts:

  • Barycentric coordinates.

    The barycentric coordinates of point P with respect to a spherical or planar triangle KLM are the ratios of areas of spherical or planar triangles: (\Delta PLM / \Delta KLM, \Delta KPM / \Delta KLM, \Delta KLP / \Delta KLM).

    I was finding a point P' with planar barycentric coordinates corresponding to the spherical barycentric coordinates of P. Unfortunately, this elegant mapping is continuous on the shared edge of two triangles only if they are symmetric with respect to this edge. In an irregular tetrahedron, this is not the case.

  • Gnomonic projection, that is casting from the centre of the sphere onto the plane KLM. Although this projection is continuous on the edges of triangles, I find its distortion unacceptable.
  • Find points K', L', and M' on the sphere, being the intersections of great circles LM with KP, KM with LP, and KL with MP. Express the location of point P as a triple \left(\lvert KM'\rvert / \lvert KL \rvert, \lvert LK'\rvert / \lvert LM \rvert, \lvert ML'\rvert / \lvert MK \rvert\right). On a plane, the three lines that correspond to this triple in general do not cross in one point. Treating the centre of the intersection triangle as P' leads to discontinuities along the edges. I took the incentre of the intersection triangle instead.

The above method produces the map shown below, with sharp turns on the edges of the basal tetrahedron. I smoothed the joints by interpolation.

authagraph1

The cheetah spots on the map below are Tissot indicatrices for the projection, magnified images of infinitesimal circles on Earth’s surface.

The Tissot indicatrix is an ellipse with scale factor along the meridian h = \sqrt{(\partial x/\partial\phi)^2 + (\partial y/\partial\phi)^2}/R, scale factor along the parallel k = \sqrt{(\partial x/\partial\lambda)^2 + (\partial y/\partial\lambda)^2}/(R\cos\phi), and the angle \theta' at which the meridian and parallel intersect given by \sin\theta' = \left((\partial y/\partial\phi)(\partial x/\partial\lambda) - (\partial x/\partial\phi)(\partial y/\partial\lambda)\right)/(R^2 hk\cos\phi). The angular distortion is equal to \lvert\pi/2 - \theta'\rvert.

tissot

Using the Nelder–Mead method, I numerically minimized the total angular distortion in 461 approximately equally spaced points located on land while keeping the borders of the map at least 20 kilometres from any land. With respect to these conditions, the optimal parameters of the projection turned out to be:

  • The coordinates of the northern vertex: 73.10° N 120.96° E.
  • The rotation of the tetrahedron: −23.56°.
  • The coordinates of the vertices: b = 0.763 a, c = 0.963 a.
  • The vertical scale factor: 1.03.

These parameters yield a rectangle whose sides are in ratio 4:1.96. To separate Antarctica from Africa, I cut the map vertically at x = 1.6.

With a forward projection, you can make vector maps. For making raster maps, you need the inverse projection. As inverting the equations of the projection algebraically is a hopeless task, I resorted to the numerical Broyden’s method. The initial guess of (\phi, \lambda) = f^{-1}(x, y) comes from inverting the gnomonic projection. When the accuracy is set to 10-7 R, i.e. about one metre, the method usually finds \phi and \lambda after 5 iterations.

The map below is based on a public domain raster image from Natural Earth. The other maps in this post use public domain shapefiles from the same source.

earth

Advertisements
Reproducing the AuthaGraph World Map

9 thoughts on “Reproducing the AuthaGraph World Map

  1. Thanks for this!! Apologies if this is a stupid question, but what happens if the tetrahedron is a bit smaller than the sphere? I mean, wouldn’t each side of the tetrahedron then intersect the sphere and create 4 circles* on the surface of the sphere, along which there would be no distortion at all?

    I would just love to see a screensaver where those circles both grow/shrink and move around!

    Any chance you’d want to see that in debian?

    Best regards.

    //Erik

    *) if “p” and “d” would cut a circle “o” in half, and “/” and “\” would be the edges of the tetrahedron, the 4 circles I’m thinking of would look a bit like this: p/o\o/o\d

    Like

    1. Thank you for the comment, Erik! The projection as defined by my third bullet point does not use the tetrahedron per se. It is just based on four spherical triangles determined by the intersection of Earth surface with the lines that connect Earth centre and the vertices of the tetrahedron. So shrinking the tetrahedron changes neither the spherical triangles nor the projection. That said, it might be interesting to grow or shrink the spherical triangles used in the projection so that they overlap or have gaps to be interpolated. I have to think more about it.

      As for the screensaver, it must show *vector* maps since the rendering of a single high-resolution *raster* map takes tens of seconds. Also, the point of AuthaGraph is hiding its distortions by the ocean. The configurations of vertices that yield AuthaGraphs with land-avoiding distorted areas are rare. IMHO, other projections suit a screensaver better. See e.g. https://bl.ocks.org/mbostock/1e10b76becaa4ea4471262bcae619dae or https://www.jasondavies.com/maps/transition/.

      Liked by 1 person

      1. Thanks for those links Marcin, very very cool!

        I’m not that good at this so I’m not sure I understand what you mean with “four spherical triangles”. What I meant with the 4 “o”‘s was something like this (apologies, this can be embarrassing…):

        If the tetrahedron and the circle would have the same volume, then the relation between the diameter of the sphere and the length of the edge of the tetrahedron would be a/d=2^(1/6) and their bodies would both be inside and outside each other, right? Then the body intersections would be circles, both leaving “marks” on the sphere and on the tetrahedron, no?

        What I mean is that there should be no distortion at all along the circumference of those circles.

        A regular tetrahedron can be “unfold” onto a rectangle: |/\/\|

        With the circles above inserted, it becomes: p/o\o/o\d (well, with some imagination 🙂 )

        If the volume of the sphere is either much bigger or much smaller than the tetrahedron, then there would be distortions everywhere except in the four points where the surface of the sphere is exactly parallel to the 4 surfaces of the tetrahedron.

        So it should be possible to make the size of those circles fit where it makes most sense to minimise distortion.

        Well, this is why I want to be a real programmer in my next life! 🙂

        Best regards.

        //Erik

        Like

      2. Sure, the distortion is zero along the circles. The problem, though, is distortion in their interiors and exteriors. What you propose is equivalent to my second bullet point, i.e. gnomonic projection. Observe that regardless of the size of a regular tetrahedron, its vertices are three times farther from its centre than the centres of its faces are. So, by Thales’ intercept theorem, the projections of equal distances along Earth’s surface onto the tetrahedron may differ by a factor of three. This is what I meant by “unacceptable distortion”.

        Liked by 1 person

      3. Thank you Marcin. I’m learning a lot!

        At the authagraph (dot com) website, page 4 shows a picture of “the World without Ends”. It is that picture that makes me so excited: “[A tessellated] world map without gaps and overlaps”. I want to scroll it, rotate and zoom in and out of it, and if possible (as it seems with gnomonic projection), chose my own distortions and so on! 🙂

        Can you tessellate the map made with your third method in the same way?

        It’s the flattening of the earth from any point of view that is mind-boggling.

        Thanks again.

        //Erik

        Like

      4. Of course you can tile the plane with the maps. You just have to squint your eye at two North Poles on both sides of the upper border (see my third paragraph). Again, the ocean hides them pretty well.

        Like

  2. Hey Marcin! I love that you got into replicating the AuthaGraph projection goals and I would like to use your results further. Would it be possible to produce a proj4 string for the projection or something similar for easier usage? I’m looking forward into looking into your projection code 🙂

    Like

    1. Ahoj, Šimone! If you look at my code, you will see that I gave it a proj4 string: augr, and a bunch of parameters with sensible defaults: lat_1= lon_1= alpha= xshift= yscale= bb= cc= roundness=. Did you mean something else?
      Please also be wary that the projection is imperfect/buggy/unfinished — more details here.

      Like

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s