Skip to content
Leigh Dodds edited this page Apr 20, 2015 · 3 revisions

This page provides documentation for the Bath car park occupancy available in the Bath: Hacked data store.

There are several datasets:

There is also a KML file recording the car park locations.

How is the data collected?

The data is collected by sensors on the entry and exit barriers for the car parks. Taken together these figures are used to calculate and then record the current occupancy for the car park.

What data is collected?

The dataset contains data about:

  • The occupancy of the car park -- how many cars are currently in the car park
  • The status of the car park -- is it currently empty, filling or emptying?

How often is the data updated?

Scripts are set up to query the B&NES car park database every 5 minutes, the data is then pushed to the Bath:Hacked data store to replace the existing live set and append to a historical set.

The query written on the database will show any currently active car parks in the system.

How is the data organised?

Column Name Description
Name The name of the car park e.g. The Podium CP.
Description A description for the car park, not offering much more information than the name.
Capacity A configured capacity value in the car park system.
Occupancy A value from the car park system to reflect current occupancy.
Percentage A percentage from the capacity and occupancy.
Northing A British National Grid (BNG) Northing location value.
Easting As above but for Easting.
Status Emptying/Static/Filling (see note below for more information)
Location A hard-coded lat/lng column, converted from BNG.
DateUploaded The date and time at which the data was grabbed from the database and uploaded to the data store.
DateUpdated A value retrieved from the database to reflect when the data was reported.

What quality control is carried out on the data?

The data is reported directly from the car parks based on the sensors. No quality control is carried out on the data prior to it being uploaded into the data store.

The capacity of the car parks is obviously fixed in the system.

Situations occur where the car park is reported to be more than 100% full. There can be a number of reasons for this

  • cars have been parked in 'unofficial' spaces
  • car are circling the car park looking for spaces
  • a sensor has not properly recorded an exit
  • there has been a sensor malfunction

Over night the sensors counts are reset to the current occupancy (based on a manual count of any cars remaining in the car park over night). This adjusts for any potential drift in the sensor readings that may skew the counts.

Relationship to VMS Signs -- full indicators

The VMS signs around Bath show the number of remaining spaces in the car parks, until a certain level at which point they show 'Full'.

This is a configured limit in the system that is not part of the current open dataset - apps using the data could replicate this functionality by setting a limit either as a percentage of spaces, or a set number for each one.

Are there any known issues?

The following sections outline some issues that have been discovered in the data due to:

  • temporary malfunctions
  • misleading availability (due to reserved/disabled spaces)
  • partial car park closures due to vandalism

Sensor Malfunction

Odd Down P&R has on a number of occasions showed late night occupancy in the region of 140%. While the published data just records occupancy, the 'raw' data shows a fill and exit count for some car parks. On the days when Odd Down sensors were broken the exits were consistently 0. On these occasions the data has been reflecting the total number of cars to enter that day, rather than the occupancy.

While not being helpful to people looking for a parking space, this does highlight the number of people using a car park throughout the day. This data from the 4th December shows the differences between the P&R car parks and the city centre ones:

Lansdown P&R. Capacity: 827. Total cars: 1987 Avon Street. Capacity: 590. Total cars: 3283

Non-sensor malfunctions in the process are detectable using the DateUploaded/DateUpdated fields. An out of date DateUpdated suggests the connection is broken between sensor and database. An out of date DateUploaded suggests the upload process to the data store is broken (or under maintenance).

Occupancy Trends

The status of a car park can be: Emptying, Static, Filling

This trend is determined by the fill rate during the reporting interval of the car park, and is useful because it indicates whether there is likely to be a space available in the near future. A 95% full car park isn't a problem for someone if it is emptying, but if it's filling then any remaining spaces will soon be taken.

Given that the actual reporting periods from the car parks can be every minute, this does mean the status can be accurate but misleading. A general trend of an emptying car park can be reversed by a single minute where one car entered and none left. This is an example where the fine level of reporting actually works against the information presented: a 5 minute interval would better represent the general trend of the car park.

The data store has the worst of both worlds. It is only updated every 5 minutes, and also only reflects a status of the car park based on a smaller interval. There are ways around this - by using the historical data an app could calculate a status based upon the occupancy over a larger period of time.

Reserved/Disabled Spaces

It could be that by knowing the number of reserved spaces in total, an app using the live data could make the assumption that none of these are currently filled, therefore giving a count of 'guaranteed' spaces, similar to the displaying of 'Full' by VMS signs before all the spaces are taken.

Predictive Analytics

With the historical data, predictive analytics could potentially show at what point a car park is expected to be full. This can be from a mix of the historical data, and the current fill rate. It would be worth any app using the data to also show details of: - Days of the week and which car parks are most/least popular. - Bath rugby match days - Events going on that will affect occupancy (e.g. Christmas market).

Combined Car Parks

Avon street has an outer and covered zone, but the data only shows an occupancy and capacity for Avon Street as a whole. When the covered section was closed after vandalism (in December 2014) the system was adjusted to modify the capacity to the number of outer spaces.

Further reading


While we give people an indication of where they can park, the data doesn't hold tariff information. Current charges for car parks are on the B&NES website

Payment Methods

Cashless parking provided by mipermit allows people to pay for or extend their parking by texting a code to a particular number. People often don't make a note of the code of the car park, so when they're caught out in a long running meeting and want to use cashless parking they need to run back to the car park to get the code from the car park.

Locations along with tariffs can be found on the mipermit site.