I have using Mathematica functions that takes a Cartesian coordinate relative to the Earth (xyz) and converts it to a latitude, longitude, and altitude (lla). And here it is:
xyz2lla = First@GeoPosition@GeoPositionXYZ[#, "WGS84"] &
I'm using it to convert a satellite viewing line (line of sight or los) from xyz to lla. For instance, if I have a satellite at the following observation point (obs, meters) looking in the direction of look:
obs = {2.560453600382259, 5.245110323032143, -3.819772142191310} 1*^6;
look = {-0.233218833096895, -0.814561997858160, -0.531128729720249};
It has the line of sight:
obs+d look
The transformation xyz2lla is smooth, so I was hoping to use function interpolation:
f = FunctionInterpolation[{xyz2lla[obs + # look]} &[d],
{d, 2000000, 3700000}
]
And while this works, and I get the following lat, lon, alt functions from it:
:


I also get the following errors that I'm wondering why I get:
GeoPositionXYZ::invcoord: "\!\(\"{2.560453600382259*^6 - 0.233218833096895*d, 5.245110323032143*^6 - 0.81456199785816*d, -3.81977214219131*^6 - 0.531128729720249*d}\"\) is not a valid coordinate specification."
Thread::tdlen: Objects of unequal length in {-212500.,-70833.3,70833.3,212500.}^{} cannot be combined. >>
Thread::tdlen: "Objects of unequal length in {12.2667 +3.14159\ I,11.1681 +3.14159\ I,11.1681,12.2667}\ {}\\n cannot be combined."
FunctionInterpolation::nreal: Near d = 2.2125`*^6, the function did not evaluate to a real number.
Does anyone have any insight into these errors?
Also, how can I adjust the quality of the interpolation / how many points are investigated?


