I walk to work every day and pass lines of traffic with bored drivers staring vacantly into the distance. Many of these commuters have invested in personalised number plates for their cars to help enhance their own personal brand. I have to admit that it’s not for me as they cost a minimum of £250 and often need explanation. I’m yet to tap on the window of G7 PMQ and ask whether the occupant is Theresa May? (see..they need explanation!).

Regardless of what you think of them, there is a certain ingenuity displayed by many of their owners in using numerics to represent letters. For example:-

H1 5UE (Hi Sue)

K4 REN (Karen)

B16 BOY (BIG BOY)

K1 NKY (you get the picture)

Now whilst I don’t own a personalised number plate I am in possession of a postcode. It’s SN3 1QG and try as I might I can only make it say “SNEIQG” which doesn’t mean anything at all in any language I can Google. But it got me wondering whether their were others out there with slightly more meaningful postcodes. So I thought I’d have a look.

Firstly I downloaded the Ordnance Survey postcode open data from their excellent data portal and imported it into a PostgreSQL database. Then I created by potential word set by replacing the numerics in the postcodes with relevant substitute letters:-

CREATE OR REPLACE VIEW data_os_opendata.opennames_postcodes AS

SELECT wkb_geometry,

id,

name1 as postcode,

REPLACE(

REPLACE(

REPLACE(

REPLACE(

REPLACE(

REPLACE(

REPLACE(

REPLACE(

REPLACE(

REPLACE(

REPLACE

(name1,

'1', 'I'),

'2', 'Z'),

'3', 'E'),

'4', 'A'),

'5', 'S'),

'6','G'),

'7','Y'),

'8', 'B'),

'9','G'),

'0','O'),

' ','') AS lexical

FROM data_os_opendata.opennames WHERE local_type='Postcode'

The code above created me a nice view with postcodes looking as follows:-

"KA10 6JH","KAIOGJH"

"KA8 9LX","KABGLX"

"KA11 1AZ","KAIIIAZ"

"KA1 5RD","KAISRD"

"KA8 8AY","KABBAY"

"KA12 0UG","KAIZOUG"

"KA9 1PS","KAGIPS"

"KA7 3GZ","KAYEGZ"

"KA12 0PE","KAIZOPE"

"KA12 8EN","KAIZBEN"

"KA7 3NY","KAYENY"

"KA12 0SQ","KAIZOSQ"

"KA11 4BF","KAIIABF"

So far so good but none of those look like words to me so we need to filter out the rubbish. This is going to need a dictionary of words and luckily I’m running on a Linux system which comes with a text file used for spell checks so a few little bits of SQL are all that are needed to get me going:-

CREATE TABLE data_misc.dictionary (word TEXT); COPY data_misc.dictionary (word) FROM '/usr/share/dict/words' WITH CSV; UPDATE data_misc.dictionary SET word = UPPER(word);

Now to find our word list. I achieved this with a simple table join:-

CREATE VIEW data_os_opendata.wordy_postcodes AS SELECT id,postcode, lexical, word,wkb_geometry

FROM data_os_opendata.opennames_postcodes

LEFT JOIN data_misc.dictionary ON lexical = word

WHERE word is not null

This gave me 220 words all of which should be valid English. Scrolling through the list gave me a few interesting places!

GEEZER (G33 2ER — clearly where you go for a good deal)

OXYGEN (OX7 6EN — don’t strike a match here)

LEGEND (L39 3ND — where Chris Boardman lives)

LEEDS (L3 3DS — NO!! It’s Liverpool )

I created a map of some of these in QGIS as shown below, but did remove one seriously offensive word which I’ll let you discover by yourself.

Postcode Word map of the UK — (Contains OS data © Crown copyright and database right 2018)

Not sure I want to live in a certain part of Portsmouth…

The full list of wordy postcodes can be seen below. There are a few restrictions in that I’m only picking up single words but real work calls me back to the terminal and I’ll leave it for someone else to pick up the baton. But I hope you agree this has been an interesting exercise and maybe you‘re fortunate enough to live in an area with a postcode worth it’s own personalised plate.

Dave Barter

CEO Nautoguide Ltd. (https://nautoguide.com)

— — —