Wir haben ein älteres Programm, das einige Polygone ausschneidet - Vereinigungen, Differenzen, Schnittmengen, exklusive oder Polygone und Multipolygone.
Es verwendet die GPC - General Polygon Clipper Library der University of Manchester .
Wir sind derzeit an einer Neufassung beteiligt. Ich hatte gedacht, dass die Standardbibliotheken von .NET 4.5 Funktionen zum Bearbeiten von Geometrien enthalten könnten, aber ich konnte sie nicht finden.
Wir erwägen Alternativen zu GOC aus zwei Gründen:
Um Nr. 2 zu erweitern, was wir wollen, ist ein Polygon, dessen Grenzen nur ein bisschen über dem Original liegen. Angenommen, ich habe eine Reihe alter Polygone und zeichne ein neues Polygon. Ich möchte das neue Polygon gegen die Vereinigung der alten Polygone schneiden, dann möchte ich es nur ein wenig erweitern, so dass es die vorhandenen Polygone nur ein wenig überlappt.
In unserem Problembereich ist eine kleine Überlappung akzeptabel, aber eine Lücke - egal wie klein - nicht. Und angesichts der Art und Weise, wie Fließkommavergleiche funktionieren, ist eine kleine Überlappung die einzige Möglichkeit, um sicherzustellen, dass es keine Lücke gibt.
In der Legacy-App haben wir zwei Ansätze ausprobiert, um diese Erweiterung zu erstellen:
Mir fallen da zwei alternative Ansätze ein:
Wir suchen also nach Geometriebibliotheken, die Clipping und entweder Skalierung oder Pufferung unterstützen und die als .NET-Assemblys ohne externe DLLs implementiert sind.
Hat jemand irgendwelche Hinweise?
Sie sollten sich NetTopologySuite ansehen. Wir haben es für 2D-Geometrieoperationen verwendet. Es ist reines C# und hat viele Funktionen, die zu groß sind, um sie hier aufzulisten. Möglicherweise haben Sie ein wenig Probleme, Dokumentation zu finden, aber sobald Sie anfangen, macht alles Sinn.
Clipping, Buffering, boolesche Operationen und Triangulationsalgorithmen (delaunay, voronoi etc.) sind elementare Sachen in NTS.
Werfen Sie einen Blick in meine Clipper- Bibliothek.
Open-Source-Freeware-Bibliothek, codiert in C# (und C++ und Delphi) mit sehr großzügiger Boost-Lizenz (die die Verwendung in kommerziellen Apps ohne Gebühr erlaubt). Kann direkt in Ihre Anwendungen kompiliert werden, sodass keine externen DLLs benötigt werden.
Offsetting (Erweitern & Schrumpfen) wird vollständig unterstützt.
Wut