The OpenGIS module defines a set of interfaces aligned with the ISO 19107 Geometry Specification.
Before we get distracted in details here is the section of ISO 19107 we actually use. You will see these classes in a casual use of GeoTools.
That is it - just three of them:
While they follow roughly the same idea as JTS, the follow things through in three stages. There is a lot of noise in the above diagram as “helpful” interfaces have been defined to isolate common qualities.
Here is an example of the types defined around Geometry, see if you can spot Point, Curve and Surface mentioned above.
Here is an example of the selection available when defining a curve.
These interfaces are many, varied, and well documented. The problem is they are not useful.
They are complex (in comparison to the Simple Feature Specification used by JTS)
The two implementations are unsupported modules
You should only include one on your CLASSPATH at any point in time.
Q: I want to work in 3D?
I am afraid we cannot be much help at this time, you are welcome to pick up one of the unsupported modules above. We welcome volunteers.
Q: I need to represent Curves?
Have a look at our JTS utility class, there are methods that help you define a JTS LineString based on a curve formula.
Q: Which implementation should I use?
Neither - unless you have a direct need for these implementations (because you are limiting your project to ISO19107 only interfaces) they are not recommended.
Q: How do I use ISO Geometry
Check out the documentation for the unsupported Geometry Plugin. There is a nice series of source code examples.