3

Can anyone show me how I can construct a PROJ or WKT2 string with affine transformation parameters to create a custom CRS in QGIS? I wish to use the following affine transformation parameters to convert UTM28N-WGS84 coordinates to a local coordinate system: Translation x-axis: 592643.28732299805 Translation y-axis: -1507351.9635620117 Rotation around z-axis (degrees counter clockwise): 50.0636222

I have used these parameters to successfully transform a vector file using QGIS 'Vector geometry>Affine transformation' tool but I would like to define a custom CRS using these parameters.

rsf69
  • 101
  • 5
  • I'm no expert but this might help: https://gis.stackexchange.com/questions/298992/how-to-create-proj4-definition-of-local-coordinatesystem – Leigh Bettenay Feb 19 '21 at 00:10

1 Answers1

1

Thanks Leigh.

If anyone else is stuck with a similar problem, I finally got it working with the WKT2 string shown below.

I got the affine transformation parameters from a MapInfo PRJ definition of the custom projection (just the cosine and sine of the custom grid's rotation angle, scaling values and the x and y offsets), then added a DERIVINGCONVERSION section to UTM28N's WKT string and put the affine transformation parameters into the DERIVINGCONVERSION parameters A0,A1,A2,B0,B1,B2.

Mapinfo PRJ: "CustomLocalGrid", 1008, 104,7, -15, 0, 0.9996, 500000, 0, 7, 0.641936585016, -0.766761053354, 592643.28732299805, 0.766757541511, 0.641937852139, -1507351.9635620117

DERIVEDPROJCRS["CustomLocalGrid", BASEPROJCRS["WGS 84 / UTM zone 28N", BASEGEOGCRS["WGS 84", DATUM["World Geodetic System 1984", ELLIPSOID["WGS 84",6378137,298.257223563, LENGTHUNIT["metre",1]]], PRIMEM["Greenwich",0, ANGLEUNIT["degree",0.0174532925199433]], ID["EPSG",4326]], CONVERSION["UTM zone 28N", METHOD["Transverse Mercator", ID["EPSG",9807]], PARAMETER["Latitude of natural origin",0, ANGLEUNIT["degree",0.0174532925199433], ID["EPSG",8801]], PARAMETER["Longitude of natural origin",-15, 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",592643.2873, LENGTHUNIT["metre",1], ID["EPSG",8623]], PARAMETER["A1",0.6419365850161, SCALEUNIT["coefficient",1], ID["EPSG",8624]], PARAMETER["A2",-0.766761053354, SCALEUNIT["coefficient",1], ID["EPSG",8625]], PARAMETER["B0",-1507351.96356201, LENGTHUNIT["metre",1], ID["EPSG",8639]], PARAMETER["B1",0.766757541511, SCALEUNIT["coefficient",1], ID["EPSG",8640]], PARAMETER["B2",0.641937852139, 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]], USAGE[ SCOPE["unknown"], AREA["World - N hemisphere - 18°W to 12°W - by country"], BBOX[0,-18,84,-12]] ]

rsf69
  • 101
  • 5
  • I asked a similar question (https://gis.stackexchange.com/questions/288232/create-custom-non-north-rotated-srid) and the answer is using oblique mercator. It works well but it take a bit of fiddling to get the false easting/northings to work out the way you want them to. – Phillip Allen Feb 19 '21 at 15:53