GEOS는 2차원 벡터 기하학에 대한 작업을 수행하기 위한 C++ 라이브러리입니다. 이는 주로 JTS Topology Suite Java 라이브러리의 포트입니다. PostGIS, Python용 Shapely 패키지, R용 sf 패키지 등에서 사용되는 많은 알고리즘을 제공합니다.
자세한 내용은 프로젝트 홈페이지에서 확인할 수 있습니다.
공식 Git 저장소는 GitHub에 있습니다.
CI | 상태 | CI | 상태 | CI | 상태 |
---|---|---|---|---|---|
GitHub | 베시 | 데비 | |||
GitLab CI | 베시32 | 위니 | |||
베리 | 드로니 | ||||
베리64 |
설치 파일을 참조하세요.
C API 튜토리얼 및 C++ API 튜토리얼도 참조하세요. 코드 저장소에 코드 예제가 있습니다.
GEOS는 C API의 장기적인 안정성을 약속합니다. 일반적으로 C API의 후속 릴리스에서는 새로운 기능을 추가할 수 있지만 기존 유형이나 기능 서명을 제거하거나 변경하지는 않습니다. C 라이브러리는 C++ 인터페이스를 사용하지만 C 라이브러리는 일반적인 ABI 변경 감지 버전 관리를 따르므로 C 라이브러리에 대해서만 링크하는 프로그램은 GEOS가 업그레이드될 때 다시 링크하지 않고 작동해야 합니다. 이러한 이유로 GEOS의 시스템 설치에 동적으로 연결되도록 의도된 소프트웨어에는 C API를 사용하는 것이 좋습니다.
geos-config
프로그램을 사용하여 C 라이브러리에 대해 빌드하기 위한 적절한 컴파일러 및 링커 플래그를 결정할 수 있습니다.
CFLAGS += `geos-config --cflags`
LDFLAGS += `geos-config --ldflags` -lgeos_c
C API의 모든 기능은 geos_c.h
헤더 파일을 통해 사용할 수 있습니다.
C API에 대한 문서는 geos_c.h
헤더 파일의 주석을 통해 제공됩니다. C API 사용 예제는 예제 디렉터리에서 찾을 수 있습니다.
GEOS에 대한 C++ 인터페이스는 C++ 프로그램을 위한 보다 자연스러운 API뿐만 아니라 C API에 노출되지 않은 추가 기능을 제공합니다. 그러나 C++ 인터페이스를 사용하기로 결정한 개발자는 GEOS가 릴리스 간 C++ API의 API 또는 ABI 안정성을 약속하지 않는다는 점을 알고 있어야 합니다. C++ API/ABI의 주요 변경 사항은 일반적으로 NEWS 파일에 발표되거나 포함되지 않습니다.
C++ 라이브러리 이름은 마이너 릴리스마다 변경됩니다.
geos-config
프로그램을 사용하여 C++ 라이브러리에 대해 빌드하기 위한 적절한 컴파일러 및 링커 플래그를 결정할 수 있습니다.
CFLAGS += `geos-config --cflags`
LDFLAGS += `geos-config --ldflags` -lgeos
C++ 라이브러리에 대해 빌드할 때 컴파일러 경고가 발생할 수 있습니다. 컴파일러 경고를 제거하려면 프로그램 어딘가에 USE_UNSTABLE_GEOS_CPP_API
정의하십시오.
GEOS의 일반적으로 사용되는 기능은 geos.h
헤더 파일에서 사용할 수 있습니다. 덜 일반적인 기능은 개별 클래스에 대한 헤더를 포함하여 액세스할 수 있습니다(예: #include <geos/algorithm/distance/DiscreteHausdorffDistance.h>
.
#include <geos.h>
C++ 사용 예제는 예제 디렉터리에서 찾을 수 있습니다.
GEOS는 다양한 언어로 바인딩되어 있습니다. 바인딩 페이지를 참조하세요.
API 문서는 Doxygen을 사용하여 생성할 수 있습니다. 문서는 기본 빌드에 포함되지 않습니다. 문서를 작성하려면 다음을 실행하세요.
cmake -DBUILD_DOCUMENTATION=YES
cmake --build . --target docs
코드를 원하는 스타일로 포맷하려면 소스 트리에 포함된 스타일 버전을 사용하세요.
tools/astyle.sh <yourfile.cpp>
테스트/README.md의 문서를 참조하세요.
geosop
- GEOS용 CLI입니다. 문서는 util/geosop/README.md에 있습니다.