Hello Martin and Jia

Le 22/12/2022 à 08:25, Jia Yu a écrit :

Martin Andersson 's suggestion makes sense to me. If Apache SIS decides to provide Java 8 support in the long run, we can try to replace GeoTools CRS transformation with Apache SIS.

It would be possible to backport SIS 1.4+ in a Java 8 branch. We did something similar for Java 7 some years ago, so we have experience in this process. But it is a significant effort (a few thousands lines of code have changed after SIS 1.3 release candidate for taking advantage of Java 11 methods in Math, NIO, Arrays, collections, TIFF tags, etc). In order to evaluate if a Java 8 branch is worth, it may be desirable to first test "Sedona on SIS" in a branch somewhere and see if it is considered satisfying.

A little bit of context regarding GeoTools versus Apache SIS: from 2002 to 2009 I was the main author of GeoTools metadata, referencing and base grid coverage classes excluding I/O (so GeoTIFF is an independent work). Apache SIS metadata, referencing and grid coverage modules are continuation of the work I started in GeoTools with bug fixes, improvements and upgrades to newer ISO/OGC standards (e.g. GML and ISO 19162, a.k.a. "WKT 2"). Apache SIS has been used as a source of inspiration for a major upgrade of the PROJ library [1].

Performance is one aspect, but accuracy is another important aspect. A video from IOGP (creator of EPSG dataset) explains how a few tens of centimeters error has cost them millions of dollars [2]. Not every projects need high confidence, but some groups such as OSDU (Open Subsurface Data Universe) require software to pass the GIGS tests (Geospatial Integrity of Geoscience Software) [3] before to care about performance. Apache SIS does not yet pass the full GIGS test suite or implement all features shown in IOGP video, but we are working on that in collaboration with peoples from GIGS and OGC working group.

Nevertheless Apache SIS and GeoTools performance of referencing services should be similar since their code have the same roots. SIS got improvements, but I did not measured their performance impact. But anyway, performance depends a lot about how a library is used. The accuracy mentioned in previous paragraph is not always needed, so we should allow users to control the performance/accuracy tradeoff (still a work in progress in SIS). Furthermore, transforming points is easy but transforming geometries or rasters involve additional complexities. SIS has some features such as Jacobian matrix which, when put in the hands of a mathematically skilled developer, allows nice optimizations. This is used by SIS for envelope and raster transformations.

In summary, if there is an interest, creating a "Sedona on SIS" branch may take some time. The result would need to be evaluated before to decide in there is a desire to put more effort, e.g. in a SIS Java 8 branch.

    Regards,

        Martin

[1]https://gdalbarn.com/  — search "SIS" on that page.
[2]https://www.youtube.com/watch?v=IKM-bR6SwVs
[3]https://gigs.iogp.org/

Reply via email to