[GIS] Custom Coordinate System

coordinate system

We have a number of custom local coordinate systems at work.

I'm trying to create a well known text coordinate system for each of them however I'm stuck on how to define these systems they .

Some variables i'm aware of. centre of latitude longitdue -27 22 27.1954, 153 10 46.5722 (lat,long) GDA94 Zone56 centre 517760.037, 6972102.441 (E,N).

We set this coordinate to 3800.192,3129.572 then rotate the file about it by -57.975833 and scale it by 1.000400336 (this is a cad move rotate scale operation not a re-projection as such)

The only thing I've come close to getting a similar result has been a stereographic coordinate system … but this scales in all directions? We require a cylinder type operation as our area of work is more rectangular and it will give greater accuracy along the centre of work. Can anyone help me define a WKT coordinate system for my proect?

updated wkt code … im not sure on how to define the rest of the coordinate system help?

FITTED_CS["FIG",
      PARAM_MT["Affine", 
               PARAMETER["elt_0_0", 3800.192],
                                 PARAMETER["elt_0_1", 3129.572],
                                 PARAMETER["elt_1_0", -0.53027691844514246],
                                 PARAMETER["elt_1_1", 0.84782450410702548],
                                 PARAMETER["elt_2_0", 0.84782450410702548],
                                 PARAMETER["elt_2_1", 0.53027691844514246]
                                 <need long lat of swing point somewhere?>
              ],

what is exported from my software …

PROJCS["FIG",
 GEOGCS["FIG",
  DATUM["D_EPSG:6283",
     SPHEROID["EPSG_7019",6378137,298.257222096042]
    ],
    PRIMEM["Greenwich",0],
    UNIT["Degree",0.017453292519943295]
 ],
 PROJECTION["CSMAP:54"],
 PARAMETER["Central_Meridian",0],
 PARAMETER["Latitude_Of_Origin",-27.3742209444444],
 PARAMETER["Scale_Factor",1.000400336],
 PARAMETER["False_Easting",0],
 PARAMETER["False_Northing",0],
 PARAMETER["A0",3800.192],
 PARAMETER["A1",-0.53027691844514246],
 PARAMETER["A2",0.84782450410702548],
 PARAMETER["B0",3129.572],
 PARAMETER["B1",0.84782450410702548],
 PARAMETER["B2",0.53027691844514246],
 UNIT["Meter",1]
]

Best Answer

I'm not a master of how coordinate systems are defined. However, your "move rotate scale" constitute what's known as an affine transform, and you can describe these in WKT using a a "FITTED_CS" coordinate system and a PARAM_MT["Affine", ...] for the affine matrix parameters.

The documentation is too sparse and my time too short to figure it all out, but if I understand what you want, the result will look sort of like:

FITTED_CS["Some sort of name here",
          PARAM_MT["Affine", 
                   PARAMETER["num_row",3]
                   <... rest of affine trans here ...>
                  ],
          <The underlying GDA Zone56 spatial reference WKT goes here...>
         ]

I believe -- the documentation sucks! (or I suck at turning it up!) -- that the affine transformation is represented by a homogenous matrix, as described here: http://en.wikipedia.org/wiki/Transformation_matrix#Affine_transformations

The values in the matrix would then be given by something like: ("elt_X_Y" being the pattern. Or maybe it's "elt_Y_X.")

PARAMETER["elt_0_0", 10.0],
PARAMETER["elt_0_1", 0.0]

It's a Simple Matter Of Math to go from your description ("move here, scale this much, rotate by x") to a matrix -- each step can be turned into a matrix of its own, then you can derive a matrix that represents all steps at once by multiplying them together. Note that you want the transformation from work coordinates to the underlying coordinate system, not the other way around.

Possibly this was helpful in your quest. Hopefully someone can point at better documentation.

A final caveat!: I've no idea how well supported FITTED_CS actually is by GIS software. It's in the standard, however! ;)

Related Question