I used 'fuzzy logic' for part 1.
Couldn't see a 'proper' way to eliminate ones whose areas were infinite.
I thought a convex hull algorithm was needed to eliminate ones whose areas were infinite, but it wouldn't, because if 'D' in the example was one square to the left, it would still be inside the hull, but anything to the left of it (and not up or down) is nearer to it than to any other location, ergo its area would be infinite.
I only summed up the areas inside the rectangular bounding box, but to eliminate any that were infinite, I simply drew a big circle round all the coordinates, and any coordinate that is the nearest to a point on that circle must have an infinite area.
https://github.com/bjtaylor1/AoC2018/blob/master/Day06/Program.cs