Methodology

A repeatable path from source record to public statistic.

The pipeline favors traceability over guesswork: preserve the source, normalize carefully, reject corrupt input, and describe only what the evidence supports.

1. Collection

The camera pipeline queries OpenStreetMap for surveillance objects documented with ALPR-related tags. It retains the OSM object type and identifier, relevant original tags, source coordinates, and ingestion time. Ways and relations are converted to a representative point only when the upstream response supplies a valid center.

No automated edit is ever sent back to OpenStreetMap.

2. Normalization

Manufacturer spelling variants, direction values, and a small number of structural fields are normalized deterministically. Original values remain available internally. Missing manufacturer, operator, model, direction, or agency fields remain unknown; visual appearance and nearby records are not used to fill them in.

3. Geography

Valid camera coordinates are joined offline to authoritative state, county, and incorporated-place boundaries. Stable FIPS codes are preferred internally. A geographic match describes where a point falls, not which agency owns or operates the equipment.

4. Counting and aggregation

One stable normalized source record counts as one documented ALPR location. National, state, city, and manufacturer values are generated before the website build and reconciled against the validated current snapshot. Density measures appear only when appropriate population or area inputs are present.

City pages must pass a deterministic usefulness threshold based on evidence such as camera volume, manufacturer detail, known operator fields, geographic context, and usable history. Low-information cities remain available through aggregate navigation or map search without creating thin indexable pages.

5. Historical change

PlateReaderMap compares each validated snapshot with the last accepted snapshot. It can identify records newly documented in the source, records no longer present in the source, and material metadata or location changes. Historical claims begin only when PlateReaderMap has actually collected the required snapshots.

“No longer present in the source dataset” is not the same as confirmed physical removal. “Newly documented” is not automatically a confirmed installation date.

6. Publication checks

A run must pass coordinate, schema, minimum-count, aggregate-reconciliation, and unexpected-collapse checks before it can replace the previous good dataset. The public map archive is generated as vector tiles so normal visitors do not receive a national raw GeoJSON file.

7. Plate lookup

Audit releases are processed separately from the camera map. A state and plate are canonicalized into an exact key, protected with a keyed digest, and stored in small private lookup shards. The endpoint looks in one shard per request, returns no public cacheable response, and does not support browsing, prefixes, wildcard searches, or bulk queries.