I'm looking at identifying corner lots on a area feature for an entire city. For example Parcel 8 & 9. Has anybody come across this type of task?
The question as it is is a bit broad. We only have one example of a 'corner lot', you'd need a lot more to make an educated guess on how to tell them apart.
Some things you could think of though:
- Number of vertices > 5, which could mean the lot is not 'rectangular'.
- A significantly larger area than the average area of touching neighbour lots.
From that screenshot you could use the PolylineAnalyzer (a custom transformer) to look for lines in the polygon at or about 45 degrees. But whether that would work on other examples I don't know.
The question as it is is a bit broad. We only have one example of a 'corner lot', you'd need a lot more to make an educated guess on how to tell them apart.
Some things you could think of though:
- Number of vertices > 5, which could mean the lot is not 'rectangular'.
- A significantly larger area than the average area of touching neighbour lots.
@kim, Kim, I've somewhat established a methodology for you're second bullet.
I have my parcel feature reading to an AreaCalculator to StatisticsCalculator to Sorter (sorts by Area Descending). My next process I need to refine as it feeds to an AttributeFilter by Street Name (but I have 500+ streets) then each street feeds to a Sampler (Sorted by _max) and grabs the first 2 features from each road. Essentially grabbing the top 2 largest parcels which 90% of the time are the Pie lots.
The issue being, I do not want to add 500+ samplers after each street, so how/what 'smarter' transformer can do this task more efficiently?
This is how the workspace looks as of now, the AttributeFilter actually continues very far down the canvas....
@kim, Kim, I've somewhat established a methodology for you're second bullet.
I have my parcel feature reading to an AreaCalculator to StatisticsCalculator to Sorter (sorts by Area Descending). My next process I need to refine as it feeds to an AttributeFilter by Street Name (but I have 500+ streets) then each street feeds to a Sampler (Sorted by _max) and grabs the first 2 features from each road. Essentially grabbing the top 2 largest parcels which 90% of the time are the Pie lots.
The issue being, I do not want to add 500+ samplers after each street, so how/what 'smarter' transformer can do this task more efficiently?
This is how the workspace looks as of now, the AttributeFilter actually continues very far down the canvas....
Just a note here.
You can replace your AttributeFilter and all Samplers by a single Sampler with a GroupBy on the street name.
After calculating the area, use a BoundingBoxReplacer with the Oriented bounding Box option. Then calculate the area of the bounding box and compare with the original area. If the difference is over a ratio that you choose, these lots are not rectangular and are good candidates for corner lots.
Note that this won't detect corner lots that are also rectangular.
As @kim @mark2catsafe and @larry have already pointed out this is potentially a wickedly complex problem. Just another idea to add to the mix:
Do you have access to street centerline data with street names or some sort of unique identifier? If so, you can use a NeighborFinder to track down lots which have 2 different streets nearby.