Hello AsterixDB Dev Community,
I hope this message finds you well. I am excited to share a proposal aimed
at advancing our geometric processing capabilities in AsterixDB. The
proposal, identified with JIRA epic *ASTERIXDB-3412*, is targeted for the
9.10.0 release and involves transitioning from the current
com.esri.core.geometry.ogc.OGCGeometry to the Java Topology Suite (JTS)
library.
Key Motivations:
1. Enhanced Compatibility & Maintainability: Transitioning to JTS offers
a more robust support for geometric operations, allowing extensibility and
custom implementation over spatial functions.
2. Potential Performance Improvements: JTS is expected to provide not
only compatibility but also performance enhancements over the existing
geometry library.
Proposed Changes Include:
1. Comprehensive Research & Documentation of current OGCGeometry use
and dependencies.
2. Thorough Evaluation of JTS Library to ensure it meets our needs and
integrates well with the existing codebase.
3. Implementation and Testing across the codebase to ensure seamless
functionality and performance.
4. Updates and Revisions in Documentation to reflect the new changes.
5. Performance Benchmarking to confirm and enhance the benefits of JTS
integration.
Known Limitations and Considerations:
1. CRS and Dimensionality Support: Address JTS’s native limitations on
CRS and higher-dimensional (3d,4d) geometries through custom
implementations or additional libraries.
1. JTS does not consider or support CRS while doing geometric
operations. However, CRS is important to ensure precision and
correctness.
We may have to evaluate the integration of CRS functionalities through
libraries like GeoTools, minimizing dependencies while ensuring robust
support for varied CRS applications.
2. Issues with JTS while handling 3D or 4D geometry,
Does not have some function implementations for Z, eg. Finding min z
or max z coordinate in a given geometry. Solution - To implement this is
fairly easy. Other known documented issues in JTS w.r.t dimensions are
listed below,
https://github.com/locationtech/jts/issues/733
https://locationtech.github.io/jts/jts-faq.html#B4
2. Dependency Management: Carefully manage new dependencies to
prevent over-complexity in the system architecture.
We invite you to review the detailed proposal, provide your insights, and
discuss any potential impacts or improvements. Your feedback is invaluable
as we refine and move forward with this initiative.
Thank you for your continued support and collaboration.
Best,
Suryaa Charan