# Answers to the PROJ tutorial exercises¶

## Projections1: UTM¶

```1.      +proj=utm +zone=35
2.      +proj=utm +zone=60 +south
3.      +proj=utm +zone=35 +ellps=intl
```

## Projections2: LCC¶

```1.      +proj=lcc +lat_1=59.8
2.      +proj=lcc +lat_1=59.8   +k_0=0.99998
3.      +proj=lcc +lat_1=59.437 +lat_2=60.171
4.      +proj=lcc +lat_1=59.8   +lat_0=59.8   +lon_0=24.8
5.      +proj=lcc +lat_1=59.8   +lat_0=59.8   +lon_0=24.8  +x_0=1000000 +y_0=1000000
```

## Ellipsoids¶

```1.      +R=1
2.      +ellps=intl
3.      +a=6378388.0 +rf=297.0
4.      +a=6378206.4 +b=6356583.8
```

## Helmert¶

```1.      +proj=helmert +x=-97 +y=-103 +z=-120
2.      +proj=helmert +x=-81.1 +y=-89.4 +z=-115.8 +rx=0.485 +ry=0.024 +rz=0.413 +s=-0.54 +convention=position_vector
3a.     +proj=helmert +x=582 +y=105 +z=414 +rx=-1.04 +ry=-0.35 +rz=3.08 +s=8.3
3b.     +proj=helmert +x=582 +y=105 +z=414 +rx=1.04 +ry=0.35 +rz=-3.08 +s=8.3
1.      +proj=helmert   +convention=position_vector +x=-0.0016  +y=-0.0019  +z=-0.0024 +s=2e-05 +dz=0.0001 +ds=-3e-05 +t_epoch=2010
```

## Conversions¶

```1.      +proj=unitconvert +xy_in=m  +xy_out=us-ft
2.      +proj=axisswap +order=2,1
3.      +proj=cart +ellps=intl
```

## Gridshifts¶

```1.      +proj=hgridshift +grids=de_adv_BETA2007.tif
2.      +proj=vgridshift +grids=us_nga_egm96_15.tif
```

## Pipelines¶

```1.      +proj=pipeline +ellps=GRS80
+step +proj=cart
+step +proj=helmert +x=100 +y=200 +z=300 +convention=position_vector
+step +inv +proj=cart

2.      +proj=pipeline
+step +proj=vgridshift +grids=us_nga_egm96_15.tif

2.1:    In principle, yes - practically, no.
2.2:    Which grids is applied first depends on how the systems are defined.
If a geoid model is fitted to a certain datum, you need to make sure that
the input to the vgridshift operation is in that datum. That is your
responsibility to check - PROJ can't figure that out on its own. In this
case, the EGM96 geoid is fitted to WGS84. The BETA2007 grid results in
ETRS89 coordinates which for all but the most high accuracy application
can be regarded as equivalent to WGS84. Hence we do the horizontal grid
shift first.

3.      +proj=pipeline
+step +inv +proj=utm +zone=32
+step +proj=cart +ellps=intl
+step +proj=helmert +x=-81.1 +y=-89.4 +z=-115.8
+rx=0.485 +ry=0.024 +rz=0.413 +s=-0.54 +convention=position_vector
+step +inv +proj=cart +ellps=GRS80
+step +proj=utm +zone=33

4.      +proj=pipeline
+step +proj=axisswap +order=2,1
+step +proj=unitconvert +xy_in=deg +xy_out=rad
+step +proj=push +v_3 +step +proj=cart +ellps=bessel
+step +proj=helmert +x=598.1 +y=73.7 +z=418.2
+rx=0.202 +ry=0.045 +rz=-2.455 +s=6.7 +convention=position_vector
+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

4.1:    Latitude (deg), longitude (deg), height (m)
4.2:    Latitude (deg), longitude (deg), height (m)
4.3:    Retain the original height of the input coordinate:
Without the push/pop steps the height would be affected by
the Helmert step.
```

## Projections3: Tranverse Mercator¶

```1.      +proj=tmerc
2.      +proj=tmerc +k_0=0.9996 +lon_0=27 +x_0=500000
3a.     1 cm
3b.     250 km
3c.     100 km
3d.      10 km
3e.     500  m
3f.       2  m
3g.       5 um
```