ActivitySim / activitysim

An Open Platform for Activity-Based Travel Modeling
https://activitysim.github.io
BSD 3-Clause "New" or "Revised" License
192 stars 99 forks source link

Documentation missing 'access_dist_transit' landuse field #567

Open stefancoe opened 2 years ago

stefancoe commented 2 years ago

The field 'access_dist_transit', if it exists, is used for the walk access/egress component for transit in tour mode choice. If it does not exist, the model uses a constant. The field is missing from both the documentation and the MTC Example Data.

https://github.com/ActivitySim/activitysim/blob/master/activitysim/examples/example_mtc/configs/tour_mode_choice_annotate_choosers_preprocessor.csv#L27

https://github.com/ActivitySim/activitysim/blob/master/activitysim/examples/example_mtc/configs/tour_mode_choice_annotate_choosers_preprocessor.csv#L31

https://github.com/ActivitySim/activitysim/blob/master/activitysim/examples/example_mtc/configs/tour_mode_choice.csv#L91

stefancoe commented 2 years ago

@jpn-- Not sure if you are the right person for this issue, but issue #589 reminded me that this one is still open.

jpn-- commented 2 years ago

I'm not clear why "access_dist_transit" is even here -- as best I can tell, no example implementation we have uses it, at least in the test system. The spec is written to fall back to the constant if it's missing, but the only model where it isn't missing is the sandag placeholder model, where it's been populated... with what looks like a constant. It might be present and populated in some "full scale" model, but if so I'm not sure why there's no equivalent test example with the relevant data.

I can theorize a number of reasons why it might have ended up in these models like this, most of them basically a "todo" that never got done and left by the wayside, but most of the folks likely to know more reliably are no longer around. @jfdman, any thoughts on this variable?

stefancoe commented 2 years ago

@jpn-- Thanks. For us, it was a bit of a surprise (and not at all obvious) to find out that a constant was being used for this transit component instead of skims or a land use/transit stops measure. And then to find out that a land use field is available to hold and operationalize the latter, but not implemented or documented. It would be nice to make this somehow more transparent to new implementations starting with an existing example like we have done.

**EDIT: We were under the assumption that transit walk access/egress values were coming from the skims, since these matrices exist in the input skims.

stefancoe commented 2 years ago

@jpn-- How about adding this field as 'optional' under the Land Use section with a brief explanation. As mentioned above, the field is used in the tour mode choice pre-processor expressions and offers a way to avoid using a constant for transit walk access without making additional modifications beyond adding it to the Land Use file.

https://activitysim.github.io/activitysim/v1.1.3/examples.html#land-use

jfdman commented 1 year ago

@stefancoe , @jpn-- I think the history here is that MTC TM1 used walk market segmentation in which each TAZ was split into up to three virtual TAZs based on the percent of the zone within ranges of walk time to the nearest transit stops. this was done by buffering around the transit network by distance - 1/3 mile and 2/3 mile. The walk time to transit was at each trip end is based on whether the O/D sub-zone was short walk (1/2 1/3 mile 20 min/mi) or long walk (((1/2 1/3 mi) + 1/3 mi) 20); if the O/D subzone is not walk accessible then walk was not available. I am not sure what ACCESS_DIST_TRANSIT is supposed to be, MTC TM1 uses two fields - SHRT and LONG - in the input zone file that provide the percent of zone in short and long walk transit bands. The converted model does not have walk market segmentation so I suspect the variable was invented as a placeholder. Since there is no walk market segmentation in the one-zone ActivitySim implementation, it should be completely removed and the mode choice calculations should use the skimmed walk time.