I have database that tracks a large number of entities. Each entity has a 'coverage area' or 'catchment area' - a radius in miles from a specified UK postcode, eg

Leyton office     4.3m    E11 4LL
Stratford office  5.2m    E15 6ZZ
East Ham office   2.1m    E4 8QQ

I want to turn this into a geographic intensity map - a map of a region which is shaded or coloured to indicate the number of entities that cover each point on the map. Segmentation into small regions is also acceptable.

This is probably a one-off project, so it's unlikely my organization will provide money to buy software. That means zero or at least low-cost solutions are preferable.

  • 3
    I think you need to provide some more information. What format is your database? How competent are you with GIS packages / spatial databases? Is your data already in a shapefile / some other GIS file format or do you know how to convert it? It's difficult to answer without this context as it could be a very big answer! – Stev_k Nov 4 '11 at 12:45
  • My database is actually a PostgreSQL db, but I can pull feeds in CSV form. It's really not much more than the data I listed in the question above - pretty spartan. As for GIS, this is probably the first time I've encountered the field, and I really don't know anything about even common GIS tools. Also, I don't have a shapefile, no. – Jimmy Breck-McKye Nov 4 '11 at 12:58

Maybe these links will help you:

How to build effective heat-maps?

with QGIS: http://alexsciuto.com/blog/2010/11/how-to-make-your-own-heat-map-pt-1-gathering-the-materials/

Python script: http://www.sethoscope.net/heatmap/


Sorry for a non elaborated answer..

| improve this answer | |
  • Those are some good resources and I'll be sure to check them out. – Jimmy Breck-McKye Nov 4 '11 at 13:00
  • alexsciuto.com/blog/2010/11/… : I haven't find the part 2 of the described method but it does not seem to be a heatmap. Just a very basic choropleth map... – simo Nov 4 '11 at 16:00

I'm assuming you want a density map of how "well covered" each area is, i.e. how many offices it is near, incorporating the "radius" of those offices?

You can actually do all this within PostgreSQL, or at least within PostGIS, which is a free extension. I suggest you get hold of that, and read up on some of the docs.

You will probably then need to geocode your postcodes. A simple solution is to download the Ordnance Survey Code Point dataset (https://www.ordnancesurvey.co.uk/opendatadownload/products.html) (which is free) and give your points the database a postcode location, by using the PostGIS functions - you'll need to use ST_GeomFromText() and read up about Well Known Text co-ordinates probably.

So you should have a spatial table of all your points.

You can then buffer (create a radius around each point) them into a new spatial table using the ST_Buffer function.

You would then need to create a non-overlapping polygon overlay in PostGIS - see Separate polygons based on intersection using PostGIS. This should segment the dataset into small regions as you say above.

Then you need to query how many of the buffers intersect each your your new segmented regions. This will be quite a complicated SQL query, but it should be possible.

This is quite a complicated procedure as you can see even for someone experienced in GIS, and there are many pitfalls, such as projections etc, so I would consider your need for this before starting, however there may well be better solutions that someone else can offer.

A much easier way would proabably be to take a regularly spaced grid of points and work out the average distance to say, the five nearest offices, and colour code each grid square by average distance. However, this wouldn't take into account the "radius" of the offices - not sure what this represents - influence?

| improve this answer | |

You can do this simply online by using Mapsdata.co.uk

The app reads data from .xls or .csv and is pre-programmed to convert geo-data such as the UK Postcodes. You could do several visuals: one could be a bubble map using the catchment area as a value, pins with opacity to show density, or a heatmap. In all options, you can change the opacity, color, etc and then export either as a PNG or as an html iframe for use in other webpages.

Do you need to georeference the size of the bubbles? This can also be achieved with some tweaking.

| improve this answer | |

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.