2012-03-27 6 views
16

Ich wurde kürzlich von einem GIS-Unternehmen beauftragt, ihre alten Geomatik-Bibliotheken neu zu schreiben. Daher suche ich derzeit nach einer guten Berechnungsgeometriebibliothek. Ich habe CGAL gesehen, was unglaublich ist, aber mein Chef möchte etwas Freiraum haben.ist Boost.Geometry reif genug?

Also überprüfe ich jetzt Boost.Geometry. Diese Bibliothek scheint großartig zu sein, aber es scheint auch, dass sie sich ziemlich schnell ändert. Viele Dinge sind noch nicht implementiert, und viele Probleme werden auf der Mailing-Liste diskutiert.

Daher meine Frage: ist Boost.Geometry reif genug, damit ich etwas darauf bauen kann? Oder entwickelt sich das Design noch?

Dank

+0

Ich denke, dass die * * Design, es ist ziemlich stabil, wenn eine Bibliothek in boost akzeptierten . ist das nicht wahr? – CapelliC

+0

@chac Ja könnte man meinen. Aber von dem, was ich gesehen habe, sieht es so aus, als ob die Autoren dieser Bibliothek denken, dass Dinge besser sein könnten. Zumindest verstehe ich das, vielleicht liege ich falsch. Deshalb stelle ich diese Frage. – undu

+0

In 'frei' meinst du 'frei wie in Bier'? CGAL ist GPL und somit sehr "frei wie in Freiheit";) – pmr

Antwort

11

Je nach Bedarf können Sie bei GEOS, schauen, die von PostGIS für seine Geometrie Operationen unter anderem verwendet wird, und ist reifer als boost :: Geometrie. Es ist jedoch schwer zu erweitern, was Sie selbst tun müssen, wenn Sie Unterstützung für mehr als einfache Funktionen benötigen.

Wo Boost :: Geometrie glänzt, ist meiner Meinung nach seine Fähigkeit, sich an bestehende (Legacy) Bibliotheken anzupassen, was bedeutet, dass Sie in der Lage sein sollten, einige der Datenstrukturen Ihres Arbeitgebers (oder jede andere vorhandene geometrische Bibliothek) zu behalten. und bauen auf sie mit boost :: Geometrie.

boost :: Geometrie gewinnt Reif und erweiterten Funktionen ziemlich schnell, aber ich glaube nicht, das Design viel seit dem letzten Jahr geändert hat (wenn es in Auftrieb angenommen wurde). Ich würde auf der Mailingliste fragen - die Autoren sind sehr aktiv und hilfreich.

+0

danke für die Klarstellung. Ich habe GEOS gesehen und, wie Sie sagen, es scheint schwer zu sein, zu erweitern. Aber ich werde sehen, was ich tun kann :) – undu

+1

Wenn man eine Funktion verwenden möchte, die boost :: geometry mit einer vorhandenen (Legacy) Geometriebibliothek unterstützt, z. Lesen/Schreiben von WKT-Strings oder R-Tree-Index, man kann die Legacy-Objekte einfach an boost :: geometry anpassen, anstatt zwischengeschaltete Objekte erstellen zu müssen (was genau mit anderen Bibliotheken wie GEOS und Dies kostet viel Speicher und möglicherweise CPU.Wenn Sie nicht an Legacy-Objekte gebunden sind, ist dies kein großes Problem. – meastp

0

Es hängt von Ihren Bedürfnissen ab.

Boost ist eine der leistungsfähigsten, leistungsfähigsten und ausgereiftesten C++ - Bibliotheken, aber wenn es um Geometrien geht, ist Geos das Beste, ich habe beide in einem 3D-Datenoptimierungsprojekt ausprobiert.

-Boost-Geometrie Vorteile: -Performant -Well entworfen API

Geos Vorteile: -Accurate -Mature