For traffic crashes, the data points are mostly mapped on roadways. Meanwhile, Census uses roadways (centerlines) as boundary for geographic areas like ZIP Code Tabulation Areas (ZCTAs).

I'm trying to calculate how many crashes occurred within each ZCTA. The problem is, crashes occurred on the same roadway segment will be allocated by GIS to different ZCTAs depend on which side of the roadway centerline (ZCTA boundary) the crashes were mapped at. Even 0.1 feet difference could lead to different result.

I thought about creating a buffer to assign crashes occurred on one roadway segment to all the ZCTAs which use that roadway segment as boundary. However, there is a concern that these crashes will be overly represented in this case. I'm looking for a way to address this problem which making statistical sense.

I couldn't find any literature on this topic. Maybe the keywords I used were not typical.

How would you address this problem or do you know any existing studies on this topic? I feel this should be a common problem.

  • 1
    Yes it is a common problem. Is there any gap between your ZCTA polygons? If a point falls on the boundary of two (or more) areas, how do you decide which one 'gets' the point? What software are you using? any advice will need to be based on the software/API you are using... Commented Aug 4, 2017 at 2:58
  • 2
    I'd use half a point, i.e. when uncertain, 0.5 of accident happened in one and 0.5 in other
    – FelixIP
    Commented Aug 4, 2017 at 3:05
  • 1
    I don't think there're gaps between lines, but there're areas that Census ZCTA polygons don't cover. That means some of the crashes fall outside of the ZCTAs. Besides those unassigned points, my main concern is about the points in the question described above. I'm using ArcGIS. I was wondering if there is any widely supported statistical way to address this issue, better have literature. Or maybe like FelixIP said, divided the point by number of polygons it's adjacent to? Or maybe randomly assign those points to adjacent polygons?
    – 12B01
    Commented Aug 4, 2017 at 3:15
  • If there is no gaps or overlaps your point will be caught by one polygon or the other.. it cannot exist in both. This is (seemingly) arbitrary. You can buffer your polygons, overlay point and buffer then using summary statistics decide how many buffers the point falls within; you will need to do some base work first, each point and polygon should have a static unique ID (not FID) to use as a case field then join field then a weight field (start at 1 and divide by the number of buffers intersecting) to assign half, third, quarter etc. weight to each polygon. How is your python? Commented Aug 4, 2017 at 3:21
  • 2
    Spatial join one (point) too many polygons will handle it nicely. Perhaps with small search radius. Summarise Results by poin I'd and assign weight to point = 1/frequency. Bring weight back to join and summarise by polygon id
    – FelixIP
    Commented Aug 4, 2017 at 3:33

1 Answer 1


Based on my literature review, it's a common practice to divide the crash by number of polygons it intersect with.

Urban Bicyclists: Spatial Analysis of Adult and Youth Traffic Hazard Intensity

“In this case study, 42% of crashes happen to fall on tract boundaries, which renders the issue all the more critical. Several options exist in this situation. The first is to use the address assigned to the crash by the reporting officer as recorded on the police report……A significant drawback of this method stems from the accuracy of the recorded address…… Another option is recording boundary crashes twice—once in each of the tracts it shares or up to five times for crashes occurring at the convergence of five different census tracts. This method also introduces error by creating a false number of total crashes and also gives more weight to the boundary crashes over others as they are counted more frequently. A third alternative is to apportion the crash, giving a count of one half to each tract if it is on the border between two census units, one third if it is at an intersection of three units, and so forth. Although this is a more time-consuming process, it should produce the most accurate representation of the number of crashes per tract of the three options presented and is the approach taken in this analysis.”

Macrolevel Model Development for Safety Assessment of Road Network Structures (it refers to the article above)

“For the quantitative features of the road network, the GIS spatial join function was used to extract signals, intersections, roads, and average annual daily traffic data at the TAZ level. In this study, a method proposed by Lovegrove and Sun was applied to treat roads on the TAZ boundary (6). Polyline or point features on the TAZ boundaries were shared by corresponding TAZs by use of a prerating with a weight equal to the reciprocal of the related TAZs. By this method, an intersection on the boundaries of three TAZs, for example, was assigned a weight of 0.333. The roads on the TAZ boundary were assigned by the number of adjacent TAZs.” “However, studies that focused on the spatial distributions of crashes at intersections found that crashes at intersections were not equally distributed among the four approaches (32). In this study, the vehicle traveling directions recorded in the crash data were used.”

Investigation of road network features and safety performance

“In this study, a method proposed by Sun and Lovegrove (2010) was applied to assign roads on the TAZ boundary. Polyline or point features on the TAZ boundaries were shared by corresponding TAZs by pre-rating them with a weight equal to the reciprocal of related TAZs. Using this method, an intersection on the boundaries of three TAZs (for example) would be assigned a weight of 0.333. The roads on the TAZ boundary were assigned by the number of adjacent TAZs.”

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.