Early steps. I just re-discovered the gpsd GPS daemon running on my server from a long time ago...which I wound up not using then. One of the interesting values returned by a GPS device is the azimuth and elevation of the satellites it is listening to. I can use JMP's socket connection to the gpsd port to get those values (where before I used a Python script that wrote a file on the server that I later copied to JMP.) But to render something like this, I need a model of the Earth and GPS satellites...which is this post. Run the attached JSL; it makes a 3D model you can rotate with the mouse. This picture is static, but shows the relative size of the Earth and distance to a GPS satellite orbit.
20,200 KM above surface, 26,600 KM radius. Two complete orbits each sidereal day.
Normally the SimpleEarth bitmap is displayed in a flat graph:
Example of SimpleEarth from the Air Traffic.JMP sample
But the bitmap is also available (in a low res form) as eight tiles. The JSL assembles those tiles into a single bitmap and resizes them to an even lower resolution (for performance) and builds the sphere model from a set of four-sided polygons with different color pixels at each corner. The 3D engine shows the polygons smoothly shaded, and with a smooth lighting effect. With 1-degree polygons, there are only 360x180 == 64,800 polygons and the performance is still pretty good. Creating the model does take about 10 seconds, but the JSL keeps the model in a reusable display list. Quite a bit of the JSL was borrowed and modified from two of the 3D samples in JMP: MaterialAndLight.jsl and Sheet.jsl. Look for them in the Samples/Scripts/Scene3D directory.
Also, @jlsalmon has a similar idea, using points rather than shaded polygons.