Commit Graph
8 Commits
Author SHA1 Message Date
Bortlesboat d2c80cffdb fix(gbfs): exclude stations with invalid coordinates
Reject non-numeric and out-of-range feed coordinates before they reach the
map or bike-share queries. Preserve numeric strings, aliases and zero.

Cover malformed records at the parser and public query boundaries.

Signed-off-by: Bortlesboat <[email protected]>
2026-10-18 23:57:29 -04:00
ulihhhhandClaude Opus 5.5 93ea088f45 docs(gbfs): note that overflow bikes can exceed dock capacity
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-17 22:33:57 +01:00
ulihhhhandClaude Opus 5.5 53cda29be4 fix(gbfs): count docks, not PBSC's geofenced area, as station capacity
PBSC adds the bikes a station accepts in the geofenced area around its
docks to `capacity`, and reports that part as `geofenced_capacity`, which
is not a GBFS field. Bilbao Bizi publishes 39 docks as capacity 839 with
geofenced_capacity 800, so its stations would read as nearly empty: red,
drawn at maximum size, and carded "39 avail · 0 docks · 839 cap".
BiciMAD (671 of 678 stations, about twice the docks) and Dbizi (11 of 70)
do the same.

The shared parser now reads `capacity − geofenced_capacity` when the
extension is present and no larger than the total, so the layer, its
colour ratio and get_bike_share all see the docks. No registered system
changes: none of the 52 publishes a geofenced capacity above 0 (live
feeds, 2026-10-17, all 13,397 capacities identical).

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-17 22:33:57 +01:00
ulihhhhandClaude Opus 5.5 ee686a3207 fix(gbfs): read underscores in station names as word breaks
JCDecaux's Spanish contracts prefix every station name with "_", and
Valenbisi joins its words with it ("_PLAZA_MUSICO_LOPEZ_CHAVARRI"), so
the card and HUD would show the raw identifier. The shared parser now
reads a run of underscores, with the spaces around it, as one word break
and trims the ends. It applies to `name`, the `short_name` fallback and
GBFS v3 localized names, so the layer and get_bike_share both read it.

No registered system changes: run over all 52 live station_information
feeds on 2026-10-17, the old and new parsers give identical names for
all 13,397 stations. Other spacing stays as the operator published it.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-17 22:33:57 +01:00
Rudy Celekli 9bee985abb fix(bikeshare): preserve unknown availability counts 2026-10-15 16:56:11 -04:00
Mazeyar Moeini Feizabadi ddd932f0a7 Harden shared GBFS station-name parsing and add regression coverage 2026-10-13 23:46:51 +02:00
Kristóf Kékesi 16e0f35c74 Feat: GBFS v3 support for station names
GBFS v3 uses `LocalizedString` for `name` and `short_name` of the stations. This caused stations from v3 to have names like `[object Object]`.

This commit makes the code handle v3 names. It default to locale 'en' then fallbacks to the first option in the array.

Documentation for v3: https://gbfs.org/documentation/reference/#station_informationjson
2026-10-13 23:35:48 +02:00
Sameh Khamis eb12303f46 refactor: move GBFS station parsing into a portable source module
The bike-share layer parsed station documents inside its model factory.
Move the parsers unchanged to src/sources/gbfsStations.js and have the
model import them, so code outside the layer can read GBFS stations
without constructing the layer.
2026-10-01 12:18:48 -07:00