With the availability of web services the world seems to be at your fingertips. Send a request to a web server and the answer is returned...

Each service has its own quirks so that if you want to combine services you will likely end up reformatting the results of one request to feed another. For example if you want to know the drive distance between two postcodes you will need to call a geocoding service and pass the locations returned to a routing service, unless you are fortunate enough to have both from a single supplier.

Also, because of the latency of the internet, multiple requests can slow down your application.

BD’s approach to web services is to provide a much more flexible engine that functions as an ecosystem. Requests are in the familiar but powerful language, JavaScript. Base geometric data contains postcode locations, road networks, drive-times and background raster maps. Also built in are postcode and administrative boundaries. Requests can navigate, query and combine this data, returning the results in a variety of formats including JSON, XML and the usual image formats.

BD have built several applications using this server-side technology, from multi-modal journey capture to cinema coverage to public sector expense claims to bespoke map generation.

All the advantages of web services (unfussy updates, high availability) combined with a familiar “programming” interface mean rapid deployment for GIS application builders, not least ourselves.

Take a look at an example…

 We want to show on a map all the postcodes that lie within a 2km radius of our hospital in the West Midlands.

This code:

var hospital = geocoder.geocode(‘DY1 2HQ’); /* centre of interest */
var pcCircle = geometry.circle (hospital, 2000); /* required radius */
var sectors = tileview.tiletypes(‘sector’).tiles(pcCircle, {include:’extent’}); /* the sectors in the circle */
var pointsAndPostcodes = sectors.map(lambda t:geocoder.postcodes(t.name,1)).flatten; /* all postcode/points in all filtered sectors */
var pointsAndPostcodesInCircle = pointsAndPostcodes.filter(lambda pcpt: pcCircle.contains (pcpt.point)); /* all postcodes/points in the circle */
var points = pointsAndPostcodesInCircle.map(lambda pc:pc.point); /* all points */

canvas (
[
Tiling('OS'),
{what:sectors, style:{Pen:{colour:colour.white, width:2}, Font:{size:24, shadow:{}}, Brush:{colour:colour.lightgray, opacity:50}}}, /* background sectors */
{what:pcCircle, style:{Pen:{colour:colour.green, width:3, dashstyle:[5, 2]}, Brush:{colour:’f44′}}}, /* circle of interest */
{what:points, style:{font:{name:’wingdings’, size:10, colour:0, ascii:110}}}, /* points drawn as small black squares */
{what:Text(‘H’, hospital), style:{Font:{colour:colour.white, size:30, bold:true}}} /* H marks the spot */
],
{filename:’temp/hospital’,
mapMargin:’15%’,
mapExtent:pcCircle /* use circle of interest to box the map */
}
);

Produces this map:

Our web technology explained

Pretty nifty stuff huh? For more information on web services, our technologies or to commission some bespoke software, get in touch on 01904 701020 or complete our web form and we'll call you!

Beacon Dodsworth Ltd. Garth Mews, Sim Balk Lane, Bishopthorpe, York, YO23 2UE, UK
Tel. +44 (0)1904 701020 Fax. +44 (0)1904 701030 email info@beacon-dodsworth.co.uk

European Society for Opinion and Marketing Research (ESOMAR) logo Google Enterprise Partner Target Group Index (TGI) logo Association for Geographic Information logo

© Beacon Dodsworth Ltd 2012 | Legal
Registered in the UK, company no. 2908091