2009-06-25 6 views
6

Was sind einige empfohlene Frameworks zum Manipulieren von räumlichen Daten in C++?Was sind einige empfohlene Frameworks für die Manipulation von räumlichen Daten in C++?

Ich bin auf der Suche nach einem Polygon-Objekt, Punktobjekt und einigen Operationen wie Union, Schnittpunkt, Abstand und Fläche. Ich muss Koordinaten in WGS84 (lon, lat) eingeben und Fläche in Quadratkilometern erhalten.

Ich würde ein freies/Open-Source-Framework bevorzugen, bin aber offen für Vorschläge.

Edit: Leider brauche ich eine Nicht-GPL-Lösung. LGPL ist in Ordnung.

Antwort

3

GEOS ist eine Open Source (LGPL) C++ - Geometrie-/Topologie-Engine. Könnte Ihnen passen?

Nützliche Orte, um nach diesem Zeug zu suchen, sind diese useful article auf der O'Reilly-Website und auch OSGeo, die eine Zusammenarbeit zur Unterstützung von Open-Source-Geospatial Zeug ist.

0

Je nachdem, wie komplex diese Berechnungen sein werden, sollten Sie sich überlegen, Ihre eigenen zu schreiben. Wenn Sie nur Bereich, der Ihre beste Option für Geschwindigkeit und Mangel an aufgeblasen sein könnte.

ansonsten ist die Geographic Foundation Class (GFC) library Ihre beste Wette.

+0

Vielen Dank für den Zeiger auf GFC. Leider brauche ich eine Nicht-GPL-Lösung, daher habe ich meine Frage geklärt. –

0

Es ist nicht umfassend und auf hohem Niveau genug für das, was Sie gefragt, aber für geodätische tun verwandelt Sie die hervorragende GEOTRANS Bibliothek NGA verwenden:

http://earth-info.nga.mil/GandG/geotrans/

die Sie zwischen Dinge wie WGS84 lat umwandeln lassen/long und ein lokales kartesisches Koordinatensystem. Der C-Code ist gut getestet, dokumentiert und öffentlich zugänglich.

2
  • Die CGAL Open Source Project bietet einen einfachen Zugang zu einer effizienten und zuverlässigen geometrische Algorithmen in der Form einer C++ Bibliothek. CGAL ist in verschiedenen Bereichen, um geometrische Berechnung, wie verwendet: Computer Grafiken, wissenschaftliche Visualisierung, Computer Aided Design und Modellierung, geographische Informationssysteme, Molekularbiologie, medizinische Bildgebung, Robotik und Bewegungsplanung, Netz Generation , numerische Methoden.

  • Die generische Geometriebibliothek (geometrylibrary.geodan.nl, derzeit in "Vorschau 4") bietet eine generische Implementierung von Geometriealgorithmen, die mit benutzerdefinierten Geometrien arbeiten. Die Algorithmen enthalten einige bekannte und häufig benötigte Algorithmen wie Punkt-in-Polygon-, Polygon-, Punkt-zu-Punkt-, Punkt-zu-Linie-Abstand, Linien-Clipping und Polygon-Clipping, konvexe Hüllen. Es enthält auch Transformationsalgorithmen, Kartenprojektionen und Auswahlalgorithmen. Neben Algorithmen bietet die Bibliothek Geometrieklassen, die verwendet werden können, aber die generischen Algorithmen hängen nicht von ihnen ab. (Vorgeschlagen im Boost aufgenommen werden)

1

GEOS für das Geometriemodell und GDAL/OGR für eine räumliche Datenabstraktionsbibliothek, die Rasters und Vectors unterstützt.

Durch die Verwendung dieser Bibliotheken können Sie auch verschiedene Koordinatensysteme (wie zum Beispiel Transformieren von/nach WGS84) handhaben, da beide unter der Haube Proj.4 verwenden. Um Entfernungen in Metern zu finden, können Sie von WGS84 in etwas umwandeln, das Meter wie UTM verwendet.

3

Ich empfehle auch Generic Geometry Library, die vor kurzem reviewed wurde und schließlich in die Sammlung von Boost C++ Libraries übernommen wurde. Wie in Boost enthalten, heißt die GGL nun Boost.Geometry, genauer Boost.Geometry aka GGL, Generische Geometriebibliothek.

Andere nützliche Werkzeuge

  • ORFEO Toolbox (aka OTB) - eine Bibliothek von Bildverarbeitungsalgorithmus
  • MetaCRS - ein Projekt mehrere Vorsprünge umfasst, und systembezogenen Technologien koordinieren.
  • libgeotiff zur alleinigen GeoTIFF Manipulation