We provide in this short note a brief description of the algorithm we used to determine the number of new lots that could result from any given level of minimum lot size and minimum frontage.

We start with the city’s structure and lot shapefiles. Bear in mind, these shapefiles are not perfect. We notice that there are some discrepancies between the assessor’s lot sizes and the geographic lot sizes calculated from the shapefiles. They are not dramatic differences, so we feel confidence that relying on the geographic lot sizes will not distort the results.

First, we need to calculate frontage for each lot. Oddly, this is not a variable tracked in the city’s database, as far as we can tell. Additionally, the road shapefiles available are imprecise and often do not perfectly complement lot shapes, so we cannot rely on simple contiguity of lot lines to roads. Instead we use the following approach:

- Dissolve each parcel polygon into a collection of linestrings.
- Find the centroid of each linestring and test if it touches another parcel polygon. If it doesn’t, it is a potential frontage. Again, unfortunately, the city’s shapefile has a number of “voids” (like creeks), so we get a lot of “false frontages” in this first cut.
- Recombine the potential frontage linestrings into a single linestring.
- Divide the linestring into non-continguous portions. Each is a separate potential frontage.
- For each of these linestrings, test for “corner turns”. Iterate through line segments in each linestring, calculating cumulative change in bearing. Once 75 degrees is exceeded, a new frontage is considered to begin.
- Filter out “false frontages”. For each frontage, check the distance from that frontage to a road centerline. If it is more than 20 meters away from a road centerline, we consider it a false frontage and discard it.

Now that we have frontages, we can move on to the true subdivision analysis. The first test is to see how many parcels could be carved out of a given parcel under the assumption that any existing structures are torn down. The analysis in this case is quite simple. We divide lot size (less lot area in floodplain) by the specified minimum lot size; we divide total frontage by minimum frontage; we round down to the nearest whole number for each value. The lower value is the total number of lots that can be created. We subtract one to reflect the existence of an original lot. The result is the incremental lots.

Next, we calculate the number of new lots than can be created assuming the existing structure is left alone. This is a much trickier analysis! We need to figure out how much room there is between the existing structure and the “depth” lot lines (i.e. the lot line in direction roughly perpendicular to the frontage — and if the parcel has multiple frontages, we need to do this for lot lines perpendicular to *each* frontage). This is not straightforward, since the city does not distinguish between frontage, rear, and side lot lines. Nor does it track setbacks. We devised the following algorithm:

- For each structure on a lot of interest, create a convex hull around the points that make up the structure.
- Reduce the convex hull to a minimum bounding rectangle
- Calculate the bearing of the axes of the rectangle. This gives us a sense of the “length” and “depth” of the house.
- From the center of the MBR, draw lines outward along the MBR bearings for 100 meters.
- Find where the radiating lines intersect with the parcel boundary and take these coordinates.
- Find the minimum distance from the structure to each of these intersection points
- Determine which of the lines hits a frontage. If a line hits a frontage, the
*other*line is considered a lateral (i.e. side-to-side) lot axis; if both lines hit a frontage, then we can consider both lines laterals (say in the case of a corner lot) - Record each lateral clearance (up to 4).
- We assume that available “new” frontages are the lateral clearances.
- Divide each lateral clearance by the minimum frontage and round down to the closest whole number. Sum the resulting numbers. This is the limitation on new lots based on frontages.
- Divide total lot area by minimum lot area, rounding down to closest whole number
- The lesser of these two results is the number of new lots that can be created by subdivision without teardown.

The algorithm is not exact. There can be odd lot shapes that would not be subdivisible to the extent the algorithm predicts. It also ignores critical slopes. But ocular inspection of the resulting map suggests it is in the right ballpark for most lots.