d3 / d3-geo-projection

Extended geographic projections for d3-geo.
https://observablehq.com/collection/@d3/d3-geo-projection
Other
1.11k stars 201 forks source link

geoPolyhedralWaterman is (not?) the Waterman projection #125

Open Fil opened 7 years ago

Fil commented 7 years ago

I've tried my best to understand the differences between the Waterman and Cahill projection(s), and what D3 publishes as geoPolyhedralWaterman.

this is D3's version

however from Waterman's own site it's clear he always clips Antarctica in his projection (1976)

In fact, geoPolyhedralWaterman looks much more like Cahill's projection (1909), see this block by Gerald Rich

And this copy by Gene Keyes of the original 1909 drawing:

However as Gene Keyes has researched: 1) the cuts are not at the same angles in Cahill and in Waterman. See Keyes' ”Waterman review“ 2) Cahill has published several variants of his system — including this image in which he shows three variants at once! 3) Keyes has produced a new projection, called Cahill-Keyes, in which he has independently adopted the same cuts as Waterman, and introduced a different formula for the faces projections. @espinielli has a d3v3 block which has the correct formula (adapted from Mary Jo Graça's original perl code) but hasn't yet got the Antarctica cut-out.

So where does all this confusion leave us?

IMO it would be good™ to properly document and attribute these projections, which will mean at some point to:

Of course one would also like to be able to render Cahill-Keyes and Cahill's projections in all their variants (in face projections, layouts, and rotations).

Another research point I should mention is the duplication of some geographical features that are allowed to "continue" past their face's edges to ensure continuity. I don't know how we would do this in the current d3-geo system. Steve Waterman made clear to Keyes that he disliked the idea (see this comment: Steve feels that Fig. 4, the last image above, is not representative of Waterman maps, because selected portions of the globe are shown in duplicate. in the Waterman review), but Keyes wanted it nonetheless :)

This issue is probably more about history than about formulas. Sorry if it is more confused and confusing than necessary. Comments from all interested parties would be very welcome.

jrus commented 7 years ago

D3’s version is definitely not the same as Waterman’s projection (or Cahill’s, or Keyes’s, etc.); I think it’s just a glued-together combination of Gnomonic projections with the same general shape. Personally I think the D3 projection should be given a different name, as the current name is extremely misleading.

As far as I know Waterman didn’t actually publish the implementation details of his projection anywhere, but only the finished product. You could probably reverse engineer an approximation, but I’m not sure it’s worth it, as the details of his projection doesn’t seem to be especially compelling.

Or are you just talking about the Antarctica cutout and the arrangement of the sections? Those seem like fairly trivial details to me, easy to make one way or the other (or both). YMMV.

Also note that Waterman claims a copyright. I’m not exactly sure how those hold up for map projections from a legal perspective, but it’s possible that more precisely copying features of the projection might be considered copyright infringement. (Did he get any patents? I know some other map projections were patented at some point, for instance Cahill’s patent) I’m not sure if Waterman’s estate cares one way or the other, but you might ask first.

espinielli commented 7 years ago

I love Cahill's three variants at once!

Cutting Antartica, requires an extra pass for the additional face, but what IMHO would be nicer, is to add Antartica without removing it from the other lobes. Again as a personal opinion, I like very much the idea of making some geographical feature to continue past their face's edge in order to cater for land continuity. Both of these desiderata, will mean duplication of geo features and will be meaningful for "static" layouts, i.e. no rotation via versor...and could quite complicate reverse projection in case you want to handle for example mouse over events...