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

Reply via email to