GEOS — это библиотека C++ для выполнения операций над двумерной векторной геометрией. В первую очередь это порт Java-библиотеки JTS Topology Suite. Он предоставляет многие алгоритмы, используемые PostGIS, пакетом Shapely для Python, пакетом sf для R и другими.
Более подробная информация доступна на домашней странице проекта.
Официальный репозиторий Git находится на GitHub.
КИ | Статус | КИ | Статус | КИ | Статус |
---|---|---|---|---|---|
GitHub | Бесси | Дебби | |||
GitLab CI | Бесси32 | Винни | |||
Берри | Дрони | ||||
Берри64 |
См. файл INSTALL.
См. также учебник C API и учебник C++ API. В репозитории кода есть примеры кода.
GEOS обещает долгосрочную стабильность C API. Как правило, последующие выпуски C API могут добавлять новые функции, но не удаляют и не изменяют существующие типы или сигнатуры функций. Библиотека C использует интерфейс C++, но библиотека C использует обычное управление версиями с учетом изменений ABI, поэтому программы, которые связываются только с библиотекой C, должны работать без повторного связывания при обновлении GEOS. По этой причине рекомендуется использовать C API для программного обеспечения, которое предназначено для динамического связывания с установленной системой GEOS.
Программу 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 можно найти в каталоге примеров.
Интерфейс C++ для GEOS предоставляет более естественный API для программ C++, а также дополнительные функции, которые не представлены в C API. Однако разработчики, решившие использовать интерфейс C++, должны знать, что GEOS не обещает стабильности API или ABI API C++ между выпусками. Критические изменения в 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>
См. документацию в test/README.md.
geosop
— интерфейс командной строки для GEOS. Документация находится в util/geosop/README.md.