Hi,
I recognized that Apache SIS 0.8 produces different transformation results if I 
compare them with 0.7.

You can find at GitHub a sample program which verifies the transformation 
between WGS84 and another EPSG code.
https://github.com/shruda/sis-examples/blob/master/ApacheSisTest


  *   CrsResult - 
https://github.com/shruda/sis-examples/blob/master/ApacheSisTest/src/test/java/org/apache/sis/CrsResult.java

The static main method of CrsResults can be used to generated a new 
results.json.



It iterates over all EPSG codes and generates 16 different WGS84 coordinates 
based on the GeographicBoundingBox of the CRS.

In addition it tries to transforms the WGS84 coordinates to the EPSG 
definition. The CrsResult's of an EPSG code will be serialized to results.json 
if all transformations were correct.


  *   TransformVerificationTest - 
https://github.com/shruda/sis-examples/blob/master/ApacheSisTest/src/test/java/org/apache/sis/TransformVerificationTest.java

This JUnit test verifies that the transformation in both directions (from WGS84 
and back to WGS84) works as expected by considering a predefined accuracy.

The expected accuracy in case of projected coordinate systems is 1e-2f metre 
and in case of geographic coordinate systems is 1 metre.

I know my code must/can be improved ... because I use the same delta for both 
transformations...

In the end the test adds the EPSG code to a "successful.json" if the 
transformation doesn't throws an exception and meets my accuracy.


The goal of this test is, the verification of Apache SIS. I want determine if 
an update of the framework causes changed at the transformation results.
If a new version of Apache SIS will be released, then I execute the test again 
the old results. If the changes are explainable, then I will replace the old 
results.json with a new version of the results.json and the lastsuccessful.json 
with the latest successful.json.

So, now to some counts - Please note, that I always used the non-free sis-epsg 
package:

Apache SIS 0.7:
I was able to add 4695 of 5343 EPSG codes to the successful.json. Version 0.7 
produced consistent transformation results for all of them by considering by 
"quality-criteria".
Yes, it's clear for me that such a test is not meaningful because I use the 
same system for the verification but I was also able to generated roughly the 
same transformation results for 4666 EPSG codes by using proj4 in combination 
with the BursaWolfParameters which where picked out by Apache SIS from the EPSG 
database.

Apache SIS 0.8:
If I use no the results.json and lastsuccessful.json from Version 0.7 and 
execute the same test with Version 0.8, then I get:

  *   37 errors e.g. because of "NoSuchIdentifierExceptions"
  *   And 278 Failures e.g. if I try to transform the wgs84 position 
lat=50.562000000000005 lon=-57.68 to EPSG:2009, then X has a difference of 3 
meter and Y about 200 metre.

Apache SIS 0.7: [362898.07866302336, 5602902.724452476]
Apache SIS 0.8: [362895.4984923999, 5603136.138981682]

epsg.io means that the result of 0.7 is correct:
https://epsg.io/transform#s_srs=4326&t_srs=2009&x=-57.6800000&y=50.5620000


The master branch of my Git Repository uses Apache SIS 0.7:
https://github.com/shruda/sis-examples/tree/master/ApacheSisTest

I did the upgrade to Apache SIS 0.8 at:
https://github.com/shruda/sis-examples/tree/0.8/ApacheSisTest


I didn't found any hints at the release notes and JIRA which helps me to 
identify the issue.
Has anyone an idea?

Best Regards,
Steve

Reply via email to