# QGIS transformation local coordinate system to UTM35

I am creating a geo database for an archaeological excavation. We want to put data from a local system and from UTM35 in the same QGIS-project. I have Ground Control Points and I calculated transformation parameters with it. Translation of the X- and Y-Axis, Scale factor and Rotation angle (4 parameters 2D Helmert Transformation). The parameters can transform from the local system to UTM.

``````scale factor: 0.99960
rotation angle: 1.3002 degrees
Translation East : 522372.842 m
Translation North: 4151845.829 m
``````

I setted the project to UTM35(EPSG 32635) and now want to create a custom coordinate reference system so that every layer in the local system could be converted on the fly to UTM35.

How can I do that?

• a) Why don't you try? b) Both definitions are identical.
– Erik
Feb 4, 2021 at 15:07
• Must define a derived from UTM35 CRS. Compute the parameters to go from UTM35 to the local system. Use the Affine parametric transformation (EPSG:9624), it include rotations and scales in A1, A2, B1, B2 coefficients. I don't know if QGIS is being friendly with the derived from projected CRSes. If not, just convert the layers to UTM35. See: gis.stackexchange.com/a/366641/133276 Feb 4, 2021 at 17:54
• Why can't I use Helmert? In other Software, my Transformation parameters deliver perfect results. Feb 5, 2021 at 16:02
• I tried a new way to solve the problem. First, I transformed the ground control points from both systems (UTM35 and the local) to ECEF WGS84 cartesian (using pyproj). As the local projection I just used Cassini. Second, I calculated the 7 Helmert-Parameter with the code of De Luca. So the parameters are a transformation between different ellipsoids. Now I want to create the custom coordinate reference system, telling QGIS that it`s the cassini projection but it also needs to do the transformation to the right ellipsoid. Do you know how to start? Apr 1, 2021 at 14:12
• The way of Gabriel de Luca works. Thank you. Apr 5, 2021 at 11:24

Ignoring my own calculated parameters and using this answer as example, the solution for the custom coordinate system is (it works):

``````DERIVEDPROJCRS["Historic site grid",
BASEPROJCRS["WGS84 / UTM zone 35N",
BASEGEOGCRS["WGS 84",
DATUM["World Geodetic System 1984",
ELLIPSOID["WGS 84",6378137,298.257223563,
LENGTHUNIT["metre",1]]],
PRIMEM["Greenwich",0,
ANGLEUNIT["degree",0.0174532925199433]]],
CONVERSION["UTM zone 35N",
METHOD["Transverse Mercator",
ID["EPSG",9807]],
PARAMETER["Latitude of natural origin",0,
ANGLEUNIT["degree",0.0174532925199433],
ID["EPSG",8801]],
PARAMETER["Longitude of natural origin",27,
ANGLEUNIT["degree",0.0174532925199433],
ID["EPSG",8802]],
PARAMETER["Scale factor at natural origin",0.9996,
SCALEUNIT["unity",1],
ID["EPSG",8805]],
PARAMETER["False easting",500000,
LENGTHUNIT["metre",1],
ID["EPSG",8806]],
PARAMETER["False northing",0,
LENGTHUNIT["metre",1],
ID["EPSG",8807]]]],
DERIVINGCONVERSION["Affine",
METHOD["Affine parametric transformation",
ID["EPSG",9624]],
PARAMETER["A0",-428175.08,
LENGTHUNIT["metre",1],
ID["EPSG",8623]],
PARAMETER["A1",1.00014473897784,
SCALEUNIT["coefficient",1],
ID["EPSG",8624]],
PARAMETER["A2",-0.0227063743705598,
SCALEUNIT["coefficient",1],
ID["EPSG",8625]],
PARAMETER["B0",-4164307.973,
LENGTHUNIT["metre",1],
ID["EPSG",8639]],
PARAMETER["B1",0.0227063743705598,
SCALEUNIT["coefficient",1],
ID["EPSG",8640]],
PARAMETER["B2",1.00014473897784,
SCALEUNIT["coefficient",1],
ID["EPSG",8641]]],
CS[Cartesian,2],
AXIS["(E)",east,
ORDER[1],
LENGTHUNIT["metre",1]],
AXIS["(N)",north,
ORDER[2],
LENGTHUNIT["metre",1]]]
``````