I mentioned that the current KCM GTFS feed doesn't properly handle holiday scheduling. I wanted to expand on that, because this has been a continual issue for me when running OneBusAway. If you look at the schedule exceptions in the current GTFS feed, it only handles the case of canceling regular weekday service on Thanksgiving, Christmas, and New Years, and replaces it with Sunday service.
However, scheduling is much more complex than that in reality. Just consider today, Veteran's Day (
http://seattletransitblog.com/2009/11/10/reduced-veterans-day-service/) or one of the UW routes (Route 372 for a particularly heinous example -
http://metro.kingcounty.gov/tops/bus/schedules/s372_0_.html).
In the raw schedule files from KCM, schedule exceptions are coded for each trip with what I refer to as an exception code (it's the 10th column of the trips.csv file). In the latest schedule dump, the following exception codes are present:
AO, BD, BI, BS, FA, LD, LE, LK, MD, RW, SD, UW, XW
Unfortunately, no one at Metro has been able to provide me with any documentation about what those codes mean in terms of service dates, so for the most part I've had to reverse-engineer it. Also, when an actual holiday rolls around (like, oh I don't know, today), OneBusAway users are usually pretty good about letting me know where I've screwed up ; )
I'm attaching my notes in the hope that if anyone else is working with the raw schedule data, it might save you some trouble.
Brian
===
# This data is in a machine-readable format that my KCM-raw-schedule-to-GTFS-converter understands, but hopefully it's clear what's going on
# Holidays - No Service, Except Sunday Service
date=2009.11.26,2009.12.25,2010.01.01,2010.05.31 => remove
changeDate=113 scheduleType=SUNDAY => add date=2009.11.26,2009.12.25,2010.01.01,2010.05.31
# Partial Holiday Scheduling
exceptionCode=BS,SD date=2009.11.11,2009.11.27,2009.12.24,2009.12.28-2009.12.31,2010.01.18 => remove
# University of Washington
exceptionCode=UW date=2009.09.21-2009.09.29,2009.11.11,2009.11.27,2009.12.21-2009.12.24,2009.12.28-2009.12.31,2010.01.18 => remove
exceptionCode=XW date=2009.09.21-2009.09.29,2009.11.26,2009.12.21-2009.12.23,2009.12.25,2010.01.01 => remove
# School Scheduling
# BD - Bellevue School District
exceptionCode=BD date=2009.09.21-2009.09.29,2009.11.11,2009.11.26,2009.11.27,2009.12.21-2010.01.01,2010.01.18,2010.02.15-2010.02.19,2010.04.05-2010.04.09,2010.05.31 => remove
# LD - Lake Washington High -
http://lakewashington.intand.com/index.php?type=view&action=year&year=2009exceptionCode=LD date=2009.10.02,2009.11.11,2009.11.26,2009.11.27,2009.12.21-2010.01.01,2010.01.18,2010.02.11,2010.02.12,2010.02.15,2010.03.19,2010.03.29-2010.04.02,2010.05.07,2010.05.31 => remove
# LE - Evergreen School in Shoreline - Not really sure about this one
exceptionCode=LE date=2009.11.11,2009.11.26,2009.11.27,2009.12.21-2010.01.01,2010.01.18,2010.02.15,2010.05.31 => remove
# LK - Lakeside Middle School -
http://www.lakesideschool.org/podium/default.aspx?t=122427
exceptionCode=LK date=2009.11.26,2009.11.27,2009.12.21-2010.01.01,2010.01.18,2010.02.15-2010.02.19,2010.05.31 => remove
# MD - Mercer Island High School
exceptionCode=MD date=2009.11.11,2009.11.26,2009.11.27,2009.12.21-2010.01.01,2010.01.18,2010.02.15-2010.02.16,2010.03.29-2010.04.02,2010.05.28,2010.05.31 => remove
# The following have no special handling that I know of
# BI - Boeing Everett Route
# FA - A couple of Route 48 Sunday trips
# RW - Applies to a ton of routes, but no special scheduling