20 January 2011
Toronto Fire Dispatch Data - Real time!

A Wealth of Data on GTA Incidents and Response.

I love finding new (and seemingly untapped) data sources online! While sipping my coffee this morning I found this gem.

The Toronto Fire Services (serving Toronto and all surrounding cities) is publishing live dispatch data to a simple public HTML table. Ripe for the picking. The table is refreshed every 5 minutes with active incidents from the Toronto Fire Computer Aided Dispatch (CAD) system.

There is more information here than you may realize. Let’s check it out.

The Active Incidents.



Let’s review the table.

  • Last Updated: Above the table. This is the exact date and time the active incidents were refreshed.
  • Prime Street: Street of the active incident with a short form for neighborhood / city (i.e. ET = Etobicoke, NY = North York).
  • Cross Street: Closest cross street to the incident.
  • Dispatch Time: Date & time the incident was first recorded in the CAD system.
  • Incident No.: Unique identifier.
  • Incident Type: Often hyphenated into a main & subcategory.
  • Alarm Level: High alarm levels are more severe. More units, longer duration.
  • Area: The Fire Station # assigned to this jurisdictional area.
  • Dispatched Units: Fleet type and home fire station #. (more to come on this)

As I write this blog post the table data is being refreshed. Every 5 minutes I’m losing quality data! Lets fix this right now. Capturing all the dispatch information is kind of important :)

… Ok, I’m back. I’ve put together a rather crude process to begin capturing this table. Remember QlikView can easily read HTML tables from websites. I built a QlikView app to load this table. The QlikView app checks the table and incrementally adds this data into a QVD file (compressed data files for QlikView).

I reviewed this great sample QlikView app for geo-coding through Google’s API and geo-coded each incident using a combination of Prime Street and Cross Streets (dependent on information available for each incident). Now we have incident latitudes and longitudes in the QVD file! 

To capture all the data we need this QV app to reload every 5 minutes. Create a .bat file with a command to reload the document: "C:\Program Files\QlikView\qv.exe" /r  "C:\My Dropbox\Fire Service TO\TorontoFireService_Loader.qvw"

Now set Windows Scheduler to call this .bat file every 5 minutes. This works, but it’s not a recommended solution. I’m going to write a PHP script to run as cron job on the server and store all incidents into a mySQL database. Watch for the next post.

Now lets look for other information to improve the value of this dispatch data.

Fire Stations

Each fire station is assigned a specific geographic area.


Units will often travel outside this boundary when responding to large emergencies or when specialized units are required, such as High Rise or Hazmat Support. I’m interested in mapping how far units typically travel from their ‘home station’.


The station number and postal code is available from the Toronto Fire website. I have compiled this data into a Toronto Fire Stations CSV file available here

The postal code of every station is also geo-coded by the QlikView script and stored into a supporting QVD file for use on future reloads.

The Fire Truck Fleet

Toronto Fire Fleet information is available on Wikipedia. So what does dispatched unit LA421 mean anyway?

LA is an Air/Light Unit as provided on the Wikipedia page. The digits are the station number. An Air/Light Unit from Station # 421. I made a CSV Reference File for Toronto Fire Fleet units.


We now know the location of the incident, the type of incident, the different units responding and the location of their home-base fire station. Now we’re getting somewhere! It’s time to load all this great information into QlikView and begin analyzing! I’m looking forward to it.

I would love to hear your thoughts. What kind of data have you discovered lately?

Cheers, Dan.

PS: The Toronto Fire Dispatch System also tweets every new incident to @tofire. Kind of neat. :) 

← Read More