Share this on Facebook
download .zip with all pictures
Thought about Google Maps API, but AFAIK Google Map only does Mercator. Decided to learn how GMT works.
Tracked down OP’s source using Tineye. It’s [from NASA, via Wikimedia Commons](https://en.wikipedia.org/wiki/File:Winkel-tripel-projection.jpg).
Used the following script to generate a plain white map with the circle in black, plus a few marks to help with alignment later:
# Generate map with countries and coasts
#pscoast -N1/2 -Rd -JR8i -G150/255/170 -B45g60 -K > map.ps
# “Map” with only grid and border
#psbasemap -Rd -JR8i -B45g60 -K > map.ps
# Generate blank “map”. 8 inches across
psbasemap -G -Rd -JR8i -K > map.ps
# Draw filled, black circles
psxy -R -J -SE -O -G0/0/0 << EOF >> map.ps
106.6 26.6 0 8200 8200
# Extra points for alignment
0 0 0 50 50
-90 0 0 50 50
-90 -45 0 50 50
0 -45 0 50 50
90 -45 0 50 50
-90 45 0 50 50
0 45 0 50 50
-179.9 0 0 20 20
179.9 0 0 20 20
# Convert to PNG at 256PPI (256PPI * 8 inches == 2048 pixels == target width)
ps2raster map.ps -A -E256 -Tg -Qg
This generates “map.png”, with (almost) the exact same horizontal resolution as the image from Commons. I used the commented-out pscoast line to generate a map with coasts and borders, so I could see what I was doing while I was playing with the position of the circle, then switched to the current psbase command in the final run to generate a totally blank “map”, with only my circle and some small dots for alignment overlaid.
Opened the Commons image in GIMP. Made two layers, with the plain image as the background, and an inverted copy of it on top. Added map.png as the alpha channel of the inverted layer (reversed, if I recall correctly). Used the extra dots to confirm the images were aligned properly (they fall on the grid intersections of the Commons image), then removed them.
Using map.png as the alpha-mask for the inverted copy allows the non-inverted image to show through everywhere except inside the circle.
EDIT: Realised this might look kind of intimidating. Although it’s formatted as a Unix shell script (because that’s what I was using), the only magic is in the GMT commands, and it ought to work just the same on Windows (if you want to make a batch file, you’ll need to fix the comments; Bourne shell comments start with “#”, I think .bat uses “rem”). The GIMP stuff would work very similarly in Photoshop or any layered image editor.
EDIT2: Forgot that this uses the << input redirection. That will need fixing in Windows. Easiest would be to put the points in a text file, and do
psxy -R -J -SE -O -G0/0/0 < filename.txt