A comparison of Apache SIS and Proj.4 has been posted in two blob posts:
one on performance aspects [1] and one on accuracy aspects [2]. We have
not been able to perform an extensive comparison yet, but more tests may
happen in 2018. In the meantime, below is a summary of some points:
* Proj.4 is generally faster than Apache SIS on Java 8, apparently
because trigonometric functions are slower in Java 8.
* Some (but not all) trigonometric functions are much faster in Java
9, but we have not yet benchmarked SIS on Java 9.
* Despite above handicap, Apache SIS is sometime faster than Proj.4
(400 times faster in an extreme case). This can be explained by more
extensive use of mathematical equivalences and runtime detection of
simplifications in Apache SIS.
* Apache SIS and Proj.4 are in close agreement for all tested
coordinate conversions (this category include map projections) on Earth.
* Apache SIS and Proj.4 are sometime in disagreement by 1 or 2 meters
for coordinate transformations (this category include datum shifts).
o In the two cases were a disagreement is observed, Apache SIS is
conform to the parameters specified by the EPSG geodetic dataset.
o In one case, Proj.4 results are wrong by 0.9 ± 0.4 meter. This
is not a bug that could be easily fixed, but a Proj.4
architectural issue ("early-binding" versus "late-binding"
approaches). More details are given in the blog post.
o In the other case, one can argue that Proj.4 is not wrong
provided that the difference between Apache SIS and Proj.4
results are smaller than the stochastic errors associated to the
tested transformations. Apache SIS provides this information,
but not Proj.4. This lack of information makes difficult to
determine if the difference is acceptable or not.
* For Cylindrical Equal Area ("cea") projection on Jupiter (tested
because it is a more flattened planet than Earth):
o If Jupiter had the size of Earth (for easier distance
comparison), average Proj.4 error would be 90 meters.
o Apache SIS does not have this error; it keeps centimetric precision.
Those errors are not significant to everyone. But we need a way to tell
user if the library is delivering the accuracy that (s)he need, or if
(s)he got the operation for the right geographic area. Apache SIS
provides this information, notably through ISO 19162 (WKT 2) formatting.
This support is not yet widespread in other open source libraries.
Martin
[1]
https://www.geomatys.com/wordpress/index.php/2017/08/28/english-proj-4-versus-apache-sis-a-performance-comparison/?lang=en
[2]
https://www.geomatys.com/wordpress/index.php/2017/09/20/proj-4-versus-apache-sis-an-accuracy-comparison/?lang=en