Gruppieren von geografischen Formen
ch verwende Dundas Maps und versuche, eine Karte der Welt zu zeichnen, in der Länder in Regionen gruppiert sind, die für eine Geschäftsimplementierung spezifisch sin
Ich habe Formdaten (Punkte und Segmente) für jedes Land der Welt. Ich kann Länder zu Regionen zusammenfassen, indem ich alle Punkte und Segmente für Länder innerhalb einer Region zu einer neuen Regionsform hinzufüge.
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);
}
Das Problem ist, dass die Ländergrenzen immer noch in einer Region angezeigt werden und ich sie entfernen möchte, damit nur regionale Grenzen angezeigt werden.
Dundas-Polygone müssen am selben Punkt beginnen und enden. Dies gilt für alle Länderformen. Jetzt brauche ich einen Algorithmus, der:
estimmen Sie, wo sich Ländergrenzen an einer regionalen Grenze kreuzen, damit ich mich den regionalen Grenzabschnitten anschließen kanestimmen Sie, welche Ländergrenzen keine regionalen Grenzen sind, damit ich sie verwerfen kanSortieren Sie die resultierenden regionalen Punkte so, dass sie nacheinander die Formgrenzen beschreiben.Below ist wo ich bisher mit der map hingekommen bin. Sie sehen, dass die Landesgrenzen noch entfernt werden müssen. Beispielsweise sollte die Grenze zwischen der Mongolei und China verworfen werden, während die Grenze zwischen der Mongolei und Russland beibehalten werden sollt
Der Grund, warum ich eine regionale Grenze beibehalten muss, ist, dass die Regionsfarben für die Übermittlung von Informationen von Bedeutung sind, benachbarte Regionen jedoch möglicherweise dieselbe Farbe haben. Die Regionen können sich ändern, um Länder einzuschließen oder auszuschließen. Deshalb muss die regionale Gestaltung dynamisch sein.
BEARBEITEN Ich weiß jetzt, dass ich, wonach ich suche, eine UNION von Polygonen bin. David Lean Erklärt, wie es geht Verwenden der räumlichen Funktionen in SQL Server 2008, die eine Option sein könnten, aber meine Bemühungen sind zum Stillstand gekommen, weil die resultierende Polygonvereinigung so komplex ist, dass SQL sie bei 43.680 Zeichen abschneidet. Ich versuche jetzt, entweder eine Problemumgehung dafür zu finden oder einen Weg zu finden, die Vereinigung im Code durchzuführen.