# How do I construct (or select) an appropriate local Cartesian coordinate system, for an arbitrary small area?

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!

• Just to clarify: 1) Do you already have a set of points whose coordinates are known in some local arbitrary cartesian system? 2) How many of these same points have known positions within a standard (well-known) coordinate system? 3) What sort of calculations (beyond simple display) do you expect to do with the transformed coordinates? – Martin F May 22 '14 at 23:16
• Here's what I actually did. It's basically an implementation of Andre's answer. The Z dimension is a little sketchy: Local 0 is defined as a user-supplied ellipsoid height. The odds of a user supplying a reasonable value are near-zero, but this is just a first stab at it. gist.github.com/ewa/6e3f0f627669244c4663 – Eric Anderson May 23 '14 at 18:31

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.

• Thanks, I'm doing that and it works! I have a follow-on question (and this is likely Geotools/GeoAPI specific): The associated projection operations all seem to want a 2D Cartesian "derived" coordinate system and produce a 2D CRS. Is there a clean way to extend this to 3D? – Eric Anderson May 22 '14 at 19:11
• 3D gets rather complicated, because ellipsoid and geoid height (heigt above sea level) differ in most places, see en.wikipedia.org/wiki/Geoid – AndreJ May 23 '14 at 6:41
• So, I asked a follow-up question here in case you have any suggestions. Right now my goal for the 2d-to-3d transformation is just filling in the height with a user-supplied ellipsoid height, but if I can make it work for any definition at all, that'll make me happy. – Eric Anderson May 27 '14 at 15:48

General conceptual answer: One suggestion might be to use a national state projection polygon layer to determine the "only" or a selection of the best local projections.
The other option would be UTM zones. But essential run a point in polygon test to return the crs.
You don't mention but I am reading into you savvy question that you know you would need to determine rotation and scale after you get beginning point to accomplish the affine.

If the abstract contained plss information you may begin to think about tying to local, state or national control and referencing that back to the plss. but state control would be quite a feat to pull into one process, local would be nearly impossible.
(worth mention)
Some municipalities and even counties require local control/monumentation maintenance and creation as part of development procedure. Where this occurs you "could" have the very best case accuracy for your process. "But" finding that and using that would be problematic.