In a previous entry, I have written about the open data GTFS files provided by the RATP. The timetable information is very accurate. However, when drawing the bus lines on a map, the routes.txt GTFS file provides the same colors over and over: black text over white background. These are default values that must be adjusted for every bus line. The pair of colors (FFFFFF/000000) from the open data files would give the following look and feel:
While there is no bus line in service that uses this color scheme, this gave me the idea of how to generate the valid (real) colors for all the bus lines. Later on, I will provide a tool that can update the colors in the GTFS files (routes.txt) The official open data page contains several data sets, among which a ZIP file with the colors of the bus lines (the “Indices des lignes de bus du réseau RATP” data set). There are several hundred image files (.png). They can be grouped in several categories:
- regular bus lines (day+evening)
- night bus lines
- special bus lines.
Day time buses
The regular buses use a solid color for background and another solid color for the foreground (text), or so it seems. Unfortunately, the .png files contain several dozen colors, some very close to each other. So, just picking up the top left pixel might not be such a good idea. And manually checking the color over the official palette (the PDF file) might take some time. And if the official colors change or new bus lines are added, the manual operation must be performed again. There must be another way. In fact, there is one I can think of.
The image file here is a good example. The line 838 is not an official bus line. It just serves as an example. I have even exaggerated the colors. From a good hundred yards, the background color appears to be solid yellow, while in reality, it is far from solid. What can we do? There is hope and the hope is called image processing. While there are many colors in such an image file, there are two who occur very often: the apparent background color and the apparent text color. This allows us to apply some filtering to the real image file below. The closest friend in image processing is the histogram and as simple as it is, it suffices to rank colors by their frequency. Not unsurprisingly, the #1 color is the background and the #2 color is the foreground. Problem solved. A quick check in the official palette has confirmed that the filtered colors. are the right ones.
The night bus lines
Here the plot thickens. The color of the night bus lines is not the text foreground, but that of the thin horizontal line. By the way, the bus line N18 used here is not an official line. As we already have a solution for the daylight buses, lets extend it for night lines. The blue background is the top rank color, by frequency. The white text is the second in place. The horizontal red line is #3 color (by frequency of use) and it is the right choice. Sometimes, the horizontal line is atop the blue rectangle. The histogram doesn’t care about the position and this is good news.
The special bus lines
For a small minority of bus lines, the rectangle feature graphic elements. There might be a good dozen colors with high frequencies. The background will be the #1 color by its frequency. In some rare cases, the #2 color is close to #1 color. The histogram is still of great use.
The procedure described here has been checked against several bus lines. Just to be sure, I will make a full check for all the bus lines. Also, once we have the real colors, they can be added to the GTFS files (routes.txt).