I spend a few days reading about coordinate systems, map projections, datums, etc. Since I am new to gis, I am not confident I am doing this right.
Problem at hand:
I have a GPS device that gives me GPS coordinates corresponding with the WGS84 datum. That is nice but what I actually want is to have the coordinates in a local (x,y,z) coordinate system with z being the height.
I want to measure distances in an area of about 10x10km. Also I want to pick my own local origin. So I can say the corner of building A at ground level is (0,0,0) and the first floor of building B on the top of the hill is like (5km, 6km, 150m).
I want to be accurate on sub-cm level. The error should be 1cm or less.
Also I want to do the conversion between GPS and local coordinates by myself, in my own code. So I have to understand the underlying mathematics.
As far as I understand I would need a conformal projection? Like Mercator or transverse mercator. Web-mercator is apparently a no-no because it's not conformal. A secant projection (instead of tangent) would minimise the deviation in z (height)?
UTM is widely used it seems. But that is for area's much larger than mine, so I maybe I can do better than using a standard UTM zone?
In any case, UTM or a more localised TM projection or something else entirely, I am not sure which workflow and formulas to use. Some are relatively straightforward, some are rather long like these. In the latter case I also don't see how these were derived/obtained.
Then there is the issue of geodetic and geocentric coordinates. WGS84 (lat, long) is geodetic, but the (x,y,z) are geocentric. Not to mention the issues around height.
The websites I found thus far are either an online converter or a shallow introduction into map projections. Shallow as in little to no math or derivations of formulas.
Can you help?