You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I propose that we introduce a new set of unified coordinate conversion routines for translating between geodetic, spherical, ellipsoidal-harmonic and cartesian coordinates. These would partially replace those that exist, and would introduce a more uniform logic for Boule. All coordinate transformations would require knowledge of the ellipsoid parameters and are hence appropriate for this project.
geodetic, spherical, and ellipsoidal-harmonic conversions
These routines would convert between "latitude" and "height" above the ellipsoid. Latitude would be geodetic, spherical or reduced (for ellipsoidal-harmonic coordinates). Height would be geodetic height (ellipsoidal height) or spherical height (height above the ellipsoid along the radius vector direction). Ellipsoidal-harmonic coordinate don't use a height, but instead use "u", which is the ellipsoid semiminor axis that passes through the point.
None of these routines require longitude, as the longitude is the same for all coordinate systems:
One could potentially simplify these routines by considering the height as an optional parameter with a default of zero, and the parameter u as an optional parameter with a default of semiminor_axis.
Cartesian conversions
Conversion to and from cartesian coordinates require knowledge of the longitude.
x, y, z = geodetic_to_cartesian(longitude, latitude, height)
x, y, z = spherical_to_cartesian(longitude, spherical_latitude, spherical_height)
x, y, z = ellipsoidal_harmonic_to_cartesian(longitude, reduced_latitude, u)
longitude, latitude, height = cartesian_to_geodetic(x, y, z)
longitude, spherical_latitude, spherical_height = cartesian_to_spherical(x, y, z)
longtidue, reduced_latitude, u = cartesian_to_ellipsoidal_harmonic(x, y, z)
To simplify these functions, one could consider the height and u parameters as optional.
At the present time, there is no easy way to convert from geodetic to spherical latitude, which is probably the most commonly used conversion. This was because you needed to input the latitude and radius, and radius needed to be computed by another function. What is proposed here rectifies this problem.
Even if some of these functions could be implemented in pymap3d instead of here, pymap3d does not have all of the ellipsoids that we have. This would complicate any such conversion. Furthermore, as far as i can tell, pymap3d doesn't really implement the above routines when height above the ellipsoid is non-zero.
This would be a breaking change.
Are you willing to help implement and maintain this feature?
Yes, but I am not sure when I will get around to it. Help (even for just 1 of the above) would be appreciated!
The text was updated successfully, but these errors were encountered:
I propose that we introduce a new set of unified coordinate conversion routines for translating between geodetic, spherical, ellipsoidal-harmonic and cartesian coordinates. These would partially replace those that exist, and would introduce a more uniform logic for Boule. All coordinate transformations would require knowledge of the ellipsoid parameters and are hence appropriate for this project.
geodetic, spherical, and ellipsoidal-harmonic conversions
These routines would convert between "latitude" and "height" above the ellipsoid. Latitude would be geodetic, spherical or reduced (for ellipsoidal-harmonic coordinates). Height would be geodetic height (ellipsoidal height) or spherical height (height above the ellipsoid along the radius vector direction). Ellipsoidal-harmonic coordinate don't use a height, but instead use "u", which is the ellipsoid semiminor axis that passes through the point.
None of these routines require longitude, as the longitude is the same for all coordinate systems:
One could potentially simplify these routines by considering the height as an optional parameter with a default of zero, and the parameter u as an optional parameter with a default of semiminor_axis.
Cartesian conversions
Conversion to and from cartesian coordinates require knowledge of the longitude.
To simplify these functions, one could consider the height and u parameters as optional.
Comments
Are you willing to help implement and maintain this feature?
Yes, but I am not sure when I will get around to it. Help (even for just 1 of the above) would be appreciated!
The text was updated successfully, but these errors were encountered: