SpaceView shows the routes space probes took through the Solar System – and what they saw on the way! It uses JPL's HORIZONS service to plot spacecraft trajectories (both Voyagers in the proof-of-concept created during SpaceApps). Linked to each point are images taken by the spacecraft on that day, from PDS. We created a Python wrapper for HORIZONS' telnet text query system to extract spacecraft coordinates for any date. Further Python scripts harvested image links for the Javascript interface.

This project is solving the Revitalize the PDS challenge.


spaceview app

In creating SpaceView we aimed to provide a simple way to present the many fantastic images sent back by the fleet of space probes sent to explore our Solar System which are available through PDS, while providing some context about the mission itself.

Taking inspiration from Google StreetView, we came up with the idea of showing the routes (trajectories) of the spacecraft through the Solar System, and associating each point on the trajectory with the images captured at that time by the spacecraft. Due to the time limitations of the SpaceApps Challenge, we settled on a proof-of-concept showing the trajectories of just the two Voyager missions, however our vision is for the app to be ultimately extended to all the spacecraft for which data is stored in PDS.

To accomplish our aims, we needed to collect data on the spacecraft positions as a function of time, in other words the ephemeris. Fortunately the JPL HORIZONS ephemeris calculation service can be queried for just such data. Unfortunately, the available interfaces are: a CGI-based webpage, an e-mail interface, and a telnet-based text query interface, the last of which is the most powerful. None really lend themselves to direct use by an interactive web application. To solve this problem we created a Python 3 wrapper, py-NASA-horizons, which uses the telnet interface to generate XYZ coordinates for any Solar System object (e.g. a spacecraft) for any given date. (The interface can be easily extended to extract any available data.) In our proof-of-concept application the ephemeris data is stored in a JSON table within the app, however it could just as easily be retrieved dynamically.

Further Python scripts (spaceappsdatahacks) were used to extract lists of links to Voyager images stored in PDS, together with the time, date and object target name. In the proof-of-concept these are also stored in a table, however again could be generated dynamically (a problem to be solved is that the image data for each mission is stored in directory trees with different structures and naming conventions). For the Voyager data in the proof-of-concept, only processed, geometrically-corrected images of actual objects are displayed – calibration images (“darks”) and unprocessed images are ignored by the Python harvesting scripts. Finally the trajectories and images are displayed in 2D, projected onto a model Solar System with the orbits of the planets (also from PDS data), by a Javascript app which allows selecting points on the trajectory with mouse or keyboard (arrow keys).

Project Information

License: MIT License
Source Code/Project URL:


py-NASA-horizon -
spaceappsdatahacks -