This is a portolan catalog version of https://developer.trimet.org/gis/ - taking the static data layers there and making them fully cloud-native and interactive.
Public transit stops for all bus and rail lines. For stops served by multiple lines there are multiple records in this dataset. 8,314 Point features covering the TriMet
service district in the Portland, Oregon metropolitan area, published by TriMet
as tm_route_stops and last updated at the source on
July 30, 2026.
The same stops as stops, but exploded by the service that calls at them: one
row per stop per route-direction, 8,314 rows over 6,316 distinct stops. A stop
served by four routes appears four times.
This is the only layer in the catalog that connects a stop to a route, and it
carries stop_seq, the position of the stop along its route-direction, which is
what lets you reconstruct the order of stops along a line.
Agents: see AGENTS.md for join keys, verified query recipes and the caveats that will otherwise cost you a wrong answer.
Preview it on a map, inspect the schema and license, and download the GeoParquet or PMTiles directly.
Read it straight from object storage — DuckDB fetches only the byte ranges it needs, so there is nothing to download first:
Or with GeoPandas:
rte values meet.count(*) is 8,314, which
is not a number of stops. Use count(DISTINCT stop_id) for stops, or work from
the stops collection.stop_seq restarts at every route-direction. It is meaningful only within
a (rte, dir) group. Ordering the whole table by stop_seq is meaningless.dir = 0 and dir = 1
of the same route often differs in length, because of one-way streets and
stops served in one direction only.Column descriptions are TriMet's own, taken verbatim from
meta_tm_route_stops.shtml. The same text is carried in
table:columns in collection.json.
The PMTiles layer is named route-stops. Styles reference it as ../route-stops.pmtiles,
so they load unmodified against this directory.
Produced by TriMet GIS (4012 SE 17th Ave, GIS3,
Portland, OR 97202,
gis@trimet.org) and distributed at
developer.trimet.org/gis as tm_route_stops.
The originals are linked as assets and are the authoritative copy: Shapefile · KML · Metadata
This collection was produced by converting TriMet's Shapefile to GeoParquet,
keeping its native EPSG:2913 (NAD83(HARN) / Oregon North (ft)), and to PMTiles in
WGS84 for display. No features were added, removed or edited. The exact commands
are in tools/convert.py.
This catalog is generated, and both halves are open source: the catalog at
cholmes/portolan-catalog-trimet and the
data browser at
cholmes/trimet-data-browser. If something here is wrong or
could be better — a description, a column definition, a query, a style —
open an issue or send a pull request. Corrections to
the underlying data go to TriMet at gis@trimet.org.
TriMet distributes these datasets free of charge, but the terms of use do not
grant redistribution rights. Section 4 of TriMet's
Terms of Use reserves
reproduction, modification, distribution and republication of site Content
without written consent; the redistribution license in section 5 covers the Web
Services API, not these GIS downloads. The collections therefore declare
"license": "other" with a link to those terms, rather than claiming an open
license the source does not offer.
Practically: use the data, and contact gis@trimet.org before redistributing it or building a product on it. If you need transit data under clear open terms, TriMet's GTFS feed is the better starting point.
jurisdic | string | Jurisdiction (City or County) in which stop is located. |
zipcode | string | Zipcode in which stop is located. |
frequent | string | Indicates whether a route or route segment has frequent service. Values: True Route segment has frequent service; False Route segment does not have frequent service. |
geometry | binary | Feature geometry, WGS84 lon/lat. |
geometry_bbox | struct<xmin: float not null, ymin: float not null, xmax: float not null, ymax: float not null> | GeoParquet 1.1 covering column, for row-group pruning. Same projected feet as the geometry. |