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