Destination catalogs¶
Access scoring measures how many everyday destinations each census block can reach by a
low-stress bike route. Which destinations count — and how OSM tags map to them — is a
catalog: a list of destination types held on config.destinations. This page is the
reference for the catalog structure; for how the destinations stage clusters POIs and
links them to blocks see How destinations work, and for
a worked addition see Add a destination.
The standard catalog¶
The bundled default scenario carries the 13 standard BNA destination types across three
scoring categories (opportunity, core services, recreation) — schools, colleges,
universities, supermarkets, doctors, dentists, hospitals, pharmacies, parks, trails,
community centers, social services, and transit. Each type contributes to its category's
score with a declared weight; the categories combine into the block's overall_score.
See Scoring for the weighting.
Anatomy of a destination type¶
Each entry pairs OSM matchers with scoring metadata:
- name: schools
display_name: K-12 Schools
type: poi # poi | area | network_path (trails)
node_match: # tag matchers, in the shared decision-DSL form
any:
- all:
- { field: amenity, op: in, value: [school, kindergarten] }
area_match: { … } # matcher for polygon features
way_match: { any: [] } # matcher for way features
exclude_match: { any: [] } # features to drop even if matched
clustering_mode: no_cluster # no_cluster | poly_cluster | point_cluster
clustering_tolerance_m: 0 # merge radius for point_cluster / poly_cluster
scoring_category: opportunity # opportunity | core_services | recreation
category_weight: 0.35 # share of the category's score
scoring: { first: 0.3, second: 0.2, third: 0.2, max_score: 1.0 }
score_id: opportunity_k12_education
human_explanation: K12 schools
enabled: true
- Matchers (
node_match/area_match/way_match/exclude_match) use the same decision-DSL matcher form as the stress and attribute rules — anany-of-allgroup of{field, op, value}conditions. Node/area/way matchers select from the three OSM geometry kinds;exclude_matchremoves false positives. - Clustering collapses nearby POIs of the same type into one destination:
no_clusterkeeps each feature,point_cluster/poly_clustermerge features withinclustering_tolerance_m. - Scoring —
scoring_categoryandcategory_weightplace the type in a category and set its share; thescoringblock (first/second/third/max_score) is the diminishing-returns curve for reaching one, two, three of that type. type: network_pathis the special trails pseudo-destination: off-network paths measured by length rather than clustered POIs.
Compact form¶
On disk a catalog may also be written in a compact form that omits empty matchers and
default fields; the loader expands it to the canonical structure above. Either form is
accepted wherever a catalog is read. Because a complete scenario embeds the full catalog,
customising destinations means editing the catalog inside a scenario (or deriving a new
scenario) — the loader validates every type's matchers and scoring metadata on read, and
config.validate() rejects a type whose scoring_category is not a declared category.