Comments (35)
The Imago projection has been released with d3-geo-polygon 1.7.0 !
from d3-geo-projection.
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:
- The differences to the original AuthaGraph are, in my opinion, too big to use the same name;
- 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.
It's getting closer
from d3-geo-projection.
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.
@mciura very nice description and implementation!
from d3-geo-projection.
@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.
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.
@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.
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.
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.
@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.
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.
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.
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
(Note that are three additional parameters: scale and translate)
from d3-geo-projection.
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.
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.
@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.
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.
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.
I'm not the author of the post, it's probably @TJung1968
from d3-geo-projection.
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.
from d3-geo-projection.
@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.
from d3-geo-projection.
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.
from d3-geo-projection.
I am always in favour of backronyms!
from d3-geo-projection.
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.
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:
Besides Brazil, it seems to me that Africa, Australia, Asia, Siberia and Greenland all look closer to their actual shapes.
from d3-geo-projection.
from d3-geo-projection.
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.
@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.
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:
- 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.
- 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.
Very good point!
from d3-geo-projection.
The imago branch will be merged from d3/d3-geo-polygon#24
Please test and comment there.
from d3-geo-projection.
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)
- Snyder's "Magnifying-Glass" projections?
- Relax d3-array dependency to 1-2. HOT 3
- compatibility of geoRectangularPolyconicRaw with geoInterrupt HOT 3
- There are es2015 in the final package file HOT 3
- Count Number Of Visible Objects Within Projection HOT 1
- What is the source of the projections? HOT 10
- Pangean projection HOT 5
- Two-point equidistant projection has artifacts when showing the whole world HOT 6
- geoPath.curve ? HOT 1
- Support All US Territories in Albers USA projection HOT 7
- geoProject converts hole to MultiPolygon HOT 2
- Using this lib in TypeScript? HOT 2
- interrupted projections sometimes have partially undefined inverse HOT 2
- More customizable Wagner projections (and others)? HOT 7
- Add Cupola projection HOT 14
- A new quincuncial projection HOT 10
- geoStitch mislabels the union of two Polygons forming a hole on the date line as a MultiPolygon
- Could not find a declaration file HOT 2
- ISEA visualization? HOT 3
- No types definition package of d3-geo-projection HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from d3-geo-projection.