[R] code to convert 3D geographical coordinates to Cartesian?

Tom Roche Tom_Roche at pobox.com
Mon Dec 31 03:49:45 CET 2012


Is there packaged code to convert geographical coordinates (e.g.,
longitude, latitude, elevation) to Cartesian coordinates in 3-space?
I can see how to do this using

1. a spherical-to-Cartesian conversion like pracma::sph2cart(tpr) 

http://cran.r-project.org/web/packages/pracma/

2. a geographical-to-spherical conversion. This seems to involve (in
   roughly increasing order of difficulty or error-prone-ness)

* converting longitude (units=°) to an azimuthal angle (units=rad)

* converting latitude (units=°) to a polar angle (aka inclination)
  (units=rad)

* converting elevation (usually, distance above mean sea level) to
  radial distance (i.e., distance from earth center). Ideally this
  should be done using a user-chosen coordinate reference system and
  ellipsoid/geoid (i.e., PROJ.4-style), hence my hope that some package
  (of which I'm currently unaware) has already coded this The Right Way.
  For now, for the atmospheric model with which I need to work, I
  believe I can just assume a spherical earth with r=6370 km, and just
  add that to the elevation.

3. composition of the two (e.g., sph2cart(geo2sph(lat.lon.elev))),
   noting that package=pracma uses the mathematics convention that
   azimuth=Θ and polar angle=φ (vs the reverse physics convention).

Net: the task seems straightforward enough, but there's certainly scope
for error, so I'd prefer to use tested, well-used code if available.
Am I missing something?

TIA, Tom Roche <Tom_Roche at pobox.com>



More information about the R-help mailing list