В случае сокрытия углов добавить точки, являющиеся границами пропуска. Далее взять два отрезка, заканчивающихся на пропуске, построить из них линии и решить уравнение их пересечения. Если решение состоит из 1 точки, имеем угол - с этой точкой соединяем концы разорванной области. Если решений бесконечно много, то линии совпадают, и концы разорванной области соединяем между собой. Если решений нет, то линии параллельны, значит скрыты 2 угла, и здесь надо что-то делать. Например, соединить концы отрезком: это не будет гарантировать соблюдение реального контура здания, но даст 2 отсутствующих угла.
В случае сокрытия сразу трёх углов выбросить такую дурную карту
а это класная идея, в принципе плевать на все сокрытые углы:
нумеруем все вершины в порядке их соединения ( учитывая впуклый\выпуклый многоугольник каждая вершина соединена только с 2мя соседними )
расчитываем центр объекта
берем и удаляем все вершины которые соединены отрезками размером меньше а
если получили меньше 3х отрезков удаляем объект
если разорваные полилинии паралельны удаляем объект
ищем точки пересечения разорванных полилиний и на их месте устанавливаем новую вершину
если линии стороны многоугольника пересеклись удаляем объект
если площадь многоугольника больше б удаляем объект
каждый удаленные объект правим вручную, или ставим в центре удаленного объекта фигуру по умолчанию
хм .... по идее было бы неплохо распознать номер висящий над\рядом с каждым домом