Coder Social home page Coder Social logo

Authagraph projection? about d3-geo-projection HOT 35 CLOSED

d3 avatar d3 commented on May 2, 2024 1
Authagraph projection?

from d3-geo-projection.

Comments (35)

Fil avatar Fil commented on May 2, 2024 6

The Imago projection has been released with d3-geo-polygon 1.7.0 !

from d3-geo-projection.

TJung1968 avatar TJung1968 commented on May 2, 2024 4

Regarding "LibreAuthaGraph":
It has a ring to it, but… At the risk of sounding pedantic, I’d avoid using "AuthaGraph" in the name for two reasons:

  1. The differences to the original AuthaGraph are, in my opinion, too big to use the same name;
  2. I think the name was ill-chosen in the first place (by Mr. Narukawa): The "Autha" is derived from authalic = equal-area, but the projection isn’t equal-area.

Of course that is just my two cents worth.

from d3-geo-projection.

Fil avatar Fil commented on May 2, 2024 3

It's getting closer

image

from d3-geo-projection.

MarcinCiura avatar MarcinCiura commented on May 2, 2024 2

Thanks for the mention, @Fil. FWIW, by moving Iceland to the opposite side of the map, I can achieve greater similarity to the original. More importantly, my current way of interpolating near the edges of the tetrahedron is imperfect: the first derivative of what comes out from the longitude is not continuous. You can see this effect in the graticule. I can find time to fix the issue if there is any interest in the code.

from d3-geo-projection.

espinielli avatar espinielli commented on May 2, 2024 2

@mciura very nice description and implementation!

from d3-geo-projection.

jrus avatar jrus commented on May 2, 2024 2

@milimetric please don’t use the Peters projection for any purpose. It causes obscene amounts of shape distortion. If you need an equal-area projection, be prepared to relax the condition that north is always up.

from d3-geo-projection.

jrus avatar jrus commented on May 2, 2024 2

If it must be equal area and show the world with no breaks, you could try one of:
https://en.wikipedia.org/wiki/Mollweide_projection
https://en.wikipedia.org/wiki/Eckert_IV_projection
https://en.wikipedia.org/wiki/Tobler_hyperelliptical_projection
https://en.wikipedia.org/wiki/Hammer_projection

The more breaks you’re willing to add the less distortion you’ll get. Likewise you’ll get much less shape distortion if you don’t require that the projection be equal area.

from d3-geo-projection.

jkunimune avatar jkunimune commented on May 2, 2024 2

@Fil Thanks for the mention! I made a better-formatted version of that imgur post on my wordpress here:

https://kunimune.home.blog/2017/11/23/the-secrets-of-the-authagraph-revealed/

That one has the equations nicely formatted and stuff. If ye're interested in implementing it and have any questions, let me know.

from d3-geo-projection.

MarcinCiura avatar MarcinCiura commented on May 2, 2024 2

If it helps, I can share my Python program with:

  • a list of 461 land points on a more or less evenly spaced mesh, precomputed from Natural Earth data,
  • code to compute the total angular distortion in these points.
    Translating it to JS should be easy.

from d3-geo-projection.

Fil avatar Fil commented on May 2, 2024 2

My thinking is that the "optimal" k=0.59 would mark the true personality of Imago, whereas k=0.68 would only ever be an approximation of another projection, a shadow.

from d3-geo-projection.

milimetric avatar milimetric commented on May 2, 2024 1

@mciura I've been thinking of using an authagraph projection in Wikimedia's new stats website, prototyped here: https://analytics-prototype.wmflabs.org/ (just a prototype, will be a few months before there's real data behind it). On the detail page there's a map option for graphing some of the metrics, and we definitely want to offer either a Peters projection or something more accurate than Mercator (for data). So your authagraph would be great, I'll take a closer look at it in a few weeks.

from d3-geo-projection.

Fil avatar Fil commented on May 2, 2024 1

There is a very nice “AuthaPower” projection by @jkunimune15, explained at https://imgur.com/a/M0r5J

the code (in Java) is published under the MIT license at https://github.com/jkunimune15/Map-Projections

(That repo has in fact many other projections, including a few we don't have in D3.)

Also this reference post by @TJung1968 : https://blog.map-projections.net/an-equal-area-projection-in-the-fashion-of-the-authagraph-map

from d3-geo-projection.

Fil avatar Fil commented on May 2, 2024 1

The Sphere is now correct, though it's a bit painful to draw it with a 100 tiny bits of projected great circles when it's in fact just a planar rectangle. But d3-geo currently doesn't have this type of planar clipping.

Re: the name, Infinitesimal Mutated AuthaGraph Offspring gives "imago" (as in imago mundi), maybe @jkunimune15 will like it.

from d3-geo-projection.

Fil avatar Fil commented on May 2, 2024 1

For the rotation and translate I've made a superposition game:
https://beta.observablehq.com/d/01a73895203dcdfb#r

Best fit so far r = [18.05, -12.75, 2.8, 1.16] but ymmv
authafit

(Note that are three additional parameters: scale and translate)

from d3-geo-projection.

Fil avatar Fil commented on May 2, 2024

And now there is an (open source) pseudo-Authagraph, which is quite a little bit different from the (closed source) Authagraph.

https://marcinciura.wordpress.com/2016/11/20/authagraph/

from d3-geo-projection.

MarcinCiura avatar MarcinCiura commented on May 2, 2024

Feel free to ask me any questions if some day you translate my C code into whatever language you use, @milimetric

The discontinuity I mentioned above stems from using a home-made variation of quadratic Bézier curves in lines 485 and 505–515 of my code: the speed of a point moving along such a curve varies a lot when the parameter t changes linearly (and t is not even linear in my version). Although we cannot use constant-speed Bézier curves, reading articles on them does not hurt. In pseudo-Authagraph, the derivative of the longitude (i.e. the "speed" of the point) inside the interpolated region (i.e. minh < border, see line 480) should not vary a lot and it should continuously merge with the derivative of the longitude outside it (i.e. minh ≥ border).

from d3-geo-projection.

espinielli avatar espinielli commented on May 2, 2024

@mciura be wary of map projections: there is no such thing as an accurate map projection.
(also the hype on Peters is much overdue according to tweets by professional carthographers [not me] I read)

See http://brilliantmaps.com/xkcd/ for a nice summary.

HTH

from d3-geo-projection.

milimetric avatar milimetric commented on May 2, 2024

I'm ok with relaxing that North is always up, but why does the Peters shape distortion matter? What other projections do you recommend for equal-area?

from d3-geo-projection.

ehj avatar ehj commented on May 2, 2024

I know what I want for my future geography pupils :-)
An infinite plane of tessellated AuthaGraph-style tetrahedrons that you can 1) rotate as you like 2) zoom as you like and 3) as you like, choose the radius and centre of a circle on earth where there is no distortion. Any takers? :-)
I'd ask them to put Buffalo and Chicago on one circle and Stockholm and St Petersburg on another and make sure their radiuses are the same. Or Iceland and Lake Victoria, etc.
//Erik

from d3-geo-projection.

toja avatar toja commented on May 2, 2024

I'm not the author of the post, it's probably @TJung1968

from d3-geo-projection.

Fil avatar Fil commented on May 2, 2024

oops sorry @toja and @TJung1968

Thank you @jkunimune15 for chiming in. I've ported your code to javascript/D3 here.

The equations work perfectly. However I still have to correctly follow all the final dance steps (rotate/translate/cut) to make it into the proper aspect ratio.

image

from d3-geo-projection.

TJung1968 avatar TJung1968 commented on May 2, 2024

@Fil On your "settle on a good name" issue…
Since it’s very much but not exactly like the AuthGraph projection, I decided to call it "Kunimune's Mutated AuthaGraph Offspring" or "Kunimune's MAGO" for short on my website. @jkunimune15 seemed to like that name.

Just a suggestion, of course… Won’t bite you if you decide to choose another name. ;-)

Great work, thank you!

from d3-geo-projection.

ehj avatar ehj commented on May 2, 2024

from d3-geo-projection.

Fil avatar Fil commented on May 2, 2024

The projection now fully works with its inverse. I have no clue how to select the correct rotations (especially for M2 and M3).

https://beta.observablehq.com/d/01a73895203dcdfb#M2

from d3-geo-projection.

ehj avatar ehj commented on May 2, 2024

from d3-geo-projection.

jkunimune avatar jkunimune commented on May 2, 2024

I am always in favour of backronyms!

from d3-geo-projection.

Fil avatar Fil commented on May 2, 2024

Playing again over the week-end with this projection, I find it easier to fit it to the original design by using k = 0.68 rather than k=0.7.

I would go further: in my view, the map is more comfortable with a much lower exponent, like k=0.62 or 0.6: I don't know how much that costs in terms of distortion, but with a lower k you don't get the feeling that Brazil is "wrong".

See
https://beta.observablehq.com/d/d9209b3ee923f4b4

(I will push the code to a branch of d3-geo-polygon in a few hours.)

from d3-geo-projection.

waldyrious avatar waldyrious commented on May 2, 2024

I would go further: in my view, the map is more comfortable with a much lower exponent, like k=0.62 or 0.6: I don't know how much that costs in terms of distortion, but with a lower k you don't get the feeling that Brazil is "wrong".

From a purely aesthetic perspective, I gotta say that going even lower makes the map "feel" significantly less distorted in the landforms (whether this is actually true is another topic, but it could be interesting to measure distortion restricted only to the land areas).

Here's with k = 0.55:

screenshot_2019-02-24 the imago projection

Besides Brazil, it seems to me that Africa, Australia, Asia, Siberia and Greenland all look closer to their actual shapes.

from d3-geo-projection.

ehj avatar ehj commented on May 2, 2024

from d3-geo-projection.

Fil avatar Fil commented on May 2, 2024

Hi @ehj,

It should work - the periodicity of the tiles is independent of the way we arrange the contents on each tile.

(Note that it's not "any cutout" that will fold properly, but only cutouts at specific angles and arranged along certain lines, as in the schema.)

It would be great to have a notebook to demonstrate this property.

I've started something here but it's still missing a few things, like the bold rectangle on the right, the triangle, the tile pattern etc.
https://beta.observablehq.com/@fil/imago-tiling

Help appreciated! It's also a great way to test the projection (it looks like there is a bug with the Sphere in some cases…).

from d3-geo-projection.

Fil avatar Fil commented on May 2, 2024

@mciura I was indeed working on a notebook for the distorsion, which you can check at
https://beta.observablehq.com/d/8941e2624ed51f6d
(not finished… I'm not sure whether trying to cap the maximum is the best strategy)

From my tests it appears that the optimal value (to minimize angular distorsion on land) is for k = 0.59.

Again, don't hesitate to play with it and suggest changes!

from d3-geo-projection.

TJung1968 avatar TJung1968 commented on May 2, 2024

Thanks a lot @Fil – your tool is really helpful in evaluating the distortion patterns!

First off, I’d like to express my hope that k (and shift as well) will not be hard coded but can be set by the user as parameters. (I guess you did have this in mind but no one voiced it so far…)
But that of course leaves the decision what the default value will be. And here, I’m a bit torn:

  1. On one hand, I tend to assume that a lot of users will hope for a projection that is as close to the original AuthaGraph as possible, which suggest to choose k = 0.68 as default.
  2. On the other hand, I agree that values around 0.6 look better. Moreover, since the AuthaGraph isn’t authalic anyway, I think it doesn’t hurt to take a few further steps away from equivalence in order to obtain better shapes.

In other words: I really don’t know what’s best. :-/

from d3-geo-projection.

TJung1968 avatar TJung1968 commented on May 2, 2024

Very good point!

from d3-geo-projection.

Fil avatar Fil commented on May 2, 2024

The imago branch will be merged from d3/d3-geo-polygon#24
Please test and comment there.

from d3-geo-projection.

Droyk avatar Droyk commented on May 2, 2024

Possible to add this map in the interactive version i.e. project transition https://bl.ocks.org/mbostock/3711652

from d3-geo-projection.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.