-
Notifications
You must be signed in to change notification settings - Fork 793
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add Dymaxion/Fuller Projection #232
Comments
That Javascript code looks like it is a direct copy of Robert W. Gray's C code with some small adjustments for Javascript. I am not a lawyer, but it seems like Robert W. Gray's C code would have rights to license and copyright. The problem with integrating this Gray's C code in PROJ.4 is the licensing "[t]his C program is copyrighted by Robert W. Gray and may not be used in ANY for-profit project without written permission" (emphasis added). Getting permission would be the first step for incorporating this code to be incorporated into the project. Gray has a little more information about the Dymaxion/Fuller projection on the his website. |
👍 I so much would love to see dymaxion support - best projection ever :) |
Hello, I recently opened the above basemap issue about this. Is there any more recent info? d3 seemed to include the js port of the code by including the copyright statement. If proj4 is not itself for-profit it should be possible to just include it and add a proviso to the proj4 licence which states the exception. Then it's up to people who use the library to be aware of the licensing? In addition to the document the website says:
The reason I include this is because the inline statement only says you cannot use it for-profit, while this says you can use it for anything not for-profit. |
That's definitely a non-free clause that wouldn't be liked by downstream distros. It's certainly less free than the MIT license used for proj4. |
We are not including this projection in Proj.4 until the licensing issues are resolved by the author(s). |
The original submitter has done nothing to resolve this for more than 3 years. Additionally Dymaxion is even a trademark of the BF Institute, so even having a clean room reimplementation of R. Gray's code in PROJ.4 would cause trouble, unless we call it something else (like myDaxion, Damyxion, etc). Hence closing this. I see no chance this is going to happen |
From the linked d3 issue above, it appears that there's now a cleanroom implementation of the projection in JS. The authors have skirted the trademark issue by calling it "Buckminster Fuller's Airocean projection". |
Well then, I guess it is time for one of the many people who has requested this projection to step up and implement it. Gentlemen, start your engines! |
The cleanroom implementations referenced are in https://github.com/d3/d3-geo-polygon/blob/master/src/grayfuller.js and https://github.com/d3/d3-geo-polygon/blob/master/src/airocean.js |
AMA |
Okay! Will you add the necessary code to PROJ? |
I don't think so. The face projection is not so hard, but the polyhedral stuff is a lot of JS and will not lend itself to a simple adaptation. A solution for that might be to fix the coordinates of each triangle, rather than use a generic "face tree to projection" approach. But I'll gladly help whoever wants to try it :) |
This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions. |
I am willing to at least take a look at this. I went through your documentation, is there a style guide or anything I should be aware of before I get started? |
That sounds great! We do have some guidelines for code contributors here: https://proj.org/community/code_contributions.html. Note that they are not entirely up to date, so a few corrections are in order:
I'll update the guidelines shortly. Happy hacking :-) |
@amillscampisi Did you make any progress on this? I'm also interested in having a look |
I haven’t done any work on it.
…On Sat, Jul 31, 2021 at 5:38 PM Stefan ***@***.***> wrote:
@amillscampisi <https://github.com/amillscampisi> Did you make any
progress on this? I'm also interested in having a look
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
<#232 (comment)>, or
unsubscribe
<https://github.com/notifications/unsubscribe-auth/ACABX6XD556IIOOJGEPCHVDT2SJO7ANCNFSM4BESK2RA>
.
|
I may take a run at this this week - I'm not familiar with this project's structure at all but I'm a quick study. I'm guessing I should be looking at I'd also appreciate any pointers to where the projection API (?) is defined, I can do my own digging of course but if it's already in someone's memory banks it'd save me some time :) |
4559a3f could be an example of how to add a projection (you won't need changes in coordinateoperation_constants.hpp and proj_constants.h as there's no mapping to EPSG projection and parameter names for Dymaxion)
The public API ? https://proj.org/development/quickstart.html might help. But for adding a new projection method, using the |
Hello everyone! I'm a GIS developer that silently followed this issue for a while now. The lack of dymaxion-fuller or dymaxion-fuller-like projection in the proj library is very problematic for people who have applications requiring a map of uninterrupted lands with little distortion. I myself have a need for such a projection, so I took the time to research and program what amount to a cleanroom implementation in C/C++ of the dymaxion-fuller projection. You can find the fork in this repository. Basically how the forward projection work is done by:
Here's an image of the result using the picture generator python script of the project: I have not written any test yet, but I have used this projection profusely.
Here's a picture of the worldmap OSM data reprojected using this implementation And a closeup of the region of specific OSM data that I imported for my own use. For the time being, I need to recompile many things that use the proj lib so that I can use this custom projection implementation. Hence why I (and probably many other people) would be pretty pleased to see this implementation merged in the main branch of the proj library. I would be very happy if someone could reopen this issue and put a bullet point task list of things to do so that my contribution could be merged! |
See commit c03a3c3 as an example of a new projection being added |
Thank you very much! |
I have written some tests for the forward and inverse projection that cover all 23 triangle faces that compose the polyhedral net for the projection. Those tests pass successfully with 0.1mm precision. The only uncertainty I have now is about the name of the projection and the whole legal issue surrounding it that I absolutely want no part in. Any other suggestion? |
Sounds good to me, especially if it matches what other implementations have used. We definitely need to avoid any trademark issue when we are aware in advance of them. |
Airocean has my vote too, for the sake of consistency with D3; to be honest I think we are all overly cautious with this trademark issue, because it's not holding water anyway. But, better safe than sorry :) |
I had to deal with take down notice recently, so yes... |
I suggest the name: Fuller (projection) |
It's not clear to me where the name "Air-Ocean" comes from. While I can't freely view the two articles by Gray (1, 2), the abstracts don't mention Airocean. Jason Davies and d3-geo-polygon have settled on Fuller's Airocean projection, but again, I don't see their source for the name. To me, "Fuller projection" is simpler and consistent with most others projections named after a person. ArcGIS Pro chose this name too. However, a counterpoint is that the 1954 version with icosahedrons (as implemented in the PR) was created by multiple individuals: Fuller, cartographer Shoji Sadao, and implemented by Jason Davies (2013), Enrico Spinielli (2017) and Philippe Rivière. |
Fuller has made dozens of maps with different arrangements of squares and triangles; he was using the word “Dymaxion” to depict, well, everything he invented: car, house, scrapbook… The most iconic of his maps is the icosahedron-based arrangement, made only of triangles (some cut in half), which we implemented in D3: That is where the name “Airocean” comes from. It is spelled Air-Ocean on some other iterations “Map (Based on Buckminster Fuller's Dymaxion Airocean World)”, is the full title of a very large and famous painting by Jasper Johns (1967) |
AFAIK there are 3 implementations of this projection in JavaScript:
|
Thanks @Fil for tracing the origins! Looking further, I see the earliest being the 1954 "Raleigh Edition" with the title "Dymaxion Airocean World". Given there are a few different icosahedral nets (e.g. here) and an abundance of potential names, it does make sense to align with all other open source implementations and use "airocean" as the name for this representation. |
As per @mwtoews suggestion, I added support for the |
Reported by wildintellect on 12 Apr 2014 18:41 UTC
Someone's already done the hard part, we just need to convert it to C
I believe this was written to work with Proj4js
http://mbostock.github.io/protovis/ex/dymax.js
Migrated-From: https://trac.osgeo.org/proj/ticket/232
The text was updated successfully, but these errors were encountered: