[PROJ] Some (probably dumb) questions about cs2cs and projinfo

Even Rouault even.rouault at spatialys.com
Tue Feb 24 02:27:07 PST 2026


Andrea,

>
> So... in this case I wonder which operation is used by cs2cs: the 
> first one should not be usable because the grid shift file is not 
> available, whereas if the second one was used, I guess it should have 
> returned the same result as EPSG:23033 to EPSG:3065.

Not a dumb question at all. There's indeed a subtlety involved. cs2cs 
does internally the equivalent of projinfo "--grid-check 
discard_missing" if the PROJ_NETWORK=ON environment variable is not set. 
That is it won't bother consider grids that aren't available on the 
system. When "--grid-check discard_missing" is added , you'll see the 
following operation

""""

unknown id, Inverse of UTM zone 33N + ED50 to WGS 84 (1) + Inverse of 
ETRS89-ITA [IGM95] to WGS 84 (1) + UTM zone 33N, 11 m, unknown domain of 
validity

PROJ string:
+proj=pipeline
   +step +inv +proj=utm +zone=33 +ellps=intl
   +step +proj=push +v_3
   +step +proj=cart +ellps=intl
   +step +proj=helmert +x=-87 +y=-98 +z=-121
   +step +inv +proj=cart +ellps=GRS80
   +step +proj=pop +v_3
   +step +proj=utm +zone=33 +ellps=GRS80
"""

and that's the one used by cs2cs, as you can see when 
setting PROJ_DEBUG=2 (here's done the Bash way. On windows cmd, do "set 
PROJ_DEBUG=2" before)

$ echo 620000 4540000 | PROJ_DEBUG=2 bin/cs2cs EPSG:23033 EPSG:3065
pj_open_lib(proj.ini): call 
fopen(/home/even/proj/install-proj-master/share/proj/proj.ini) - succeeded
pj_open_lib(proj.db): call 
fopen(/home/even/proj/install-proj-master/share/proj/proj.db) - succeeded
pj_open_lib(35160622_47161840_E50_F89.gsb): call 
fopen(35160622_47161840_E50_F89.gsb) - failed
pj_open_lib(35160622_47161840_F89_F00.gsb): call 
fopen(35160622_47161840_F89_F00.gsb) - failed
pj_open_lib(35160622_47161840_E50_F00.gsb): call 
fopen(35160622_47161840_E50_F00.gsb) - failed
pj_open_lib(35160622_47161840_R40_F89.gsb): call 
fopen(35160622_47161840_R40_F89.gsb) - failed
pj_open_lib(35160622_47161840_R40_E50.gsb): call 
fopen(35160622_47161840_R40_E50.gsb) - failed
Using coordinate operation Inverse of UTM zone 33N + ED50 to WGS 84 (1) 
+ Inverse of ETRS89-ITA [IGM95] to WGS 84 (1) + UTM zone 33N
619926.95    4539810.94 0.00

So basically it goes through a WGS84 intermediate and uses a Helmert 
transformation that is an average for the whole ED50 datum (not 
optimized for Italy), following by a null geographic offset between 
WGS84 and IGM95.

Even

-- 
http://www.spatialys.com
My software is free, but my time generally not.



More information about the PROJ mailing list