PDA

View Full Version : Procedural mapping style experiments



gilgamec
03-21-2010, 06:42 PM
I've been experimenting recently with recreating various map styles with my procedural techniques. The first style I've attempted is from a 1914 Hammond atlas:
23103
It was a cheap atlas, and it shows; registration is pretty iffy, there are ink blobs and stripped characters (there's supposed to be a dot in the middle of the "capital" star for Kingston, for example), and the label placement is pretty sloppy. Still, it's a fairly simple map, so a good first attempt.
First off, I grabbed geodata of Jamaica's coastline, cities, roads, and rivers; these are from different datasets, so they don't quite mesh up, but the effect is there:
23104
The first thing I do is place the city circles; coastal cities are placed so the circles osculate the coastline (except for the capital). This is easy to do procedurally; just find the closest point on the coastline and move the circle towards or away from it:
23105

gilgamec
03-21-2010, 06:47 PM
Next are the mountains. The original map uses crescents of short strokes to show the general "downhill" shape of Jamaica's ridge of mountains, and its highest peak (Blue Mountain). With geodata, we can grab this too:
23109
We place overlapping crescents along the ridgeline:
23107
and stroke them:
23108
This still looks pretty mechanical, though. We can improve the look a lot by adding just a little bit of randomness; it looks like the strokes on the original map were hand-engraved, so this isn't a stretch:
23106

gilgamec
03-21-2010, 06:51 PM
Rivers and roads are next. Again, we can use our geodata to place them. The lines in the original map seem to be mere approximations; the actual road network is slightly different, and I can't find the north-eastern river in my river system data. (Or perhaps the roads have changed and the river dried up in the last century. Hard to say.) At any rate, the roads and rivers shown on the original map are:
23112
We will want to smooth them out. At this point, we have to slightly change the north-eastern road; in actuality, it seems to be a coastal road, but it has to be drawn a little bit inland (or it'lll overlap the coast).
23110
We add back in the mountains and change the line widths to match the original map:
23111

gilgamec
03-21-2010, 06:59 PM
We can now try to get the colors and fills right. The atlas is a century old, and the paper is a little yellowed; at the same time, the inks aren't the deepest black. In addition, the fills (blue sea, pink land) have to be added.
23113
Finally, we add the rest: the sea routes and labels.
23114
Compare to the original map:
23115
The colors are a little off; it looks like the inks have faded (or were never too dark to begin with). The font doesn't quite match (I used New Century Schoolbook, which is a good but not perfect match to Edwardian and late Victorian map typefaces). But even beside these two things, there's still something missing; a certain fuzziness, perhaps?

su_liam
03-21-2010, 10:48 PM
Well, in the original, the text was distressed to the point that, at least in thumbnail, you look like you have Port Autonio and St. Anus Bay. I really like the Anns/Anus thing. That, sadly is how I am...

tilt
03-22-2010, 11:03 AM
I don't think you're wrong about the fuzzyness, new map compared to old map - it would of course be contrasting. Also I feel your ocean lines are very opaque, they could use some dampening as right now it seems like they are fighting with the land for attention :)
But the big difference is the faded vs non-faded look. But good work - very nice :) ... I'll just toss a rep in your direction :)

gilgamec
03-23-2010, 04:04 PM
Well, I've fixed the colours; they're about as close as I can make them. It's still a matter of fuzziness, though, and the brutalized font. (St. Anus Bay, indeed.) Still, it's a nice style, if not especially ornate. I may use it on a bigger map at some later time. My next project in this thread, though, will be another atlas style.
23166
23167

guyanonymous
03-23-2010, 11:00 PM
I'm fascinated by this project - and impressed. There's something comfortable and familiar about the map and your recreation.

ravells
03-24-2010, 01:29 PM
What an utterly cool project. Rep on the way! I'm not sure why its so difficult to reproduce the colours...wouldn't a straight colour picker (say 3X3 average) in photoshop do it? To get the bleed on the lettering it might with worth trying an outer glow layer style using black / multiply / low opacity....might help?

su_liam
03-25-2010, 12:41 PM
Oops.
Edited for weird double post. This didn't show up an hour ago...

su_liam
03-25-2010, 01:01 PM
For the faded look, you might add a white layer below your artwork and then reduce the opacity of your artwork till it looks properly faded. That's in photoshop, you should be able to do something similar in illustrator. I'd check, but I'm booted up in windows ("This is your brain. This is your brain on windows.") and all my adobe apps are on mac.

I have an idea and a couple tuts for distressed text. My idea is to duplicate your text layer, rasterize it and apply Filter>Brush Strokes>Spatter. I'd suggest a very light, blurred spatter. Because the prototype seems fairly hard-edged, just messy, I'd probably apply a threshold to the result.

In other news, tutorials:
For Photoshop (http://freeyourdesign.com/photoshop/photoshop-tutorial-distressed-grunge-text/)
A nice video for Frustrator (http://www.layersmagazine.com/distressedtype.html)
A texty tut for 'strator (http://www.layersmagazine.com/distressing-text-with-live-trace-in-adobe-illustrator-cs2.html)

gilgamec
03-25-2010, 03:21 PM
I'm not sure why its so difficult to reproduce the colours...wouldn't a straight colour picker (say 3X3 average) in photoshop do it?
I tried it, but was only moderately successful. (There's also colour issues with the conversion from PDF to PNG, for some reason.)


To get the bleed on the lettering it might with worth trying an outer glow layer style using black / multiply / low opacity....might help?
My idea is to duplicate your text layer, rasterize it and apply Filter>Brush Strokes>Spatter. I'd suggest a very light, blurred spatter. Because the prototype seems fairly hard-edged, just messy, I'd probably apply a threshold to the result.
Both of these are probably good ideas, but I'm using neither Photoshop nor Illustrator; this is is all done procedurally in Asymptote (http://asymptote.sourceforge.net/). I'm using Illustrator for rasterization of the PDF (because it's the best tool I've found for the task; some of my experiments are in an earlier thread (http://www.cartographersguild.com/showthread.php?6639)), but nothing else.
Really, I'm quite pleased with the results; the distressed and fuzzy text is a slight issue, but given the size of the original (Jamaica is only about an inch and a half long in the atlas), it's probably neither surprising nor a big problem.

gilgamec
04-22-2010, 11:17 PM
Another day, another mapping style.

This one's from my "Reader's Digest Great World Atlas", from about 1960.
24032
The coastline I used on the last map is too low-res, so I had to find a higher-detail one:
24031 24035
We add in rivers from the same database as earlier. There's again a missing river:
24034
Cities:
24033

gilgamec
04-22-2010, 11:29 PM
The map has both roads and railroads. (Aha! That was one of the problems with the previous map -- obviously, a map from 1914 would show railroads, not highways!) The railroad database doesn't give us as complete a network as on the old map, so I had to add in a few lines.)
24037
Now roads, from the same database as the last map:
24038
Labels:
24036

gilgamec
04-22-2010, 11:48 PM
A new feature of this map is that it shows altitudes. The levels are at 6000, 600, 150 feet below sea level, and 600, 1500, 6000 feet above sea level. I grabbed a 1km resolution elevation grid and ran a contour finder, giving me these:
24040
They're much higher-frequency than (and quite different from) the ones on the old map. (Ah, well, they didn't have satellite radar topography back then.) The complexity looks like it might be too much, but let's put in the fill patterns:
24041
Comparing to the original:
24039

They compare quite well, I think, with some problems which I'll look at in the next post.

gilgamec
04-23-2010, 12:14 AM
In the last post I mentioned that there are some issues with the recreation. (Undoubtedly there's lots, but these are the two I'm most irritated with.)

First, there's a problem with the hatching in the sea area. Take a look at these two details from the maps:
24047 24048
The thing I notice about the original map is that the lines seem to fit nicely together; there's no partial lines, and what lines are there seem to meet up nicely at the corners. This is not at all what the lines in my recreation do, and I'm not certain I know how to get that effect procedurally (or, indeed, manually, at least not without an enormous amount of work).

The second problem is probably much more solvable. Again, look at these two details, of low-altitude land:
24049 24050
They both consist of blue stripes overlaid by yellow ones, but thanks to the magic of subtractive colours, the original map gives us a green! I'm still working on using CMYK to get this effect, but it's not going as well as I'd like; adding the "spot blue" (from the seas) and the "spot yellow" (from the mountains) doesn't give me the green effect I'd like. Work is ongoing to get the lowlands to look right.

Ascension
04-23-2010, 09:15 AM
The lines not meeting up looks like the problem is that they are different. Your vert lines are evenly spaced but your horiz lines have a wide white and thin teal. For the yellow thing, those may have to be on a new layer set to overlay.

Hai-Etlik
04-25-2010, 10:24 PM
Your problem with the green caught my attention as something SVG filter effects could deal with. I know you are using Asymptote, not SVG, but I decided to try anyway.



<filter
inkscape:collect="always"
id="filter5355"
width="1.3999999999999999"
height="1.3999999999999999"
x="-0.20000000000000001"
y="-0.20000000000000001">
<feTurbulence
id="feTurbulence5365"
result="result2"
baseFrequency="0.25"
type="fractalNoise"
numOctaves="4" />
<feFlood
id="feFlood5394"
flood-color="rgb(255,255,255)"
result="result3"
in="SourceGraphic" />
<feDisplacementMap
id="feDisplacementMap5363"
in2="result2"
in="SourceGraphic"
scale="4"
yChannelSelector="G" />
<feGaussianBlur
stdDeviation="0.80000000000000004"
id="feGaussianBlur5367"
result="result5" />
<feColorMatrix
id="feColorMatrix5533"
in="result2"
result="result6"
type="matrix"
values="1 0 0 0 0.5 0 0.5 0 0 0.5 0 0 0.5 0 0 0 0 0 0.6 0 " />
<feComposite
id="feComposite5392"
operator="out"
in2="result6"
in="result5"
result="result7" />
<feMerge
id="feMerge5541">
<feMergeNode
inkscape:collect="always"
id="feMergeNode5545"
in="result3" />
<feMergeNode
inkscape:collect="always"
id="feMergeNode5547"
in="result7" />
</feMerge>
<feBlend
inkscape:collect="always"
mode="multiply"
in2="BackgroundImage"
id="feBlend5357"
result="result1" />
</filter>

24104

guyanonymous
04-26-2010, 01:06 AM
OK..I'm loving where this process is taking you - and intrigued by the above svg experiment. Looking good!

gilgamec
04-27-2010, 04:47 PM
Hmmm.... I was going to post a bunch of experiments I did, trying to find the "correct" colours which combine to give the right green impression ... then I actually tried it with the colours I used in the actual map, and got about the right shade of green! (Apparently, I've been looking at the combinations too close-up.)
24179
This is done purely by setting the "yellow" color to 50% opacity.


Your problem with the green caught my attention as something SVG filter effects could deal with.This is neat! I'm most interested in how you captured the minor noise-like effects of the paper grain; that's something I hadn't even considered, and yet my brief experiments in that direction do increase verisimilitude. Thanks!

However, this (and the yellow+blue=green thing, too) does bring up a concern I have: how much should I worry about printing artifacts, or printing processes, in these recreations? The next recreation I'm working on has halftoning, and there's no way I'm going there; I'll just stick to smooth shading of solid colours. But in the 1914 map, I included the waviness of the hatching, and it improved the feel of the map quite a bit. Should I do all of this in a more "simulationist" mode, making all of my colours partly transparent and having the final effect equivalent to inks on paper?

How far do you go in emulating a map style?

Hai-Etlik
04-27-2010, 09:41 PM
This is neat! I'm most interested in how you captured the minor noise-like effects of the paper grain; that's something I hadn't even considered, and yet my brief experiments in that direction do increase verisimilitude. Thanks!


It's a fractal noise turbulence filter that I then use as both a displacement map and as a mask. I also apply a Gaussian Blur and multiply everything with the background. Each colour has this applied separately.

alizarine
04-29-2010, 06:53 PM
Great-looking reproduction - even if it doesn't look as old as the original it does have that same "feeling". A great way to simulate oldness while still allowing the map to be legible! I'll have to keep working in Illustrator before I get to this point, but I think I'll have to give this a try (with some personal modifications) at some point. Thanks for the info on how you did this!

The Stoat
05-06-2010, 01:49 PM
I like this experiment. I note that you are think how to reproduce the style more accurately. I think one of the keys to this is to remember the source of the original, a printing press. I think if your map was turned into masks for the printing press of the era it would end up looking much more like the original. Some differences that are clearly part of the printing process is the resolution and the color densities.
To recreate this best each color should be a separate layer with blur and noise should be applied to each separately to give slightly different effects. My reason for suggesting this is that in the printing process you can see they wanted some colors to bleed more like the yellow and blue. Others were meant to be sharper but suffered from flaws in the print proces, i.e. the J in Jamaica. Also all colors should be somewhat transparent, even the red and black to some extent.
To simulate the paper the base layer should be off white and a light bump map over it all to provide some texture.
I think you have definitely captured the style the maps were created in. My comment are directed at recreating some of the effects of how the maps were actually published. Definite cread for this.

gilgamec
05-11-2010, 11:45 PM
The next map I'm going to recreate is from my Prentice-Hall "University Atlas", from 1983. This is about as recent as I'm going to get (past that and we start to get GIS-produced maps, which are interesting but not what I'm targeting).
24688
(Jamaica was at the inner edge of the paper and I couldn't flatten the atlas all the way, so there's a little distortion on the right hand side.) First thing to note is that the colours on this map are halftoned; as I mentioned a couple of posts back, there is no way I'm going to attempt to recreate that. (Or, rather, I attempted it but was unable to rasterize the image in such as way as to avoid any nasty Moire aliasing.) Solid colours it is, then.
First, though, there's the standard vector stuff. There are different icons for cities depending on their size, and Kingston actually gets the "shaded area" treatment:
24685
Next come railroads. I finally figured out how to make them run under the city icons! (In brief, if you use Asymptote: clip with even-odd filltype against a path list containing the city icons and the bounding box.)
24686
Roads are in a slightly transparent red ink. The spoked-wheel thing is an airport; why the original map put Jamaica's international airport in the middle of the sea, I don't know.
24687http://www.cartographersguild.com/images/cartographer/misc/pencil.png
The map has contour lines at 8000, 6000, 4000, 2000, and 200 m below sea level, and 200, 400, 1000, 1500, 2000, and 3000 m above sea level. The same height map I used last time gives:
24689
(Wow, I really like those colours!)

gilgamec
05-11-2010, 11:54 PM
One nice feature of the original map is the shading implying slope. This was the hardest thing to get right (and even so, I can't get the same slopes shown in the original). It's simple in theory: we can calculate the slope from the height field, take the dot product with a "light" vector, and shade (with blend type "Darken"):
24690
Alas! The slopes in the mountains (in the east) are so high that there are very few slopes anywhere else. In order to show the slopes elsewhere, I change the shading to depend on the square root of the slope; this means that much smaller slopes will still be dark-ish:
24691
The spatial scale is still too small, though. A Gaussian blur will take care of that:
24692
So close, but too dark! I drop the opacity to 0.75 and cut back the darkest colour shown to be about 60% grey to get:
24693
which is very nice (but, like I said, doesn't remotely match the shading on the original). The underlying grid is a little too visible, but I'll leave that for another day (as it's not too bad at this scale).

We add back in the vector elements to get a pretty good recreation of the original map:
24694

gilgamec
05-12-2010, 12:03 AM
Now we come to labels. Take a look at the original map:
24695
There are no fewer than four different fonts used in those labels! (Compare the capital Ms in "Mandeville", "May Pen", "Montego Bay", and "JAMAICA".) identifont.com says that one of the sans-serif fonts (the one used for "Spanish Town" and "South Negril Pt.") is Gill Sans, and one of the serif fonts (the one used for "Montego Bay" and "Kingston") is Perpetua, also by Gill. The font used for "JAMAICA" looks like a Didot pastiche. However, I have no idea what the fourth font (used for "Black River" and "Mandeville") is. Any ideas?

Ascension
05-12-2010, 12:22 AM
It looks like an italic version of that sans font. Look at South Negril. Oh, and excellent job so far :)

gilgamec
05-12-2010, 01:01 AM
It looks like an italic version of that sans font. Look at South Negril.Hmmm....It certainly looks a lot like it, but I was worried about the lower-case "a", which is very different, and a couple of other characters. Looking at all of the characters of the font on my system again, though, it looks like the italic version does indeed have these differences!
Great! Thanks! Now I just have to find a font that approximates Perpetua (which is the only one I don't own); worst-case scenario, I use Didot.
Thanks!

gilgamec
05-12-2010, 02:44 AM
Well, thanks to Ascension's tip (good catch!), I've managed to put labels on the map:
24700
Didot doesn't look as good with Gill Sans as Perpetua, but it works fine. The biggest remaining problem is the labels.
You may notice that the labels are all straight (unlike the original map), whereas I've had no problem with curved labels in the past. The reason is that to get better font handling, I've moved from pdflatex to xelatex; unfortunately, the latter doesn't yet have the ability to fit text to a path. I'm in the middle of writing a (very crude) method to do that, but it's not ready yet; when it is, I'll try to curve the labels and add the JAMAICA label.

gilgamec
05-13-2010, 04:08 AM
Well, I found Perpetua on my computer at work, got the curved labels working, touched things up a bit, and produced what I think is going to be the final recreated version:
24728
24729

ravells
05-13-2010, 04:28 AM
Looking great Gilgamec! The one thing I don't get is what the advantage of mapping in a procedural way is...does it mean that once you have the procedure sorted, you just have to enter a number of variables and then the map will draw itself?

a2area
05-13-2010, 06:39 AM
It's probably for churning out an entire atlas of similar looking maps.. which can come in very handy. Otherwise you tend to drift from look to look I would think? Good thread! (-:

Ascension
05-13-2010, 08:23 AM
The last thing you might want to think about is giving it that spotty, halftone pattern, printed look. Completely optional because if it was to get printed the printed version would look spotty, but I'm just saying you could give it that look if you wanted to. Very well done, though.

gilgamec
05-13-2010, 12:35 PM
The one thing I don't get is what the advantage of mapping in a procedural way is...does it mean that once you have the procedure sorted, you just have to enter a number of variables and then the map will draw itself?Yes, it could work that way. In general, though, I use procedural methods because they let me use my programming skills to make up for my complete lack of manual dexterity and artistic talent.


The last thing you might want to think about is giving it that spotty, halftone pattern, printed look. Completely optional because if it was to get printed the printed version would look spotty, but I'm just saying you could give it that look if you wanted to. Very well done, though.I've done some tests in that direction. The biggest problem I've come across is in the conversion to PNG, actually; the (vector) dots, when rasterized, tend to create nasty Moire aliasing. I may fiddle with it some more, but as you said, it's not a big problem right now.

cjs0216
07-27-2010, 11:51 AM
I can't wait to get to a point in mapping where I can emulate some sort of style without falling back on one of Ascension's tutorials. Great work, man.


It's probably for churning out an entire atlas of similar looking maps.. which can come in very handy. Otherwise you tend to drift from look to look I would think? Good thread! (-:

This is something I'd like to eventually do with the world building I'm in the middle of doing. From overland to cities. One day maybe...

Again, great work...I'll be keeping an eye on this thread for sure!