[GIS] How to construct (or select) an appropriate local Cartesian coordinate system, for an arbitrary small area

coordinate systemgeotools

I'm relatively inexperienced with coordinate reference systems, so please bear with me if I'm not putting this clearly.

I have existing software which works with an abstract (un-referenced) 3D coordinate system. That is, everything has X,Y,Z coordinates in meters, but those coordinates are not defined relative to any absolute location.

I want users to be able to "attach" this coordinate system to the real world by saying "the (local) origin corresponds to point FOO in the real world." Here FOO is specified in any well-known coordinate reference system (probably EPSG:3785, but I'll allow anything Geotools can recognize), and the orientation is fixed. I then want to have well-defined translations between a relative coordinate (X,Y,Z) and the corresponding absolute location (e.g. Y meters North of FOO, X meters East of FOO, Z meters above FOO).

What I think I want, in order to make this happen, is to (a) pick or create an appropriate Cartesian coordinate system for the area around FOO, and then (b) do the simple affine transformation between my internal coordinate system and the geo-referenced one.

All the advice I've seen so far says "use a local projection for small areas, or something like WGS for large areas," but I don't know what the right local projection is in advance, because FOO could be anywhere. Can I either reasonably (1) look-up a standard, accepted projection for that location, or (2) define a good new projection for that point?

I'm working in Geotools, but I'm perfectly happy with a general conceptual answer. Thanks!

Best Answer

I suggest to use an oblique mercator projection as I explained in Using customized Coordinate System in ArcGIS Desktop?

You have to define the origin in lon and lat WGS84 degrees, and the rotation against true north.

Related Question