How the Adams County 911 dashboard works
Nothing on the dashboard is reported, gathered, or judged by us. It is one county web page, parsed and laid out again. This page explains that process in enough detail for you to decide how much of it to trust.
One page, one table
The whole dashboard rests on a single URL: incidents.adamscountypa.gov, published openly by the county and readable without a login. What sits there is an HTML table of the calls currently open in dispatch, with four columns — call number, location, time, and nature of the call.
A function running on our server requests that page every time the dashboard refreshes, finds the table, walks its rows, and returns them as JSON. Your browser draws the cards from that JSON. There is no database behind this, no editorial pass, and no second provider whose numbers could be blended in. If a call is not on the county page, it is not here.
For most calls the county also links a per-call detail view. When it does, the card can be turned over and a second request fetches the unit roster for that call number. That roster is likewise reproduced as published, including the times the county has left blank.
What each part of a card means
The column names are short and one of them looks more like an address than it is, so they are worth setting out plainly:
- Nature
- The county’s own one-line description of the call, shown both as the badge at the top of a card and as its heading. It arrives as free text and is passed through unchanged.
- Category
- Not a county field. It is the group this site sorts the nature text into, and it decides the card colour and which filter chips match.
- Street
- The road portion of the county’s location column, taken as everything before its final comma. House numbers are not published, so this is a road, not an address.
- Municipality
- The borough or township after that final comma. It is the narrowest location the feed gives, and it is what the map draws.
- Dispatch time
- When the call went out, published as an Eastern wall-clock stamp and rendered here both as an elapsed figure and as an Eastern clock time.
- Call number
- The county’s identifier for the call, shown in the card footer. It is also the key used to request the unit roster, and it is searchable.
- Units
- Revealed by flipping a card: each assigned unit’s identifier and type, with its enroute, arrival, and clear times. Blank times show as a dash because the unit has not reached that stage.
The location column is split on its final comma: everything before it is treated as the road, everything after it as the municipality. That is a rule, not an understanding of Adams County geography, so an unusually punctuated location can land in the wrong half of the card. The original text stays searchable either way.
How calls get grouped
The nature text is matched against keyword lists, in the order below, and the first list to match wins. These five groups are ours — invented so that filtering and colour-coding have something to work with — and they are not Adams County classifications:
- Fire — nature text containing “FIRE”, “RESCUE”, “HAZMAT”.
- EMS — nature text containing “MEDICAL”, “EMS”, “AMBULANCE”.
- Traffic — nature text containing “TRAFFIC”, “ROAD”, “MVA”.
- Police — nature text containing “POLICE”, “LAW”.
- Other — everything left over, including wording this site simply does not recognise.
Because matching is on substrings and stops at the first hit, a call can be filed counter-intuitively: anything mentioning a road, for instance, reaches the Traffic list before the Police list is tried. When a group looks wrong, that is this list being blunt. Searching the nature text finds the call regardless of which group it landed in.
What Adams County does not publish
Several things people reasonably expect are absent from the source, and no amount of work on this site can produce them:
- No road closures and no hydrant status. The county page lists calls and nothing else. Other counties in this region publish closure and out-of-service hydrant lists; Adams does not, so this dashboard has no advisories section to fill.
- No cross street. The location column is a single road and a municipality. Cards therefore show one road, never an intersection pair.
- No coordinates and no house numbers. Which is what forces the mapping decision below.
- No separate incident type. The nature text serves as both the badge and the heading on a card, because the feed gives one description per call rather than two.
Why the map shades municipalities
Given a road name and a municipality, there are two options: shade the municipality, or guess a point on the road and mark it. This site shades. Each municipality is drawn as a circle covering the same area as the real municipality, using boundary data from the US Census Bureau’s TIGERweb service, which is public domain.
Marking a point would be worse in three separate ways:
- It would claim accuracy that does not exist. A road can run for miles through several townships, and the feed does not say where along it the call is.
- It would expose people. Medical calls come from private homes, and a sharp marker on a rural road is close to naming the household that called 911.
- It is not even obtainable. Street-level geocoders want a house number the feed withholds, and the free ones forbid being called at this rate in the first place.
Municipalities are matched on a normalised name plus a type suffix, so a township and a borough sharing a base name stay distinct. A call whose municipality does not match anything in the county set is not silently dropped; the count of unmatched calls is stated beneath the map.
Coverage
34 municipalities are matched: 21 townships and 13 boroughs, together roughly 519 square miles. Adams County has no city, so every entry is one or the other — Gettysburg, the county seat, is a borough.
The land area is spread very unevenly, which is worth knowing when reading the map. The three largest are Franklin Township (~68 sq mi), Menallen Township (~43 sq mi), Hamiltonban Township (~39 sq mi). The three smallest are York Springs Borough (~0.2 sq mi), Bendersville Borough (~0.5 sq mi), Mcsherrystown Borough (~0.5 sq mi) — a single circle in a large township covers a far wider area than a circle in a small borough, so the same shading means much less precision in some places than in others.
Times are Eastern wall-clock, deliberately
Dispatch stamps arrive in the county’s own format and are interpreted as America/New_York wall-clock time, whatever timezone your device is in. The offset is resolved through the browser’s timezone data and then resolved a second time, so a call near a daylight saving change does not slip by an hour. A card reading 8:07 PM means 8:07 PM in Adams County.
The “updated” time in the header is a different thing: it is when our server last read the county page, not when the county last changed it.
Where this stops being reliable
- Open calls only. No archive exists here. A cleared call disappears at the next read and cannot be recovered through this site.
- Up to four minutes behind us, plus however far behind the county page already was.
- Not a complete picture of the county. Only what the county chooses to publish reaches this page.
- Tied to the county’s HTML. The parser reads a table layout. Change that layout and this dashboard shows nothing until it is updated.
- Nobody is watching. This page is unattended. It cannot summon help and does not notify anyone.
Who runs this
A volunteer project, run independently and not affiliated with, endorsed by, or operated by Adams County government or the Adams County Department of Emergency Services. The name describes the subject of the data and nothing more.
Parsing bugs, wrong groupings, and corrections are genuinely welcome at [email protected]. See also the privacy policy and the terms of use.