[PROJ] Help needed for a cs2cs pipeline with shift grids

Even Rouault even.rouault at spatialys.com
Sun Feb 18 06:16:44 PST 2024


Nicolas,

I believe the Helmert transformation is used when using IGNF codes, 
because the IGNF database has only recorded the use of the ntf_r93 grid 
for NTF to RGF93, but not for NTF to ETRS89 (by the way, just 
reiterating that IGN is more than welcome to take over on maintenance & 
updates of the IGNF part of the PROJ database). And when transforming 
between 2 IGNF codes, PROJ by default will only consider transformations 
in the IGNF domain. But if you use EPSG codes, then ntf_r93 is available 
to transforme between NTF and ETRS89.

To get a vertical transformation, you also need to use 3D CRS.

For example

projinfo -s "NTF geographiques Paris (gr) + NGF-IGN69 height" -t 
IGNF:ETRS89LCC --3d --spatial-test intersects

reports the following pipeline:

unknown id, axis order change (2D) + NTF (Paris) to NTF (1) + NTF to 
RGF93 v1 (1) + Inverse of RGF93 v1 to NGF-IGN69 height (1) + RGF93 v1 to 
ETRS89 (1) + axis order change (geographic3D horizontal) + ETRS89 
LAMBERT CONFORMAL CONIC, 1.6 m, France - mainland onshore., at least one 
grid missing

PROJ string:
+proj=pipeline
   +step +proj=unitconvert +xy_in=grad +xy_out=rad
   +step +inv +proj=longlat +ellps=clrk80ign +pm=paris
   +step +proj=push +v_3
   +step +proj=cart +ellps=clrk80ign
   +step +proj=xyzgridshift +grids=fr_ign_gr3df97a.tif +grid_ref=output_crs
         +ellps=GRS80
   +step +inv +proj=cart +ellps=GRS80
   +step +proj=pop +v_3
   +step +proj=vgridshift +grids=fr_ign_RAF18.tif +multiplier=1
   +step +proj=lcc +lat_0=52 +lon_0=10 +lat_1=35 +lat_2=65 +x_0=4000000
         +y_0=2800000 +ellps=GRS80


Here, as there's a mix of objects from different authorities (IGNF and 
EPSG), then EPSG transformations are considered, hence you get the 
gr3df97a grid.

$ echo 0  56.000000 0  | PROJ_NETWORK=ON bin/cs2cs -d 3  "NTF 
geographiques Paris (gr) + NGF-IGN69 height" IGNF:ETRS89LCC --3d
3474789.997    2655359.291 43.644

which is the application of the above pipeline:

$ echo 0  56.000000 0  | PROJ_NETWORK=ON bin/cct -d 3 +proj=pipeline 
+step +proj=unitconvert +xy_in=grad +xy_out=rad +step +inv +proj=longlat 
+ellps=clrk80ign +pm=paris +step +proj=push +v_3 +step +proj=cart 
+ellps=clrk80ign +step +proj=xyzgridshift +grids=fr_ign_gr3df97a.tif 
+grid_ref=output_crs +ellps=GRS80 +step +inv +proj=cart +ellps=GRS80 
+step +proj=pop +v_3 +step +proj=vgridshift +grids=fr_ign_RAF18.tif 
+multiplier=1 +step +proj=lcc +lat_0=52 +lon_0=10 +lat_1=35 +lat_2=65 
+x_0=4000000 +y_0=2800000 +ellps=GRS80

If you want to get exactly the below pipeline, you'll have to tweak 
proj.db to create a compound CRS for "NTF geographiques Paris (gr) + 
NGF-IGN69 height", and then create a custom record in 
other_transformation for the transformation between this compound CRS 
and (a 3D projected CRS derived from) IGNF:ETRS89LCC. Cf 
data/sql/other_transformation_custom.sql for potential inspiration

Even


Le 15/02/2024 à 19:46, Nicolas Bellaiche via PROJ a écrit :
> Hi there,
>
> I try to make a conversion using shiftgrids from IGNF: NTFP to 
> IGNF:ETRS89LCC. By default, it seems that it uses the helmert 
> approximation between the 2 crs and i cannot figure out how to use the 
> grid fr_ign_ntf_r93.
>
> So far i've found how to create a pipeline that works with cct, but 
> i'd like to have a code that represents the crs and be able to go to 
> different destination crs with the cs2cs application. Any idea?
>
> (helmert approx + no geoid with the standard codes)
>
> echo 0 560 | ./cs2cs+ from IGNF:NTFP+to IGNF:ETRS89LCC
>
> result  : 3474788.212655358.23 0.00
>
>
> (correct pipeline)
>
> echo 0 56.000000 0  | PROJ_DEBUG=3  ./cct    +proj=pipeline +step 
> +proj=unitconvert +xy_in=grad +xy_out=rad +step +inv +proj=longlat 
> +ellps=clrk80ign +pm=paris  +step +proj=hgridshift 
> +grids=fr_ign_ntf_r93.tif +step +inv +proj=vgridshift  
> +grids=RAF09.gtx  +step +proj=lcc +lat_0=52 +lon_0=10 +lat_1=35 
> +lat_2=65 +x_0=4000000 +y_0=2800000 +ellps=GRS80
>
>
> result : 3474789.9972 2655359.2908 43.6421 inf
>
>
> reference from THE official IGN/SGN dataset:
>
> 3474789.9972655359.29143.642
>
>
>
> Thanks a lot for your help,
>
>
> Nicolas Bellaiche
>
>
>
> _______________________________________________
> PROJ mailing list
> PROJ at lists.osgeo.org
> https://lists.osgeo.org/mailman/listinfo/proj

-- 
http://www.spatialys.com
My software is free, but my time generally not.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osgeo.org/pipermail/proj/attachments/20240218/5ade0a08/attachment-0001.htm>


More information about the PROJ mailing list