Arf is a new tool for generating unweighted access analyses, like the ones seen in this blog. Its outputs have the same 80 meter spatial resolution as those generated with my previous access analysis tool, the BusGraphs Access Analyzer, but arf can assess areas of sizes on the order of US states, and runs on conventional personal computers rather than cloud computing infrastructure. This 30-minute transit and walking access map of Washington state took around 70 minutes to generate on a 2020 M1 MacBook Air laptop.

Relative amount of thirty-minute transit and walking access throughout Washington state.

Relative amount of thirty-minute transit and walking access throughout Washington state. Map data from OpenStreetMap.

I would not have considered analyzing an area of this size using the Access Analyzer; it would be costly to rent the amount of computational power required. If I had, it likely would have taken longer than arf currently does, even though the former has the advantage of splitting work over thousands of processors.

Arf performs better than its predecessor through algorithmic and memory-management improvements. Access computation entails doing similar calculations across a grid of sectors. Improvements to the pathfinding algorithm have reduced the amount of duplicate navigation done when determining what is walkable from each of these sectors. Reusing memory buffers across sector computations, rather than allocating fresh memory for each one, has also yielded a significant time savings. Performance profiling is ongoing to determine what other optimizations are possible.

Arf is a work in progress, particularly in how best to output and visualize its findings. Currently, it outputs geojson, but for state-wide areas this can overwhelm interactive viewers. It will work for city-scaled analyses, though. Arf also renders the geojson as an SVG image, which can be converted to raster formats, allowing large regions like the Washington state example to be displayed. This format is not ideal, though, due to the lack of interactivity. Converting the geojson to MapBox tiles may also work for large areas, but it is one that I have not thoroughly explored yet.

Arf is available for free, under an open source license. For a system with the Go compiler installed, compilation is a single go build command. The arf executable downloads map data and transit schedules; all that a user needs to know is OpenStreetMap’s relation identifier of the area (which can be found by searching its name on OpenStreetMap), and the URLs of the GTFS archives of the transit agencies that operate within it. A summary of arf’s command line arguments is available. The following command generates the Washington state access map at the beginning of the post:

arf access wash --areas 165479 --concurrency 8 --gtfs "https://metro.kingcounty.gov/GTFS/google_transit.zip,https://www.spokanetransit.com/gtfs,https://prod.piercetransit.org/GTFS/gtfs.zip,https://everett.mapstrat.com/current/google_transit.zip,https://yakima.connexionz.net/rtt/public/utility/gtfs.aspx,https://data.trilliumtransit.com/gtfs/rivercitiestransit-wa-us/rivercitiestransit-wa-us.zip,https://myride.bft.org/Static/google_transit.zip,https://its.rideralerts.com/InfoPoint/gtfs-zip.ashx,http://pride.kitsaptransit.com/gtfs/google_transit.zip,https://github.com/whatcomtrans/publicwtadata/raw/master/GTFS/wta_gtfs_latest.zip,https://raw.githubusercontent.com/Seattle-Monorail-Services/gtfs/main/96_gtfs.zip,https://c-tran.com/images/Google/GoogleTransitUpload.zip,https://www.communitytransit.org/docs/default-source/open-data/gtfs/current.zip,https://business.wsdot.wa.gov/Transit/csv_files/wsf/google_transit.zip,https://data.trilliumtransit.com/gtfs/makah-wa-us/makah-wa-us.zip,https://www.soundtransit.org/GTFS-rail/40_gtfs.zip,https://link.rideralerts.com/InfoPoint/gtfs-zip.ashx,https://strweb.skagittransit.org/GTFS/google_transit.zip,https://data.trilliumtransit.com/gtfs/asotincounty-wa-us/asotincounty-wa-us.zip,https://itransitnw.com/rtt/public/resource/gtfs.zip,https://data.trilliumtransit.com/gtfs/squaxinisland-wa-us/squaxinisland-wa-us.zip,https://data.trilliumtransit.com/gtfs/thurston-wa-us/thurston-wa-us.zip,https://data.trilliumtransit.com/gtfs/ruralresources-wa-us/ruralresources-wa-us.zip,https://data.trilliumtransit.com/gtfs/pfp-wa-us/pfp-wa-us.zip,https://pullmanbusbeacon.com/gtfs,https://data.trilliumtransit.com/gtfs/pfp-wa-us/pfp-wa-us.zip,https://data.trilliumtransit.com/gtfs/islandtransit-wa-us/islandtransit-wa-us.zip,https://data.trilliumtransit.com/gtfs/mountadams-wa-us/mountadams-wa-us.zip,https://mjcaction.com/MJC_GTFS_Public/clallam_google_transit.zip,https://data.trilliumtransit.com/gtfs/granttransit-wa-us/granttransit-wa-us.zip,https://mjcaction.com/MJC_GTFS_Public/centraltransit_google_transit.zip,https://mjcaction.com/MJC_GTFS_Public/graysharbor_google_transit.zip,https://data.trilliumtransit.com/gtfs/mason-wa-us/mason-wa-us.zip,https://mjcaction.com/MJC_GTFS_Public/jefferson_google_transit.zip,https://mjcaction.com/MJC_GTFS_Public/pacific_google_transit.zip,https://business.wsdot.wa.gov/Transit/csv_files/TranGO/trango.zip,https://data.trilliumtransit.com/gtfs/twintransit-wa-us/twintransit-wa-us.zip,https://data.trilliumtransit.com/gtfs/lowercolumbiacap-wa-us/lowercolumbiacap-wa-us.zip,https://data.trilliumtransit.com/gtfs/wotm-wa-us/wotm-wa-us.zip,https://business.wsdot.wa.gov/Transit/csv_files/TranGO/trango.zip,https://content.amtrak.com/content/gtfs/GTFS.zip" --date 2026-01-06 --reporters sectorcount