25 stable releases
2.0.6 | Feb 7, 2024 |
---|---|
2.0.5 | Apr 8, 2023 |
2.0.4 | Mar 23, 2022 |
2.0.1 | Jul 25, 2020 |
1.0.12 | Apr 30, 2019 |
#956 in Algorithms
22,214 downloads per month
Used in 12 crates
(via geos)
1MB
34K
SLoC
geos-sys
Low level GEOS C API bindings for GEOS >= 3.6.0.
It provides C-interface as is. If you want to use a more Rust-friendly crate, use the georust/geos crate.
You can also find it on crates.io.
Build
By default, the build will use system-installed GEOS if available:
pkg-config
is used to automatically detect GEOS >= 3.9geos-config
is used to automatically detect GEOS < 3.9
If GEOS is in a custom location, you can instead use environment variables to configure GEOS detection (both must be set):
GEOS_LIB_DIR
GEOS_VERSION
If GEOS_LIB_DIR
is not also in your system's standard dynamic library search
path, you may need to add it to the dynamic library search path before
running the tests or executable produced by cargo build
.
Linux:
LD_LIBRARY_PATH=<path to GEOS>/lib GEOS_LIB_DIR=<path to GEOS>/lib GEOS_VERSION=<version> cargo test
MacOS:
DYLD_FALLBACK_LIBRARY_PATH=<path to GEOS>/lib GEOS_LIB_DIR=<path to GEOS>/lib GEOS_VERSION=<version> cargo test
You can build the included version of GEOS using the static
feature, which
will also statically link libgeos to this crate. In order to build GEOS, you
need to have cmake
and a C++ compiler. Building GEOS may take several minutes.
Bindings
Pre-built bindings are available for all supported GEOS versions.
Use the version feature for the version of GEOS that you want to target; your installed version of GEOS must be greater than or equal to this version.
Example:
cargo build --features v3_8_0
New bindings can be created using the sibling geos-sys-bind
crate.