[Proj] Pipeline +init files, inverse

Kristian Evers kreve at sdfe.dk
Wed Feb 21 13:35:15 PST 2018


Steve,

> On 21 Feb 2018, at 22:18, stevejking <stevejking at talktalk.net> wrote:
> 
> Is it possible to use a +init pipeline file in reverse?
> 

Yes. Well, mostly anyway. As long as a reverse path through pipeline exists. Some projections are only defined in the
forward direction, but that is not a problem for you here.

Below I assume you init-file is called “transforms”. You have several options:

1. Do an inverse transformation with cct:

	cct -i +init=transforms:7709-3D

2. Reverse the pipeline by using a global +inv flag:

<7709-3D>   +proj=pipeline +inv \
                     +step +proj=tmerc +lat_0=49 +lon_0=-2 +k=0.9996012717+x_0=400000 +y_0=-100000 +ellps=airy +inv \                     
                     +step +proj=vgridshift +grids=OSGM15_GTX_OSGBtoGRS80.gtx +inv \
                     +step +proj=hgridshift +grids=OSTN15_NTv2_OSGBtoETRS.gsb

Note the “+inv” in the first line. Any parameters specified AFTER proj=pipeline and BEFORE the first +step are global
and are added internally to each individual step in the pipeline. This is often useful for ellipsoid specification for instance.
If you +inv a step that is already +inv’ed you effectively get a double-negation which is just the forward operation. This
works for any number of +inv’s. An odd number of +inv’s results in a reverse step, and even number results in a forward
step.

3. Create a reverse entry that self-references the init-file:

<7709-3D_reverse>  +proj=pipeline +step +init=transforms:7709-3D +inv

You probably just want to go with the first option, but depending on your use case 2 and 3 can be useful as well.

/Kristian

> For example, with some explanation from Kristian, I now have two
> transformations:
> 
> # OSGB1936 to ETRS89(2)
> <7709-3D>                  -t0 +proj=pipeline \
>                      +step +proj=tmerc +lat_0=49 +lon_0=-2 +k=0.9996012717
> +x_0=400000 +y_0=-100000 +ellps=airy +inv \                     
>                      +step +proj=vgridshift
> +grids=OSGM15_GTX_OSGBtoGRS80.gtx +inv \
>                      +step +proj=hgridshift
> +grids=OSTN15_NTv2_OSGBtoETRS.gsb
> 
> # ETRS89 to OSGB1936
> <7709-3D-Reverse>     -t0 +proj=pipeline \                    
>                      +step +proj=hgridshift
> +grids=OSTN15_NTv2_OSGBtoETRS.gsb +inv \ 
>                      +step +proj=vgridshift
> +grids=OSGM15_GTX_OSGBtoGRS80.gtx \ 
>                      +step +proj=tmerc +lat_0=49 +lon_0=-2 +k=0.9996012717
> +x_0=400000 +y_0=-100000 +ellps=airy
> 
> 
> The only difference between the two is the reverse order and swapping the
> +inv and 'no inv blanks' on the end of each line. I'm wondering if I need
> two separate transformations?
> 
> If not is it a sensible future development? +init=<...> +reverse ?
> 
> Steve
> 
> 
> 
> --
> Sent from: http://osgeo-org.1560.x6.nabble.com/PROJ-4-f3840930.html
> _______________________________________________
> Proj mailing list
> Proj at lists.maptools.org
> http://lists.maptools.org/mailman/listinfo/proj



More information about the Proj mailing list