8
$\begingroup$

I made a nice fantasy map with some really interesting geographic constellations, fitting my story. The climate zones don't fit, however.

I found the tool, Map to Globe where I can upload my map to create a globe. Is there a similar tool, where I can change the pole axis and download the map again?

Update: I found another tool, Worldmapgenerator that does exactly what I want, but only with Earth. I want to do the same but with my own continents and islands

Thanks for your help.

this is what i have

this is what i want

$\endgroup$
12
  • $\begingroup$ Question: have you tried rotating the image of your source map to change the axis location? $\endgroup$
    – elemtilas
    Commented Aug 9, 2021 at 16:06
  • $\begingroup$ The problem is, that each worldmap is strechd more and more, when you move awayfrom the aquator. if you stand one meter south of the northpole, and move in a circle around the pole, you would would cross the entire Worldmap from left to right in seconds. And this extreme steching will than be on the sides of the map. That is not how a worldmap looks like $\endgroup$
    – Tecnick3
    Commented Aug 9, 2021 at 16:11
  • $\begingroup$ If you use this tool, you can see how the map is streched ylose to the poles. you can' just turn the picture by 90 degree. worldmapgenerator.com/en/wizard/step/projection/… $\endgroup$
    – Tecnick3
    Commented Aug 9, 2021 at 16:15
  • 1
    $\begingroup$ I don't understand what you mean. You said you wanted to change the pole axis. I think all you'd have to do is rotate your source image however many degrees you want to change it. Then put that into map to globe. $\endgroup$
    – elemtilas
    Commented Aug 9, 2021 at 16:15
  • 1
    $\begingroup$ How did you create a distortion-accurate equirectangular map to begin with? $\endgroup$
    – rek
    Commented Aug 10, 2021 at 12:39

3 Answers 3

1
$\begingroup$

If I understand you correctly, what you want to do is re-project an existing equirectangular map to have the pole(s) in a different location—and your title question (“transfer onto a globe and back”) is how you think this might be done, not something that’s absolutely mandatory. Am I right?

That is, would something that can do the re-projection without ever showing you a globe suit you? Because there’s software that can do it for you. Two options are the Cartopy cartography library for Python, and the G.Projector tool from NASA that uses Java.

My evaluation so far: Cartopy gives better results, but is more fiddly to install and use. G.Projector is more straightforward. I’ll go through steps for both.

Here’s a world map I’ll use to demonstrate. It’s not much of a map, but it will do for our purposes.

A fairly low-res, low-effort world map of an invented world, in equirectangular projection.

We’re going to re-project it so that the new poles are on what’s currently the equator—the north pole will lie on that big landmass to the left (0°N 135°W), and the south pole on the smallest landmass in the cluster of three in the centre (0°N 45°E). But the methods shown will be fully adaptable to wherever you want your poles to be.


Installation

Unfortunately neither of these were particularly straightforward for me to install or run. Maybe you’ll have better luck?

Cartopy

  1. Install Miniconda.
  2. Assuming without loss of generality that you’re on Windows, open the Anaconda Prompt that should now be on your Start Menu.
  3. Type in conda install -c conda-forge cartopy and hit Enter.

I haven’t tested this method, but it should work? (I already have Python on my computer, but not through Anaconda, so I first tried installing Cartopy through pip… ★☆☆☆☆ Do Not Recommend. It’d probably go better on Linux than on Windows, but the Windows machine is what I had at the time!)

G.Projector

  1. Install Java.
  2. Download G.Projector and extract it wherever you like.
  3. Again assuming you’re on a Windows computer, double-click on G.Projector.exe in the folder you just extracted. After a delay, you should get a file chooser window.

(Give it time, and if you’ve got other programs open, Alt+Tab between your windows occasionally. I thought it hadn’t worked, and I ended up fiddling around and finding a way to open it manually, only to find while writing this up that it had opened in the background without a taskbar icon. If it doesn’t work, let me know and I’ll share the steps I took to open it.)


Running Cartopy

  1. Copy this short script into a text file and save it as reproject.py in the same place as your image.
    • Change the filenames notmuchofaworldmap.png and stillnotmuchofamap.png to be your existing image, and a new name for your re-projected image, respectively.
    • Also change the numbers for pole_longitude and pole_latitude, and for figsize, to whatever you want.
import matplotlib.pyplot as plt
import cartopy.crs as ccrs

# The image starts in a PlateCarree (equirectangular) projection, taking up
# the entire globe…
img_projection = ccrs.PlateCarree()
img_extent = (-180.0, 180.0, -90.0, 90.0)

# …but we draw the map in a RotatedPole projection. Set the pole location to
# suit yourself.
map_projection = ccrs.RotatedPole(pole_longitude=45.0, pole_latitude=0.0)

# Load the image.
img = plt.imread("notmuchofaworldmap.png")

# Create a new map at a size of 720×360 pixels @ 100dpi (the default for
# matplotlib). I chose these sizes because this is how big I made my sample
# map; change them to suit your image.
fig = plt.figure(figsize=(7.2, 3.6), frameon=False)
fig.tight_layout(pad=0)
ax = plt.axes(projection=map_projection, frame_on=False)
ax.set_global()
ax.imshow(img, origin="upper", transform=img_projection, extent=img_extent)

# Save the result!
plt.savefig("stillnotmuchofamap.png", bbox_inches="tight", pad_inches=0)
  1. In the Anaconda Prompt that you still have open from before, navigate (with cd) to the location of your image and the script.
  2. Type python reproject.py and hit Enter.

Here’s the result of running this on the sample map.

The same map of an invented world, re-projected so the poles are at a different location.

It ain’t pretty, though that’s mostly because my original map was so low-quality. There will be distortion, but at the very least, it’ll show you how it should look, and you can take steps to tidy up from there!

One thing I haven’t quite gotten right yet is making the result have the same dimensions as the original. A decent chunk of the code up there is just to get it to stop putting borders and padding around everything, which is apparently not easy! And it still comes out to 22.5% smaller than the original. This may be a side effect of the re-projection process, but I don’t see why it should be. A crude solution would be to make the output bigger…


Running G.Projector

  1. In the file chooser that opened up previously, find and open your image. Confirm that the default import options (equirectangular, −180° to 180° longitude, −90° to 90° latitude) are correct and click “Okay”.
  2. In the Projection dialog that’s open by default, change the projection to “Equirectangular (Oblique)”, and change the “Centered on” position to whatever you choose.
    • As the name suggests, “Centered on” sets the centre of the map, not the pole location like we did with Cartopy.
    • If, as in my example, you want the (old) north pole to be at the centre, then the latitude will be 90°. The longitude you choose will point up from there, towards the new north pole (so -135° in my example).
  3. On the Window menu, open the Graticule dialog and change Stroke to “None”. Likewise, open the Overlay dialog and change it to “<none>”.
  4. On the File menu, use “Save map as...” to save the re-projected result, choosing whatever image dimensions you want (probably the same as the original image).

Here’s what I got: The same map of an invented world, re-projected so the poles are at a different location.

This is even less pretty than the Cartopy version. But it did the job!

$\endgroup$
0
$\begingroup$

I can propose a sort of workaround:

  1. Redraw your map as best you can in the Fuller/icosahedral projection. Map to Globe may be useful for getting somewhat accurate polar views for this step.

  2. Rearrange the faces of the icosahedron so the new poles are at the top and bottom (the points of the triangles at the top and bottom are the 90°N and 90°S points on a globe), in one of these configurations:
    Three flattened icosahedrals Remember you can subdivide the 20 triangles above into smaller triangles each and rearrange them to get the precision you need. This would be easiest in a vector program like Adobe Illustrator or Affinity Designer.

  3. Save it as a PNG with transparency (for the gaps around the triangles, shown as horizontal lines above).

  4. Upload it to Icosahedral to Equirectangular Converter and select the configuration that matches.

  5. Save the result and redraw to the size and level of detail needed.

Admittedly this has a few drawbacks, not least of which is redrawing the map twice. If you're working from a 'finished' map with lots of detail you may be better off waiting for another approach.

$\endgroup$
0
$\begingroup$

If you've already drawn your world map as a single rectangle, either by hand or in some raster program like Photoshop or Gimp, it is pretty much unusable (without significant cleanup) for what you are picturing regardless of what tool you find because of how much square maps distort actual shapes.

The reason world map generator works as well as it does is because it uses an actual 3-d vector rendering of the Earth. Vectors can be losslessly transformed whereas maps made from your own hand drawing or pixel art can not.

Your best bet is to load the map into www.maptoglobe.com and eyeball reconstruct it, maybe even taking screenshots at various angles for references. Otherwise you will end up with funny line sharpness and stretching such that even a mathematically prefect rotation of your original map will look bad.

$\endgroup$
2
  • $\begingroup$ Can't the Mercator projection be reversed though? Shouldn't it work everywhere except exactly at the pole? $\endgroup$
    – David
    Commented Sep 14, 2021 at 20:56
  • 1
    $\begingroup$ @David not exactly. Imagine your hand drawn map has all lines exactly 3px wide, and the whole map is then projected onto a sphere. At 45°N the lines will narrow to 2.12px. At 60°N they will be 1.5px. at 80°N they are 0.53px etc. When you rotate it, and stretch it back out into a rectangle, these issues are then compounded by a second stretching such that lines moved from 80°N to 0°N by the rotation are now 0.53px, and lines that moved from 0°N to 80°N become 17px wide... so yes, things will be more or less where they belong, but the outcome is too messy to be worth while for most application $\endgroup$
    – Nosajimiki
    Commented Sep 14, 2021 at 21:28

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .