I have a set of polygons like this:
The broad goal is to find how much of each polygon's perimeter is bordered by each of the other polygons, including polygons across the street. In other words, I want to find "bordering" polygons—not just those that share an edge, but those that "border" each other across the street as well. This sounds like a classic buffer problem, but the streets have variable lengths so I don't think a simple buffer would cut it. I have found a couple ways to formulate this problem, but each has its own flaws:
- Create a "voronoi diagram", but with polygons as inputs. This can be done with the Euclidean Allocation tool in ArcGIS, but a) this requires conversion to raster format and then back, which requires far too much processing time for the whole dataset (a large metropolitan county); and b) it does not return exactly what I want. For example, see below, after running Euclidean Allocation and converting the result back to polygons:
This gives me what I want in terms of finding the "across the street" polygons, but note how the polygons on the same side of the street now have artificially longer boundaries. This is important as I need to know the fraction of perimeter touched by each polygon.
Buffer each polygon only into empty space. I suspect this would be more computationally feasible if such a tool existed but a) it doesn't look like there is such a tool; and b) it would lead to the same flawed result as before.
Convert the polygons to lines and then points, and then run a Voronoi diagram. This approach probably could work, but I haven't yet found a workflow that gets me what I want. It would also only be an approximation, but I'd be willing to accept that. There would also be quite a large number of points.
For each polygon, find the nearest polygon in all directions. Basically, for each edge in the polygon, shift it outwards in the exact perpendicular direction until it touches another. For edges that are already shared with another polygon, do nothing. But I don't think such a tool exists.
I have searched around and I'm quite surprised that I haven't found an answer, considering that "finding parcels across the street" is probably a common GIS task. I should mention that I have access to most ArcMap functionality.
Curious to hear any of your thoughts!