Hack 65. View Real-Time Traffic Data on the Road
If you have a wireless Internet connection for your car PC, even a slow one, you can get real-time traffic information for any major U.S. city. Even with all the nifty PC enhancements that you can put in your car, you probably still don't want to sit in traffic on a hot summer day sweating and wasting your time, gas, and money. There are several ways to interface with traffic data so that you can avoid bad traffic and get where you need to go before you or your car overheats. The easiest way to access traffic data is not via a navigation program, but simply via a web browser. One of the best sites is http://www.traffic.com (see Figure 6-6). This service has sensor networks measuring traffic speeds for most major U.S. cities, and their web site provides an interactive, colorcoded map showing the state of congestion of all the major thoroughfares in a particular city. If you register for their free membership (i.e., trade your email address), you can get even more information, such as the current traffic speed on each freeway segment. Information on how Traffic.com works can be found at http://www.traffic.com/Mobility/faq.html and http://www.traffic.com/Mobility/data.html. Traffic.com even provides an RSS feed, updated with close-to-real-time traffic incidents. (If you use this service with the CarBot Player software [Hacks #21 and #59], you can even have the feeds read to you while you drive.) Traffic.com is not the only good provider of traffic-related information. Not only are there other traffic sites, but the same or similar traffic information is actually available from the national, state, and city Departments of Transportation (DOTs) on their respective web sites. However, the problem with these sites is that there is no standard for how that information is provided or accessed. Figure 6-6. The Traffic.com web siteAlmost all of the traffic sites render traffic conditions as static GIF/JPG images. Some cities report only traffic incident information, while others provide complete real-time traffic flow information. Incidents are useful to know about, but their reports are delayed by the time it takes for the DOT to acknowledge them. Real-time reporting of traffic flow requires special hardware on the streets, and not all cities currently have this equipment. Real-time conditions almost always include incident reports, too. This inconsistency in freely available information has created a market for Traffic.com and other real-time traffic condition data aggregators. I live near Seattle, and free public access to the city's traffic data is provided through the Washington State Department of Transportation (WSDOT) system. Their web page (http://www.wsdot.wa.gov/traffic/seattle) renders their traffic data and includes a lot of other useful information (Figure 6-7). Figure 6-7. The WSDOT's Seattle Traffic web pageOn this web page, you can:
It is all very well organized and accessible to the average user, and I have not found another home-grown metro traffic site that provides this much detail. Information on how the Seattle system works can be found at http://www.wsdot.wa.gov/traffic/seattle/questions/. While you can access web-based traffic information directly from your web browser without having to develop any code, you will be limited to the web site's interface and access to information. Furthermore, many of these user-interface factors are not conducive to a car PC environment, especially when you're the driver. 6.5.1. My Traffic Viewer ApplicationThe relatively low resolution of in-car PC screens makes accessing a web-based map (with its large borders and banner advertisements) while on the go inconvenient and distracting. I decided that a better way to view traffic data would be to embed a browser into a custom application that gave me more control over the user interface. To demonstrate my idea, I wrote Traffic.exe, a C# application that polls Seattle's traffic data via FTP or HTTP and renders that data. You can download the application and its source code at http://www.oreilly.com/catalog/carpchks. As with any C# application, you'll need to have the .NET runtime installed to use it.
Traffic.exe first pulls down an uncolored freeway map that is not populated with any congestion data (Figure 6-8, left). When you click the Process Data button, Traffic.exe retrieves the up-to-the-minute traffic information, decodes it, and appropriately color-codes the map (Figure 6-8, right). 6.5.2. Using Seattle's Raw DataCustom traffic-monitoring applications would flourish if the information they provided was more standardized. Alas, there's little indication that a nationwide open traffic standard for all cities will be developed anytime soon, so the next best thing may be to directly use the web pages from the existing traffic web sites. Fortunately, a lot of traffic information is freely available on the Web, and with a bit of work it can be formatted for your car PC any way you wantthat's what I did with my Traffic.exe application and the raw data I was able to pull down from the WSDOT web site. This section tells you a little about this data, to help you understand how my program operates, and to help you write your own traffic program. Figure 6-8. Traffic.exe in actionSeattle's raw traffic data is presented in a proprietary, albeit simple, format. The files can be accessed via either http://images.wsdot.wa.gov/nwflow/wireless/ or ftp://webflow.wsdot.wa.gov. Both of these URLs contain the following identical data files:
As you can see, wireslessxxx.dat is much smaller than webflow.dat; however, Seattle does not provide .bmp or .XY files for wireslessxxx.dat, so if you want to use wirelessxxx.dat you will have to create your own .bmp and .XY files. For simplicity's sake, the example Traffic.exe application uses the larger webflow.dat file and the relevant .sta, .bmp, and .XY files. You can use these data files to create your own traffic application. To get the raw data, all you have to do is open an anonymous FTP or HTTP connection to one of the data URLs and download the latest data file(s). Paul Peavyhouse |