-
Notifications
You must be signed in to change notification settings - Fork 802
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Cassini-Soldner easting difference #3432
Labels
Comments
rouault
added a commit
to rouault/PROJ
that referenced
this issue
Nov 4, 2022
…iterative generic inversion to make GIGS 5108 roundtripping tests succeed The error on the sign after "nu * A * (1. - A2 * T * (C1 ...") dates back to PROJ origins. All other independent implementations (Apache SIS cf /~https://github.com/apache/sis/blob/a04bd4b29816c91fc4dfc66135b8de5e962933a0/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/projection/CassiniSoldner.java, CSMAP cf /~https://github.com/normanb/CS-Map/blob/1d8f2db7f13194a99dc218d4cd91754c64a2a774/Source/CS_csini.c) use the same formulas as EPSG guidance note which is consistent with Snyder's Map projections - A working manual). So align on them, so that everyone is consistent (and hopefully right). While doing it, I've modified the inverse method to use the generic inversion method to improve its accuracy, which make it possible to enable the 5108.gie tests that were previously failing on the 1000 iterations roundtripping.
rouault
added a commit
to rouault/PROJ
that referenced
this issue
Nov 4, 2022
…iterative generic inversion to make GIGS 5108 roundtripping tests succeed The error on the sign after "nu * A * (1. - A2 * T * (C1 ...") dates back to PROJ origins. All other independent implementations (Apache SIS cf /~https://github.com/apache/sis/blob/a04bd4b29816c91fc4dfc66135b8de5e962933a0/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/projection/CassiniSoldner.java, CSMAP cf /~https://github.com/normanb/CS-Map/blob/1d8f2db7f13194a99dc218d4cd91754c64a2a774/Source/CS_csini.c) use the same formulas as EPSG guidance note which is consistent with Snyder's Map projections - A working manual). So align on them, so that everyone is consistent (and hopefully right). While doing it, I've modified the inverse method to use the generic inversion method to improve its accuracy, which make it possible to enable the 5108.gie tests that were previously failing on the 1000 iterations roundtripping.
totally agree with your diagnostic (good spotting!). Fix in #3433 |
rouault
added a commit
to rouault/PROJ
that referenced
this issue
Nov 4, 2022
…iterative generic inversion to make GIGS 5108 roundtripping tests succeed The error on the sign after "nu * A * (1. - A2 * T * (C1 ...") dates back to PROJ origins. All other independent implementations (Apache SIS cf /~https://github.com/apache/sis/blob/a04bd4b29816c91fc4dfc66135b8de5e962933a0/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/projection/CassiniSoldner.java, CSMAP cf /~https://github.com/normanb/CS-Map/blob/1d8f2db7f13194a99dc218d4cd91754c64a2a774/Source/CS_csini.c) use the same formulas as EPSG guidance note which is consistent with Snyder's Map projections - A working manual). So align on them, so that everyone is consistent (and hopefully right). While doing it, I've modified the inverse method to use the generic inversion method to improve its accuracy, which make it possible to enable the 5108.gie tests that were previously failing on the 1000 iterations roundtripping.
rouault
added a commit
that referenced
this issue
Nov 7, 2022
cass: fix forward computation of easting (fixes #3432), …
github-actions bot
pushed a commit
that referenced
this issue
Nov 7, 2022
cass: fix forward computation of easting (fixes #3432), …
rouault
added a commit
that referenced
this issue
Nov 8, 2022
[Backport 9.1] cass: fix forward computation of easting (fixes #3432), …
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Hello,
While stress testing our forward Cassini-Soldner projection, implemented from EPSG documentation and not dependend on PROJ, I notice an increasing difference between PROJ's easting output and ours, with increasing longitudal distance.
The only other software I know that allows me to configure an arbitrary Cassini-Soldner independently of PROJ and project arbitrary coordinates is SurvCE, which yields the same results as our software.
I can recreate PROJ's results by adapting line 45 and 46 in cass.cpp to build with our source code:
Optimizing EPSG's expression for calculating E (which appears to be the same as Snyder's 13-7) to match PROJ's implementation, i notice a different sign after C1:
Test results
cs2cs -I -f "%.5f" +proj=cass +lat_0=57 +lon_0=18 +x_0=0 +y_0=0 +ellps=GRS80
Should the sign in cass.cpp be flipped?
Best regards,
Erik
Environment Information
9.1.0
)Installation method
The text was updated successfully, but these errors were encountered: