[PROJ] PROJ 6.1.0RC1

Even Rouault even.rouault at spatialys.com
Mon May 6 11:02:48 PDT 2019


...OK, I didn't realize that the failures where not necessarily at the end of the log file...

1) So one failure is:
""""
Test:   01 Texel
Exec:   cs2cs EPSG:4937 +to EPSG:28992+5709 -f %.4f
Input:  53.160753042 4.824761912 42.8614

Output: 117380.1203	575040.3399 0.9985
Expect: 117380.1200	575040.3400 1.0000
NAP exceeds 0.001 meters: 0.00149999999999995
Test FAILED: From ETRS89 to RD/NAP - 01 Texel
"""

I will save you the details and headaches, but the gist of the issue was that the vertical transformation
and horizontal transformation where applied in the wrong order.
There were 2 separate causes:
- the EPSG dataset doesn't register the interpolationCRS for "ETRS89 to NAP height (1)" vertical transformation (naptrans2008.gtx).
  According to the PDF you provided, this must be the Amersfoort datum. As this information is missing, the code assumes that
  the horizontal CRS to use for vertical transformation is ETRS89.
- The code didn't take properly into account the interpolationCRS for such geog3D <--> compoundCRS transformations

I've addressed both issues by the followup commit
https://github.com/OSGeo/proj.4/pull/1454/commits/ae16cff6877a39903cd049491fbb1d96a4149a96
of
https://github.com/OSGeo/proj.4/pull/1454

With that I now get

echo "53.160753042 4.824761912 42.8614" | PROJ_LIB=$PWD:data src/cs2cs -f %.15f EPSG:4937 +to EPSG:7415
117380.120258881375776	575040.339879254694097 1.000069467784584

(instead of the custom compoundCRS "EPSG:28992+5709", you can equivalently use the registered compoundCRS of the EPSG database "EPSG:7415")

2) For
"""
Test:   07 No_rd&geoid
Exec:   cs2cs EPSG:28992+5709 +to EPSG:4937 -f %.9f
Input:  100000.6700 300000.8900

Output: 50.687420379	4.608971888 0.000000000
Expect: 50.687420405	4.608971812
Latitude exceeds 1e-08 degrees: 2.59999950458223e-08
Longitude exceeds 1e-08 degrees: 7.60000000710193e-08
Test FAILED: From RD/NAP to ETRS89 - 07 No_rd&geoid (Expected output overriden: *	* ^-?(\d+\.\d+|inf)$)
"""

PROJ will indeed detect that the point is outside of the RD grid, and then it will use
the EPSG:15739 "Amersfoort to ETRS89 (3)" Helmert-based transformation. 

$ echo "100000.6700 300000.8900 0" | src/cct -d 9 +proj=pipeline +step +inv +proj=sterea +lat_0=52.1561605555556 +lon_0=5.38763888888889 +k=0.9999079 +x_0=155000 +y_0=463000 +ellps=bessel +step +proj=push +v_3 +step +proj=cart +ellps=bessel +step +proj=helmert +x=565.2369 +y=50.0087 +z=465.658 +rx=0.406857330322398 +ry=-0.350732676542563 +rz=1.8703473836068 +s=4.0812 +convention=coordinate_frame +step +inv +proj=cart +ellps=GRS80 +step +proj=pop +v_3 +step +proj=unitconvert +xy_in=rad +xy_out=deg +step +proj=axisswap +order=2,1
 50.687420379    4.608971888   0.000000000           inf

I'm not sure how they get their expected result. It should be noted that proj 5.2.0 fails to transform in that case:
$ echo "100000.6700 300000.8900" |  ~/proj/install-proj-5.2.0/bin/cs2cs -f %.15f +init=rdnap:rdnap +to +init=epsg:4258 
Rel. 5.2.0, September 15th, 2018
<cs2cs>: while processing file: <stdin>, line 1
pj_transform(): point not within available datum shift grids
*	* inf

Even

-- 
Spatialys - Geospatial professional services
http://www.spatialys.com


More information about the PROJ mailing list