Installing on Linux (Ubuntu 19.10)

Get the SAA DLLs

You must be a US citizen to lawfully download the SAA DLLs.

Go to space-track.org, make an account, then go to the sgp4 download page and download the appropriate package for your operating system. For me, this is SGP4_small_V7.9_LINUX64.tar.gz. You should also download the windows package, SGP4_small_V7.9_WIN64.zip, because the Windows package provides driver examples not present in the Linux version.

Verify the Python3 Environment

Check your Python3 version and make sure you are running at 3.7.5 or greater.

$ python3 -V
Python 3.7.5

Check your ctypes version and make sure you are running 1.1.0 or greater.

$ python3 -c "import ctypes; print(ctypes.__version__)"
1.1.0

Clone the dshsaa repository

Clone the dshsaa repository to your working environment.

$ cd ~
$ git clone https://github.com/hardingprofessional/dshsaa.git

You should now have a folder called dshsaa on your current path.

Place the DLL/SO files in the libdll directory

Untar your copy of SGP4_small_V7.9_LINUX64.tar.gz. Navigate to SGP4_small_V7.9_LINUX64.tar.gz/Lib and copy all of the contents to ~/dshsaa/dshsaa/libdll/.

Install dependencies with pip3

If you don’t have pip installed, install it.

$ sudo apt update
$ sudo apt install python3-pip
$ sudo apt install python3-venv

Establish a virtual environment.

$ cd ~/dshsaa
$ python3 -m venv virtenv

You should now have a folder at ~/dshsaa/virtenv. Next, activate the virtual environment and install dependencies.

$ source virtenv/bin/activate
$ pip3 install --upgrade pip
$ pip3 install -r requirements.txt

Sourcing virtenv/bin/activate fundamentally alters the python environment in the shell, and those changes will persist until the user executes the shell function deactivate. Your $PS1 shell prompt should indicate this by prepending (virtenv) to itself.

Set path and run tests

Add the libdll to LD_LIBRARY_PATH. This must be done any time the dshsaa module is used.

$ cd ~/dshsaa
$ source source_env

Run the full test battery

$ ./runtest

The end of the output should look similar to this:

...
test_TleUpdateSatFrFieldsSP (raw.test_tledll.TestTleDll) ... ok
testl_TleFieldsToSatKey (raw.test_tledll.TestTleDll) ... ok
testl_TleFieldsToSatKeyML (raw.test_tledll.TestTleDll) ... skipped 'Segmentation fault, matlab'

----------------------------------------------------------------------
Ran 155 tests in 0.014s

OK (skipped=14)

Test ability to build the documentation

Build the documentation with sphinx.

$ cd ~/dshsaa/sphinx
$ ./rebuild

Open the documentation by pointing your browser at ~/dshsaa/sphinx/_build/html/index.html.

Startup Notes

Any time you run the module, you should do so from ~/dshsaa and you must source source_env. If you develop a program that uses this module, you should manually integrate the DLLs/SOs into your operating system and the python modules into your project.

Any time you build the docs, you must do so from ~/dshsaa/sphinx using the ./rebuild script.

I am investigating ways to fix these path dependencies.

Run dshsaa/example.py to make sure it works. Use this code as a reference until the sphinx documentation is improved.