[Proj] Re: Local cartesian to UTM using PROJ.4

Greg Troxel gdt at ir.bbn.com
Wed May 16 08:25:38 EDT 2007

```Frode Tennebø <frode at tennebo.com> writes:

> Greg Troxel <gdt <at> ir.bbn.com> writes:
>> Frode Tennebø <frode <at> tennebo.com> writes:
>>
> I'm not familiar with the US state plane, but from your description this is
> more like the trivial example below.

Each state is different.  There are many projections, but most are TM or
Lambert Conformal Conic.  Mass (mainland zone) is LCC
(http://www.mass.gov/mgis/dd-over.htm if you want to see the details).

>> is this a translation of an ECEF system?  I think it would be helpful
>> for you to be far more precise about what you are doing.
>
> I had hoped I was quite precise.  :)

Rereading, I think I follow, and it was inappropriate for me to say
"far more precise" - I apologize for overreacting.

> When I said local cartesian, I meant that
> in the strictes sense.  I have an origin in UTM (ENA) and a position vector
> relative to that origin in meters (XYZ) where Y is grid north (INS delivered -
> I just got a bit uncertain if the INS actually delivers true north, I'll have
> to re-check that, but for the sake of this argument it's grid north).  I assume
> by "along the ellipsoid" you mean along the projected north, hence grid north?

I think that you mean that both X (east) and Y (in the direction of UTM
grid north) are both in the plane that's tangent to the ellipsoid, with
Z being the normal to the ellipsoid.  So for small X, Y, you could just
add the UTM values of the origin.  The key difference from UTM is that
it's truly cartesian from there instead of projected.

> So, for a trivial example:  Origin is UTM/WGS84 (500000, 6000000, 10) position
> vector is (1000, 2000, 100) (1000 meters east, 2000 north and 100 up) ->
> UTM/WGS84 (501000, 6002000, 110).  Not factoring in scaling.

I don't think this is the right answer.  By moving out (1000,2000) in
your system, you move in the plane that's tangent to the ellipsoid at
the origin.  So your elevation will be more than 100m.  Granted this
will be small at a few km distance, but consider 1000 km.

My coordinate system only extended a maximum of 100m or so from the
origin, and I ignored all this, equating subtracting UTM of a point from
UTM of origin (really MA SPC) with measurements from total station which
really was local cartesian.  This is wrong, but is the standard plane
surveying assumption.

To solve your problem, I think you could take the UTM values, transform
to ECEF, and then apply translation/rotation, move in your space, and
then untranslate/rotate and convert back.  Surely proj can convert
geodetic to ECEF, but I don't see it in 'proj -lp'.  These two messages