The Biggest Worldmap to Print

by doncore in Craft > Digital Graphics

819 Views, 8 Favorites, 0 Comments

The Biggest Worldmap to Print

photo_2017-01-18_14-44-57.jpg

Hi there,

this instructable is about some code, google, a lot of pixels and the possibility of printing a worldmap as big as you want. If you open it, it will be around 23x23 meters with a 72dpi resolution.

The details are quite good. The view is about zoomlevel 7 on maps. This includes citys with a population bigger than 70.000 (i guess).

I can not imagine that someone will realy print it this big, but it makes a nice wall decoration, even in a much smaller scale. It should be at least 3500mm wide if you want to be able to read everything. Cutting something off (white part at the bottom) and you will have a complete wall full of ... well, the world.

You can play around with the zoom-level to get less details (text) and have a better reading experience.

What You Need

photo_2017-06-07_07-45-07.jpg

You need a lot of harddiskpace, ram and patience.

In the end i wasn't even able to open it on a windows pc. But no problem with GIMP on linux.

It just takes 15 minutes to open. ;)

I would recommend at least 100GB free Diskspace and 16GB of RAM on a Linux machine.

I didn't test it on windows, but it should work just the same way.

No mouse will be needed. It can all be done via command-line. A unbelievable big map of the world and no gui needed :)

What Will We Do?

You will make 4 folders, divide the world into 4 parts, grab those parts tile by tile, each 512x512 pixels, stitch them together and after that, stitch those 4 tiles into one big worldmap.

You will end up with a file of 1,2GB in size. It consists of 65536x65536 pixels. (didn't count it)

And you won't see anything, untill it is finished.

You have to decide what kind of map you want, so this will be our next step: Decisions.

What Kind of Map Do You Want?

h.png
hz.png
r.png
rz.png
t.png
tz.png
photo_2017-01-21_09-49-54.jpg
yz.png
photo_2017-01-18_14-44-57.jpg
test.png

We are going to grab the map tile by tile with google maps.

Google offers different types of maps. Those types will be called by different "lyrs"-variables.

Don't worry about those missing parts in this pictures. Those were errors in my first attempt.

lyrs=h

You can generate a map just made out of text and an alpha-channel. Good for overlays.

It looks something like the first picture. The second one is a zoom of it.

(Don't worry about the gray. Thats just a test, if the alpha-channel works.)

lyrs=r

This one is a bit more colorfull, but quite 2D-ish. Seen in pictures 3 and 4.

lyrs=t (t like "terrain")

This one looks more interesting. A little bit of 3D and no text. I love this one, because you don't have any borders or countries. Just the world as it is. Pictures 5 and 6.

lyrs=y

This looks very cool, as long as you don't look to close. The text is hardly readable. And it is quite dark. It is the sat-view. This map will generate a 2.6GB PNG. Pictures 7 and 8.

If you print it very large (about 5meters) it looks very nice.

lyrs=p

This is the kind of map i prefer. Just like it looks on my Smartphone. Pictures 9 and 10.

So the following instructions are made with lyrs=p

You can change it and play around by changing this variable.

Let's Go

Start by making 4 folders. I named mine this way: (just to follow this instruction) 0x0, 0x1, 1x0, 1x1

It looks like this in my home folder "xbmc". I've made a pre-folder called "map" to keep an overwiew.

/xbmc/map/0x0/

/xbmc/map/0x1/

/xbmc/map/1x0/

/xbmc/map/1x1/

Now, open your terminal and start copy&paste this lines.

--------------------------

But, first, let me explain one line of it:

"curl -O -k "https://mt0.google.com/vt?lyrs=p&scale=2&z=7&hl=loc&y=[0000-0063]&x=[0000-00063]""

Translation: Go to maps, try to use https, if not possible, use http. Get the "p"-map, scale 2, zoomlevel 7, start in the upper left at 0 and end in with 63.

This will download the first quarter of the map in 64x64 tiles. When it is finished, there should be 4096 files in your first folder.

--------------------------

Let's start: all of this lines can be c&p into a terminal. Make sure your folder are correctly named.

The text in the (...) is for explenation. Don't copy it into your terminal.

cd ~/xbmc/map/0x0/ (navigate into your first folder)

curl -O -k "https://mt0.google.com/vt?lyrs=p&scale=2&z=7&hl=loc&y=[0000-0063]&x=[0000-00063]"

(this will take some time. Just wait until it's finished)

cd ~/xbmc/map/0x1/

curl -O -k "https://mt0.google.com/vt?lyrs=p&scale=2&z=7&hl=loc&y=[0000-0063]&x=[0064-0127]"

(this will take some time. Just wait until it's finished)

cd ~/xbmc/map/1x0

curl -O -k "https://mt0.google.com/vt?lyrs=p&scale=2&z=7&hl=loc&y=[0064-0127]&x=[0000-0063]"

(this will take some time. Just wait until it's finished)

cd ~/xbmc/map/1x1

curl -O -k "https://mt0.google.com/vt?lyrs=p&scale=2&z=7&hl=loc&y=[0064-0127]&x=[0064-0127]"

(this will take some time. Just wait until it's finished)

Now that you have all your tiles (16384 pieces), it's time to stitch it.

The easiest way is by using ImageMagick. It is installed by default, if you use Linux mint.

montage ~/xbmc/map/0x0/* -tile 64x64 -geometry +0+0 ~/xbmc/map/0x0.png

(it will take some time. Just wait until it's finished)

This will generate the first quarter of the map: xbmc/map/0x0.png

If you are curious, you can open this part with gimp or something like that.

Go on with the other three parts. And again: wait until it is finished.

montage ~/xbmc/map/0x1/* -tile 64x64 -geometry +0+0 ~/xbmc/map/0x1.png

..

montage ~/xbmc/map/1x0/* -tile 64x64 -geometry +0+0 ~/xbmc/map/1x0.png

..

montage ~/xbmc/map/1x1/* -tile 64x64 -geometry +0+0 ~/xbmc/map/1x1.png

Now we have 4 Tiles which will be stitched into one big map.

The command is quite similar:

montage $ ~/xbmc/map/*.png -tile 2x2 -geometry +0+0 ~/map1.png

If you did it with lyrs=p and zoomlevel7 it should be around 1.2GB.

Opening it in Gimp will use around 36GB of your disk and all RAM you have.

Gimp uses a "gimpswap" file, which you can find in your home-folder under .gimp.

Gimp doesn't allways delete it, but you can erase it by hand.

Congrats! You have spent some time to get your own world :)

What about printing it?

Produce It (only for Home)

photo_2017-01-27_09-48-22.jpg
photo_2017-01-27_09-48-31.jpg
Unbenannt-1.jpg
lx.JPG

------------------------

I read through the copyright disclaimers and i'm as sure as i can be about this:

as long as you use it in your home, no one from google can say anything against it.

But DON'T TRY TO MAKE MONEY WITH THIS.

------------------------

Becaus of copyright-reasons i won't show the whole printed map. But some parts of it and what i did to get it on my wall.

You will need to find a company which has soemthing to do with photo-wallpaper or large format printing (LFP).

I have printed it on a self-sticking wallpaper with a Latex-Printer (HP360). Totally in width: 3,7 meters. I've cut the whole arctic-part away. Each Part 1,5meters wide and 2.4 meters high. 3 Parts in total.

Picture 4 is a keen view of the printing process. Picture 3 is more like it looks finished.

The other pictures are just small parts out of the map, when you print it 3,7meters in width.

Some pro tipps: if you want to have it printed, just ask about the pricing.

"Hi, i have a picture that i want to have printed in a rather large way. x-meters wide and x-meters high. Can you make me an offer?"

The file is a monster. It takes a lot of time to rip it (thats the part where the software calculates the dimensions, colour etc.). If the company doesn't know about this extra-time, you may save some money.

You can print it on everything. DiBond or Kappa would be a good alternative.

-----------------

Annotations:

There were many busts in this process. You probably have seen those errors (missing tiles) in the first pictures.

It took a while to figure this out and this project nearly failed at that point.

In the beginning the code looked like this:

curl -O "https://mt0.google.com/vt?lyrs=p&scale=2&z=7&hl=loc&y=[0-63]&x=[0-63]"

And now it looks like this:

curl -O -k "https://mt0.google.com/vt?lyrs=p&scale=2&z=7&hl=loc&y=[0000-0063]&x=[0000-0063]"

It's the little -k at start and the ordering 0's at the end, which makes the difference.

"Special k" allways makes the difference ;)

k: It tries to get https, but if this failes, it uses http just for that tile. It's a curl variable.

000: to have all tiles correctly sorted you need zeros.

My harddisks ran over several times, my RAM was crying and my patience was challenging my willpower.

But, in the end: damn, this looks so good. And it "feels" good, too. It's the biggest "picture" i've ever made and didn't even start a gui bases program. The whole map made with code. It's as open source as it can be.

-----------------------

Have fun with it :)

Thanks for reading. If you have questions about it, just ask. I can't tell you how to make it on windows. As said in the beginning: it should work on windows, too. But i haven't tried it (and won't, because it is very easy on linux).

And i can't give you the map as a file. Copyright, you know...