An Elixir library for calculating spatial relationships between geometries like points, lines, and polygons.
Topo is a geometry library for Elixir that computes spatial relationships between two geometries, including Point, LineString, Polygon, and their Multi-variants. It provides functions for spatial analysis such as intersection detection, containment checking, and equality testing, making it suitable for GIS applications and systems requiring geometric computations. The library emphasizes accuracy with features like automatic geometry cleaning and configurable float precision handling.
Elixir developers working on geographic information systems (GIS), mapping tools, or any application requiring precise geometric computations, such as spatial data analysis or location-based services.
Developers choose Topo for its deterministic functions that handle edge cases like boundaries and floating-point imprecision, ensuring reliable spatial calculations. Its seamless integration with the Geo library and support for automatic geometry cleaning reduce errors and simplify implementation in Elixir projects.
A Geometry library for Elixir that calculates spatial relationships between two geometries
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Topo automatically reorders rings, closes polygons, and removes redundant points, ensuring accurate calculations without manual preprocessing, as described in the usage section.
Allows setting an epsilon value to handle floating-point imprecision in line segment comparisons, providing flexibility for different precision needs, as explained in the Float Precision Issues section.
Works directly with structs from the Geo library and map formats, making it easy to integrate with existing Elixir spatial data, as shown in the usage examples.
Explicitly defines special cases for containment, such as polygons not containing their own boundaries, ensuring deterministic and reliable results for complex scenarios.
Focuses only on spatial relationship checks and lacks common GIS features like geometric transformations, measurements, or spatial indexing, which might require additional libraries.
Precision settings via epsilon are configured at compile time and require recompilation to change, limiting runtime flexibility and potentially complicating deployment.
Relies on the external SegSeg library for line segment comparisons, introducing a dependency that might affect maintenance or have its own limitations.