Geocoding incident addresses

Police records write places the way officers say them: a block instead of a house, a corner instead of an address. A geocoder for crime analysis has to read both, say how many rows it matched, and let you publish without pointing at a house.

New Geocode addresses Command line Public sector

Blocks and crossings

1200 block of Main St is read as the middle of the hundred on that street, Main St & 5th Ave (also and, at) as the point where the two streets meet; the answer says which with match_level (StreetAddress, StreetInt). Details.

Is the match rate high enough?

Ratcliffe (2004, International Journal of Geographical Information Science 18:1) estimated 85 % as the minimum share of geocoded records for crime maps not to mislead. gridpin bench reports the match rate of your own table — rows matched at an address, a block or a crossing — and with --min-match-rate 0.85 fails below that bar, so a pipeline stops before a map is drawn from too few points.

terminalCLI
gridpin bench usa.bin incidents_with_known_points.csv --min-match-rate 0.85
gridpin batch usa.bin incidents.csv geocoded.csv --with verdict

--with verdict says for each row what happened to the street, the number, the postcode and the town, so the rows to check by hand are the ones a field was corrected or not found in.

Publish without pointing at a house

--aggregate h3:8 writes counts per cell and no coordinate; small cells merge into one line. --mask donut:100-300,k:10 moves each point at random in a ring and far enough that ten addresses lie within the move. Details. Everything runs on your own machine: incident addresses never reach a vendor.