GEOS ist eine C++-Bibliothek zur Durchführung von Operationen an zweidimensionalen Vektorgeometrien. Es handelt sich in erster Linie um eine Portierung der Java-Bibliothek JTS Topology Suite. Es stellt viele der von PostGIS verwendeten Algorithmen, das Shapely-Paket für Python, das SF-Paket für R und andere bereit.
Weitere Informationen finden Sie auf der Projekthomepage.
Das offizielle Git-Repository befindet sich bei GitHub.
CI | Status | CI | Status | CI | Status |
---|---|---|---|---|---|
GitHub | Bessie | Debbie | |||
GitLab CI | Bessie32 | Winnie | |||
Berrie | Dronie | ||||
Berrie64 |
Siehe die INSTALL-Datei.
Siehe auch das C-API-Tutorial und das C++-API-Tutorial. Es gibt Codebeispiele im Code-Repository.
GEOS verspricht langfristige Stabilität der C API. Im Allgemeinen können nachfolgende Versionen der C-API neue Funktionen hinzufügen, bestehende Typen oder Funktionssignaturen werden jedoch nicht entfernt oder geändert. Die C-Bibliothek verwendet die C++-Schnittstelle, aber die C-Bibliothek folgt der normalen ABI-änderungsempfindlichen Versionierung, sodass Programme, die nur eine Verknüpfung mit der C-Bibliothek herstellen, ohne erneute Verknüpfung funktionieren sollten, wenn GEOS aktualisiert wird. Aus diesem Grund wird empfohlen, die C-API für Software zu verwenden, die dynamisch mit einer Systeminstallation von GEOS verknüpft werden soll.
Das Programm geos-config
kann verwendet werden, um geeignete Compiler- und Linker-Flags für die Erstellung anhand der C-Bibliothek zu ermitteln:
CFLAGS += `geos-config --cflags`
LDFLAGS += `geos-config --ldflags` -lgeos_c
Alle Funktionen der C-API sind über die Headerdatei geos_c.h
verfügbar.
Die Dokumentation für die C-API wird über Kommentare in der Header-Datei geos_c.h
bereitgestellt. Beispiele für die Verwendung der C-API finden Sie im Beispielverzeichnis.
Die C++-Schnittstelle zu GEOS bietet eine natürlichere API für C++-Programme sowie zusätzliche Funktionen, die in der C-API nicht verfügbar sind. Entwickler, die sich für die Verwendung der C++-Schnittstelle entscheiden, sollten sich jedoch darüber im Klaren sein, dass GEOS keine API- oder ABI-Stabilität der C++-API zwischen Releases verspricht. Wichtige Änderungen in der C++-API/ABI werden normalerweise nicht angekündigt oder in der NEWS-Datei enthalten.
Der Name der C++-Bibliothek ändert sich bei jeder Nebenversion.
Das Programm geos-config
kann verwendet werden, um geeignete Compiler- und Linker-Flags für die Erstellung anhand der C++-Bibliothek zu ermitteln:
CFLAGS += `geos-config --cflags`
LDFLAGS += `geos-config --ldflags` -lgeos
Beim Erstellen mit der C++-Bibliothek kann eine Compilerwarnung ausgegeben werden. Um die Compiler-Warnung zu entfernen, definieren Sie USE_UNSTABLE_GEOS_CPP_API
irgendwo im Programm.
Häufig verwendete Funktionen von GEOS sind in der Header-Datei geos.h
verfügbar. Auf weniger verbreitete Funktionen kann zugegriffen werden, indem Header für einzelne Klassen eingefügt werden, z. B. #include <geos/algorithm/distance/DiscreteHausdorffDistance.h>
.
#include <geos.h>
C++-Verwendungsbeispiele finden Sie im Beispielverzeichnis.
GEOS verfügt über Bindungen in vielen Sprachen, siehe Seite „Bindungen“.
API-Dokumentation kann mit Doxygen generiert werden. Die Dokumentation ist nicht im Standard-Build enthalten. Führen Sie zum Erstellen der Dokumentation Folgendes aus:
cmake -DBUILD_DOCUMENTATION=YES
cmake --build . --target docs
Um Ihren Code im gewünschten Stil zu formatieren, verwenden Sie die im Quellbaum enthaltene Astyle-Version:
tools/astyle.sh <yourfile.cpp>
Siehe Dokumentation in Tests/README.md.
geosop
– eine CLI für GEOS. Die Dokumentation finden Sie in util/geosop/README.md.