QA/QC · map series · 2020

Road centerline QA and change reports

Built during the NG911 rollout, when Yavapai County’s cities and towns began feeding their road data into the county: a Python QA/QC suite for the centerlines, and a change-detection map series that caught segments duplicated, shifted or removed by the nightly integration, emailed out every night with a map package of each segment before and after.

Organization
Yavapai County
Year
2020
94%+ fewer1–3
segments changed by accident each night, down from an average of 50+
97%+ fewer<500 ft
of errors each night, down from about 20,000 ft
Under 2 weeks
to get there

Results

  • Accidental changes fell from an average of 50+ segments and about 20,000 feet of errors a night to 1–3 segments and under 500 feet, in under two weeks.
  • Duplicated, shifted and removed segments caught soon after each nightly integration.
  • Six automated checks on the centerline data.
  • A printable map series of the edits in a period.
  • The change report emailed every night, with a map package of each changed segment before and after.

Stack

  • Python
  • ArcPy
  • ArcGIS Pro
  • Map series
  • Map packages
  • Automated email
  • SQL Server enterprise geodatabase
  • NG911 road centerlines
Diagram with made-up streets. Left: road centerlines from a nightly integration compared with the night before. A segment loaded twice is marked purple as duplicated, a segment that moved out of alignment orange as shifted, with its old position dashed, and a spur that disappeared red as removed. Right: the change report pages through the three changes in turn, each with a map of the segment and its street name, change type, length and the night it was found, while the matching change is highlighted on the map.
Illustration with made-up streets: one night’s changes mapped by type, and the report paging through each one.

Why it was built

When the county’s cities and towns started feeding their road data into the county, the county checked it, converted it to NG911 and sent it back to them and to the state. I facilitated that NG911 rollout. While the kinks were worked out, the nightly integration could duplicate a segment, shift it out of alignment or drop it by accident, and these tools caught that quickly.

Road centerlines carry the address ranges that 9-1-1 uses to locate a caller’s address, so a bad segment is more than a cosmetic error. Two tools covered them: checks on the data itself, and a report of what changed.

The checks

A Python suite tested the centerlines for:

  • Gaps. Segments that should meet but don’t.
  • Continuity. Breaks in a road that should run through.
  • Geometry changes. Segments whose shape changed.
  • Short segments. Slivers left behind by splits and snapping.
  • Invalid names. Street names that fail validation.
  • Dangles. Loose ends that aren’t real dead ends.

The change report

The change-detection map series compared the centerlines over a reporting period and mapped the segments that changed, so the period’s edits could be checked. One sample report covered about a week: 23 segments, 11,111.84 feet of road and 15 pages.

We didn’t just send the converted data back. Delivery of the change report was automated too: every night it went out by email with a map package the cities and towns could load into their own GIS, showing each changed segment before and after.

Address points had their own check: the fishbone analysis.