Monday, June 22, 2009

Valley Metro Rail: A preview look from the front (part 1)

Prior to the grand opening of the Phoenix Valley Metro Rail system last December, I had been able to take two test train rides. During one of those rides, I shot video from the "railfan" window in the front. During the shuffle of a very busy video shop working on various roller derby related projects, I thought I had lost this video footage.

While starting another project, I discovered which computer I offloaded the video on. Therefore, this video was safe and sound. I have put together a very quick and dirty video of the footage shot going westbound from Van Buren & Central (VBCN) and Osborn and Central (OSCN) stations.

I have video all the way up to Montebello (MO19) and some video coming back east to Van Buren & 1st Avenue (VB1). I will release that later.

This video does not have any sound as there was a lot of in-car conversations taking place and is not necessarily relevant to the video at hand. So sit back and enjoy the ride.

Friday, June 19, 2009

SEPTA: Pull down your pants and show me your bus pass...

One of my biggest pet peeves is bad policy. Bad policy is one that while the intention may be good, the overall policy is just downright the wrong way to address a situation. A recent story in the Philadelphia Weekly made aware of a great example of such bad policy.

Apparently, the South East Pennsylvania Transit Authority (SEPTA) has a huge problem on their hands. The problem, people sharing their monthly passes with other people. Now, we are not talking about a situation where a 35 year old person who does not have disabilities is trying to ride the bus with a reduced fare disabled pass. We are talking about full fare customers sharing a pass.

To combat the problem, SEPTA had a brainstorm idea. Why not print the gender of the customer on the pass? That way, it reduces the chances that the pass would be shared because now 50% of the population can not use that pass. Great policy, right? Well, there is a problem...

What if you don't look like what some would stereotype as what is proper for your gender? In other words, you are a thin build man with some feminine traits who happens to wear brighter clothes? Perhaps you are a lesbian who looks more "butch"? I can definitely tackle about a dozen possibilities for those who are transgender (TS, TG, TV, CD, DQ, whatever...).

The problem with this policy is that it is discriminatory, exclusionary and turns every bus driver and train conductor in Philly into a health professional who now not just responsible for the safe operation of their vehicle but now has to analyze every boarding passenger to make a determination what their gender is.

What makes it worse that according to the information that I have read, that since 9/11 it is next to impossible for a pre-op to get their license changed to show their identified gender in PA. Therefore, let's say a pre-op MTF boards a bus with a female pass, the driver may have some doubts (in other words, the MTF may not be far enough along or is otherwise readable) and the driver asks for ID. The only ID the MTF is able to get has a "male" gender marker on it. Therefore, a scene could be caused putting the passenger in a very uncomfortable situation. In the case of an MTF, a "male" pass (that would match the driver's license) would again raise questions, especially if she is very passable and would pretty much "out" the passenger. Let's also not forget an overall prejudice by the SEPTA employee, especially those who may have intolerance or lack of education of the GLBT community.

With my involvement in both the public transportation and the transgender communities, a story like this hits me from two directions. So let's look at this from the public transit perspective. Other than specialty and entitlement passes (such as reduced fare, employer program, agency employee, etc.), do transit properties across the country experience this type of "pass sharing" problem that SEPTA seems to be facing? I personally don't see an issue with letting a friend borrow my bus pass. The pass only allows one person to board at one time. Who cares if it's me or someone else? I can see if it's an issue if we do the old trick of the passenger boards the bus, they sit down and then give their pass to a friend outside the window. Well, most buses don't have windows you can open (that a pass can be easily passed through) and many agency fareboxes can detect this (yes, even Phoenix).

Apparently, this is also a problem in Brighton, England where their multi-day passes have a gender marker.

Also as a side note, SEPTA's own Equal Empolyment Opportunity Policy states that they will not discriminate on the grounds of sexual orientation and gender identity for their own employees. Why can't they extend these same protections to their passengers?

Myself, I think that both Brighton and SEPTA should abandon this concept. I don't think that pass sharing is such a huge problem that it has to be done at the expense of the civil rights of a considerable group of individuals who brush the gender lines in some way or another.

Tuesday, June 16, 2009

Michi's first LACMTA GTFS application: Where's the bus??

I have designed a very simple application that is intended to show the next "timepoint" for every bus on a particular route.

It uses a pretty simple SQL statement:

SELECT gtfs_stops.stop_name, gtfs_stops.stop_lat, gtfs_stops.stop_lon,
gtfs_stop_times.departure_time, gtfs_stop_times.trip_id, gtfs_stop_times.stop_headsign,
gtfs_trips.route_id, gtfs_trips.block_id FROM gtfs_trips
LEFT JOIN gtfs_stop_times ON gtfs_trips.trip_id = gtfs_stop_times.trip_id
LEFT JOIN gtfs_stops on gtfs_stops.stop_id = gtfs_stop_times.stop_id
LEFT JOIN gtfs_calendar ON gtfs_trips.service_id = gtfs_calendar.service_id
WHERE route_id = '(route number)'
AND departure_time >= CURTIME()
AND departure_time <= ADDTIME(CURTIME(),'0:05:00') AND gtfs_calendar.(day of the week) = 1 AND start_date <= CURDATE() AND end_date >= CURDATE()
GROUP BY block_id;

This SQL statement will show the next timepoints for (route number) on the the specified (day of the week). Yes, I know it's pretty crude, but it works.

You can play with this toy at:

There is a pull down that shows all of the SFV sector routes (the descriptions were manually entered), an issue that I have with the routes.txt file. But you can send a value of rte and a valid route_id using a GET statement and it will return routes outside the SFV. It does not work for rail (801-805) because the Metro Rail trips are showin without a block_id. Rail will return just a single trip on the route.

I could use an SQL sort to rearrange the headsigns in order so you have an idea what direction the buses are going. I would have preferred if Metro was to include the direction_id in trips.txt which is a simple 0 or 1 value that would indicate a direction. In this case, I could just make two SQL calls and get each direction listed separately. Using direction_id would also make the data compatible with other tools including TriMet's Time Table Maker.

Without the direction_id data, I would have to manually build a table based on headsign readings what direction a bus is going and even with that, there may be a few possibilities that buses going in two different directions can have the same headsign (such as a mid-route terminal).

This little app does take into consideration that some trips only operate certain days of the week (school trippers) but I do not believe that the calendar.txt gives the ranges of the school year. Therefore, there's a possibility that it will display a trip that may not actually be running since it's a school holiday. MTA also has school holiday trips "H", which may be the school trip with some deviation on the schedule. These are very complex, but on some routes with infrequent service and school trippers (645 comes to mind) could cause confusion. Right now, I am not calling to the calendar_dates file to get the exceptions (holiday service). Therefore, transit holidays right now will show just like regular weekdays.

With that said, my wish list for Metro GTFS data improvements include:
  • Having the block_id be the known line-run numbers instead of a distinct number.
  • Include run numbers for the trains in block_id.
  • Use the direction_id field in trips.txt.
  • Move headsign data to trips.txt and only use stop_times.txt when there is a mid-line sign change. (such as the 242/243)
  • At the end of a trip at the last timepoint in stop_times.txt, set drop_off_type to 1. This will indicate the end of the route. It will also prevent apps from identifying that timepoint as a pick-up and showing two times at a particular stop (one for when the bus arrives from the previous trip and the time it departs for the next trip, hence, recovery time).
  • Better descriptions of the routes in routes.txt
As a fan of Metro scheduling (and someone who once got turned down for the Schedule Maker I position), I appreciate the publication of the GTFS data feed.