Previous Work & Resources - mobileink/api.geometry GitHub Wiki
Standards
OpenGIS, etc.
Libraries
Haven't had time to inspect these or use any of them. Currently this list will just save you some websearch time.
Clojure
Geometry
A github search (keywords: geometry, lang=clojure) yields (among other things):
- thi.ng/geom "..a long, ongoing quest to create a comprehensive, cross-platform, yet easy-to-use API for 2D/3D geometry operations, both common and more niché.." Sounds like api.geometry, but I haven't had time to look at it closely yet.
- euclidean "Fast, immutable math for 3D geometries in Clojure" from the great weavejester (James Reaves) of compojure, hiccup, clout etc. fame.
- clojure-geometry Andy Moreland. Moribund?
- geometry-clj
- sligeom
James Sofra seems to be working the exact same vein. The following libraries do pretty much what I have in mind: define an api -> protocol -> implementation stack for geometry, but with the focus directed more towards GIS The structure seems to be there but coverage seems relatively limited.
- shapes "is a geometry library for Clojure. It allows for Constructive Solid Geometry operations and more." (previously called flatland, before that "euclij")
- features "a library for specifying and performing operations on geospatially referenced features and geometries in Clojure."
- clj-jts "Meridian clj-jts is a library for creating JTS (Java Topology Suite) geometry from Clojure. It allows for the creation of JTS instances from Clojure data structures and conversion of JTS instance to Clojure data structures."
Numerics
- Numerical Clojure Mailing list
- Clojure Numerics Github organization gathering a dozen or so libraries
- Clatrix "A stupid name for a smart matrix library, because who doesn't love smart matrices? Being implemented as a data type around the native BLAS hooks of jblas gives it speed. Being implemented as a Clojure sequence makes it clever."
- clojure-math "Incomplete bindings to Commons Math, EJML, and other math-related bits of code, to make up for the lack of NumPy and SciPy in Clojure."
Related
- GeoJSON "a format for encoding a variety of geographic data structures."
- Cartogram types "A cartogram is a type of graphic that depicts attributes of geographic objects as the object's area. Because a cartogram does not depict geographic space, but rather changes the size of objects depending on a certain attribute, a cartogram is not a true map."
Java
Geometry
AWT, Swing, etc. combine geometry and rendering. Strictly computational geometry:
- JTS Topology Suite "The JTS Topology Suite is an API of spatial predicates and functions for processing geometry." License: LGPL 2.1
- JavaGeom "The aim of JavaGeom is to provide methods to easily perform geometric computations, such as intersections of lines, clipping of polygons, transformation shapes, perimeter and area computations..." License: LGPL 2.1
- ESRI "The Esri Geometry API for Java enables developers to write custom applications for analysis of spatial data. This API is used in the Esri GIS Tools for Hadoop and other 3rd-party data processing solutions." License: Apache 2
- GeoLib "GeoLib is a fast, efficient, computational geometry library available in C++, C# and Java." License: GPL v3
Numerics
- Vectorz "Fast double-precision vector and matrix maths library for Java, supporting arbitrary n-dimensional numerical arrays. This library is designed for use in games, simulations, raytracers, machine learning etc. where fast vector maths is important." By the author of core.matrix.