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.
TriMet — the Tri-County Metropolitan Transportation District of Oregon — runs bus, light rail (MAX), commuter rail (WES) and streetcar service across the Portland metropolitan area. It publishes eight geospatial layers at developer.trimet.org/gis as Shapefile and KML, each with a metadata page carrying full attribute definitions and code lists.
This catalog is a cloud-native mirror of all eight: the same features as GeoParquet and PMTiles, with TriMet's original Shapefile, KML and metadata page linked from every collection. Nothing has been added to the data and no features were dropped.
The GeoParquet keeps TriMet's native EPSG:2913 (NAD83(HARN) / Oregon North, international feet), so lengths and areas come out in feet without a projection step. The PMTiles are WGS84, because vector tiles are.
Preview all eight collections on a map drawn with TriMet's own cartography, inspect each one's schema and license, download the GeoParquet or PMTiles, and follow the links back to TriMet — no setup, nothing to install.
Agents: start at AGENTS.md for join keys, the quirks that produce silently wrong answers, and verified query recipes.
Past the first query, the interesting pattern is joining across collections.
stops and route-stops share stop_id exactly — all 6,316 of them — which
turns a stop location into the set of routes that serve it:
Where TriMet publishes a style for a layer, this catalog reproduces it rather than inventing one. Two TriMet sources are used, and both are mirrored into the collections they style so the reproduction can be checked against its origin:
ott:rail, the GeoServer SLD behind TriMet's rail maps, fetched from
ws.trimet.org
via WMS GetStyles. Its rules key on exactly the line values
the rail layers carry, so rail-lines/styles/default.json reproduces it
segment for segment — including the layered dashed overlays that show which
services share a track.trimet-routes,
TriMet's MapLibre style at tiles.trimet.org, which gives
the line weights and the flat bus color #136390. Where it resolves
route_color from GTFS, the equivalent colors are taken from TriMet's GTFS
routes.txt.Every collection ships three to five styles; see each collection's README.
All eight are published in EPSG:2913 (NAD83(HARN) / Oregon North (ft)) and reprojected here to EPSG:4326. TriMet's note on the GIS page:
TriMet provides these datasets free of charge in shapefile and KML format. All geospatial datasets created and distributed by TriMet are in NAD83, Oregon State Plane North projection and coordinate system. Refer to the metadata for additional information regarding a specific data layer. TriMet provides data to the general public under certain terms and conditions.
Contact for the source data: TriMet GIS, 4012 SE 17th Ave, GIS3, Portland, OR 97202 — 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.
Maintained by Chris Holmes (cholmes@9eo.org), not affiliated with TriMet. Conforms to the Portolan specification v0.1.0.
Nothing here is hand-written — the catalog is generated, so a fix belongs in the source rather than in the published files.
Found something wrong? A description that misreads, a column definition that does not match the data, a query that fails, a style that draws badly, a caveat that is missing — please open an issue or send a pull request. Improvements are just as welcome as corrections.
Corrections to the data itself go to TriMet at gis@trimet.org; this catalog only mirrors what they publish and does not edit it.
If you are editing the catalog, everything under catalog/ is regenerated by
tools/build.py and a hand-edit will be overwritten — change the generator or
the manifest instead.
CLAUDE.md says which file to edit for
what, and the test suite runs every published SQL example before anything ships.
The TriMet name and logo are trademarks of TriMet, used here solely as a link back to trimet.org, which section 6 of TriMet's Terms of Use permits.
| 169 |
| Point |
| TriMet rail stops optimized for cartographic display. |
| TriMet Transit Centers | 15 | Point | TriMet transit center locations. |
| TriMet Park and Rides | 46 | Point | TriMet park and ride locations. |
| July 30, 2026 |
| TriMet Route Stops | tm_route_stops — Shapefile · KML · Metadata | July 30, 2026 |
| TriMet Rail Stops | tm_rail_stops — Shapefile · KML · Metadata | December 04, 2024 |
| TriMet Transit Centers | tm_tran_cen — Shapefile · KML · Metadata | July 31, 2024 |
| TriMet Park and Rides | tm_parkride — Shapefile · KML · Metadata | June 23, 2026 |