Группировка географических фигур

Я использую Dundas Maps и пытаюсь нарисовать карту мира, где страны сгруппированы в регионы, которые являются специфическими для реализации бизнеса.

У меня есть данные формы (точки и сегменты) для каждой страны в мире. Я могу объединять страны в регионы, добавляя все точки и сегменты для стран внутри региона в новую форму региона.

foreach(var region in GetAllRegions()){
    var regionShape = new Shape { Name = region.Name };
    foreach(var country in GetCountriesInRegion(region.Id)){
        var countryShape = GetCountryShape(country.Id);
        regionShape.AddSegments(countryShape.ShapeData.Points, countryShape.ShapeData.Segments);
    }
    map.Shapes.Add(regionShape);
}

Проблема в том, что границы страны все еще отображаются внутри региона, и я хочу удалить их, чтобы отображались только региональные границы.

Полигоны Dundas должны начинаться и заканчиваться в одной и той же точке. Это касается всех форм страны. Теперь мне нужен алгоритм, который может:

Определите, где границы страны пересекаются на региональной границе, чтобы я мог присоединиться к сегментам региональной границы.Определите, какие границы страны не являются региональными, чтобы я мог их отменить.Отсортируйте получающиеся региональные точки так, чтобы они последовательно описывали границы формы.

Ниже я дошел до карты. Вы можете видеть, что границы страны все еще должны быть удалены. Например, границу между Монголией и Китаем следует отменить, а границу между Монголией и Россией следует сохранить.

Причина, по которой мне нужно сохранить региональную границу, заключается в том, что цвета региона будут важны при передаче информации, но смежные области могут быть одного цвета. Регионы могут меняться, чтобы включать или исключать страны, и поэтому формирование регионов должно быть динамичным.

РЕДАКТИРОВАТЬ: Теперь я знаю, что я ищу СОЮЗ полигонов. Дэвид Линобъясняет как это сделать использование пространственных функций в SQL Server 2008, которые могут быть опцией, но мои усилия остановились, потому что результирующее объединение многоугольников настолько сложно, что SQL усекает его до 43 680 символов. Сейчас я пытаюсь найти обходной путь для этого или найти способ объединения в коде.

Ответы на вопрос(2)

Ваш ответ на вопрос