Giant Dymaxion Map
November 14, 2011 9:28 AM Subscribe
I can't find a high resolution dymaxion projection map. Assuming none exists, I'd like to make my own. How?
I'm a pretty experienced programmer, and fairly familiar with the math behind projections, but don't want to reinvent the wheel more than necessary. Java, Perl, and Python are languages I'm particularly comfortable in (very weak preference for one of those).
The end product should be something like this (this), but worth blowing up to about five feet.
Suggestions for public domain sattelite imagery also welcome.
I'm a pretty experienced programmer, and fairly familiar with the math behind projections, but don't want to reinvent the wheel more than necessary. Java, Perl, and Python are languages I'm particularly comfortable in (very weak preference for one of those).
The end product should be something like this (this), but worth blowing up to about five feet.
Suggestions for public domain sattelite imagery also welcome.
You can get a printed one here. And if you ask nicely, the BFI might provide you with an electronic one.
posted by adamrice at 9:37 AM on November 14, 2011
posted by adamrice at 9:37 AM on November 14, 2011
Response by poster: adamrice: The BFI versions aren't really big enough for me.
posted by phrontist at 10:06 AM on November 14, 2011
posted by phrontist at 10:06 AM on November 14, 2011
Best answer: My Google Fu isn't finding it right now, but NASA has somewhere as a part of their "Blue Marble" data set a ridiculously high-resolution composite satellite photo of the Earth. Like 23000 pixels wide, IIRC.
So step one is to get that. Step two is to figure out how to write the function that maps any point in NASA's coordinate system into a point in the Dymaxion projection. Step three is to apply that function to pluck pixels out of NASA's image and place them into your own gigantic image --- this is pretty basic image manipulation, and all three of the languages you mention have reasonable libraries to do this. Memory may become a problem, especially if you're doing subpixel antialiasing.
I'd use Java just because it's a lot faster at this sort of thing, and multi-threading something like this is trivial.
posted by qxntpqbbbqxl at 10:22 AM on November 14, 2011 [1 favorite]
So step one is to get that. Step two is to figure out how to write the function that maps any point in NASA's coordinate system into a point in the Dymaxion projection. Step three is to apply that function to pluck pixels out of NASA's image and place them into your own gigantic image --- this is pretty basic image manipulation, and all three of the languages you mention have reasonable libraries to do this. Memory may become a problem, especially if you're doing subpixel antialiasing.
I'd use Java just because it's a lot faster at this sort of thing, and multi-threading something like this is trivial.
posted by qxntpqbbbqxl at 10:22 AM on November 14, 2011 [1 favorite]
This question has an answer which links to NASA's G.Projector which might be what you're looking for.
posted by bjrn at 11:15 AM on November 14, 2011
posted by bjrn at 11:15 AM on November 14, 2011
Response by poster: qxntpqbbbqxl: So I know very little about raster image processing - will it look okay if I map from NASA to dymaxion, one pixel to many, in some cases? I thought some sort of anti-aliasing would be needed.
posted by phrontist at 11:20 AM on November 14, 2011
posted by phrontist at 11:20 AM on November 14, 2011
Best answer: Here are the big images. Click any of the 500m/pixel links and prepare to melt your computer. Each tar file contains 8 panels, each 21,000x21,000 pixels. Should be more than enough. The hardest thing about writing the program will be memory management.
posted by qxntpqbbbqxl at 11:47 AM on November 14, 2011
posted by qxntpqbbbqxl at 11:47 AM on November 14, 2011
Oh, and you might actually bump up against maximum size limits of your output image format.
posted by qxntpqbbbqxl at 11:47 AM on November 14, 2011
posted by qxntpqbbbqxl at 11:47 AM on November 14, 2011
Best answer: So according to the readme.pdf for the NASA BlueMarble imagery:
My first inclination would be to take one of the 2km/pixel BlueMarble images, and simply transform it to Dymaxion pixel by pixel. If you wind up with overlapping pixels in the Dymaxion image, you could do rudimentary anti-aliasing by just averaging the pixels. Unfortunately, it doesn't look like the Open Source standard PROJ.4 library has support for Dymaxion projections, but it looks like somebody has done the work in perl here. So, in theory, you should be able to read in the BlueMarble image using Geo::Proj4, convert each pixel to lat/long, then Geo::Dymaxion to spit it back out to a Dymaxion image. That'd be my starting point, and then refine it once I see how the pixel averaging vs. anti-aliasing goes.
Wow, that's using some brain cells I haven't used since working at USGS in college.
posted by jferg at 1:27 PM on November 14, 2011 [1 favorite]
The BMNG dataset is gridded at the following spatial resolutions: 15, 60, and 240 arc-seconds. It uses a geographic (Plate Carrée) projection, which is based on an equal latitude-longitude grid spacing (not an equal area projection!). The projection datum is WGS84.This gives you a good stepping off point - the 500m/pixel resolution should be way more than enough, I suspect the 2km/pixel resolution would be sufficient. (21800x10800 original resolution is going to give you a 6ft wide poster at 300 dpi if printed in its original projection.)
My first inclination would be to take one of the 2km/pixel BlueMarble images, and simply transform it to Dymaxion pixel by pixel. If you wind up with overlapping pixels in the Dymaxion image, you could do rudimentary anti-aliasing by just averaging the pixels. Unfortunately, it doesn't look like the Open Source standard PROJ.4 library has support for Dymaxion projections, but it looks like somebody has done the work in perl here. So, in theory, you should be able to read in the BlueMarble image using Geo::Proj4, convert each pixel to lat/long, then Geo::Dymaxion to spit it back out to a Dymaxion image. That'd be my starting point, and then refine it once I see how the pixel averaging vs. anti-aliasing goes.
Wow, that's using some brain cells I haven't used since working at USGS in college.
posted by jferg at 1:27 PM on November 14, 2011 [1 favorite]
Best answer: The right way to select the color of the output pixel is bilinear interpolation by the way. Although if you just round and select the nearest pixel, no one will probably notice.
posted by miyabo at 2:19 PM on November 14, 2011
posted by miyabo at 2:19 PM on November 14, 2011
Best answer: I took the April monthly 2km/pixel file and projected it in ArcMap to Fuller.
The resulting JPEG is 22223 x 10498, more than enough for a 6-foot image at 300dpi.
For anyone looking for a turn-key GIS solution this site has 9000px Blue Marble tiles (4 for each hemisphere) with world files.
posted by llin at 8:41 AM on November 15, 2011 [1 favorite]
The resulting JPEG is 22223 x 10498, more than enough for a 6-foot image at 300dpi.
For anyone looking for a turn-key GIS solution this site has 9000px Blue Marble tiles (4 for each hemisphere) with world files.
posted by llin at 8:41 AM on November 15, 2011 [1 favorite]
Response by poster: llin: Thanks! I was just about to start writing code, and while I'm a little crestfallen this wheel doesn't need to be reinvented, the result is excellent.
Is "ArcMap" included in this free download? I'd like to play with some other tile data I've found (undersea cables and political borders).
posted by phrontist at 8:55 AM on November 15, 2011
Is "ArcMap" included in this free download? I'd like to play with some other tile data I've found (undersea cables and political borders).
posted by phrontist at 8:55 AM on November 15, 2011
Best answer: Yes, ArcMap is included in the ArcGIS Desktop trial. It's similar to Microsoft Office, an umbrella name covering many products (ArcMap, ArcCatalog, ArcGlobe, etc).
While I'm most versed in the ArcGIS realm there are open-source GIS packages such as QGIS that could fill you GIS needs after the trial expires. ArcGIS Desktop is licensed at three levels, Basic, Standard, or Advanced (used to be called ArcView, ArcEditor, or ArcInfo) and Basic starts at over $1000.
posted by llin at 9:20 AM on November 15, 2011
While I'm most versed in the ArcGIS realm there are open-source GIS packages such as QGIS that could fill you GIS needs after the trial expires. ArcGIS Desktop is licensed at three levels, Basic, Standard, or Advanced (used to be called ArcView, ArcEditor, or ArcInfo) and Basic starts at over $1000.
posted by llin at 9:20 AM on November 15, 2011
This thread is closed to new comments.
posted by phrontist at 9:34 AM on November 14, 2011