Skip to main content

Requirements

  • aiohttp >= 2.1.0

  • aioredis >= 0.3.1

  • dateutils >= 0.6.6

  • pyaml >= 16.12.2

  • pyephem >= 3.7.6.0

  • tqdm >= 4.14.0

  • ujson >= 1.35

Extra

  • redis

Installing

pip install iss-positioner

Getting started

Start aiohttp application:

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import logging
import os

from aiohttp.web import run_app

from iss_positioner import ISSPositionerService, util, LOG_FORMAT

DIR = os.path.join(os.path.dirname(__file__))
CFG = util.load_cfg(path=os.path.join(DIR, 'iss-positioner.yml'))

if __name__ == '__main__':
    logging.basicConfig(level=logging.DEBUG, format=LOG_FORMAT)
    app = ISSPositionerService(config=CFG)
    run_app(app, port=80)

Usage examples

With using httpie package

Subsat point for date and time:

$ http POST iss-positioner.nkoshelev.tech/coords dt='2017-07-01 17:20:23'
 HTTP/1.1 200 OK
 Content-Length: 133
 Content-Type: application/json; charset=utf-8
 Date: Sat, 10 Jun 2017 22:36:34 GMT
 Server: Python/3.6 aiohttp/2.1.0

 {
     "data": [
         {
             "coords": {
                 "latitude": 29.1957281567,
                 "longitude": -60.4502132535
             },
             "dt": "2017-07-01 17:20:23"
         }
     ],
     "error": false,
     "error_msg": null
 }

Subsat points for date and time range:

$ http POST iss-positioner.nkoshelev.tech/coords start_dt='2017-07-01 17:20:23' end_dt='2017-07-02 00:30:12' step:=3600
HTTP/1.1 200 OK
Content-Length: 590
Content-Type: application/json; charset=utf-8
Date: Sat, 10 Jun 2017 22:36:06 GMT
Server: Python/3.6 aiohttp/2.1.0

{
    "data": [
        {
            "coords": {
                "latitude": -45.0957399616,
                "longitude": 83.1269171834
            },
            "dt": "2017-07-01 18:00:00"
        },
        {
            "coords": {
                "latitude": 8.7403712481,
                "longitude": -66.4947965741
            },
            "dt": "2017-07-01 19:00:00"
        },
        {
            "coords": {
                "latitude": 31.6325051557,
                "longitude": 134.4496509433
            },
            "dt": "2017-07-01 20:00:00"
        },
        {
            "coords": {
                "latitude": -51.320569018,
                "longitude": 8.3954402804
            },
            "dt": "2017-07-01 21:00:00"
        },
        {
            "coords": {
                "latitude": 24.0613209347,
                "longitude": -125.9571602941
            },
            "dt": "2017-07-01 22:00:00"
        },
        {
            "coords": {
                "latitude": 16.9217895882,
                "longitude": 73.4462991357
            },
            "dt": "2017-07-01 23:00:00"
        }
    ],
    "error": false,
    "error_msg": null
}

Find subsat points in radius:

$ http POST iss-positioner.nkoshelev.tech/radius start_dt="2017-06-24 17:20:23" end_dt="2017-06-26 03:30:12" lon:=45.35 lat:=40.31 dist:=155 sun_angle:='{"$between": [1, 90]}'
HTTP/1.1 200 OK
Content-Length: 5233
Content-Type: application/json; charset=utf-8
Date: Mon, 19 Jun 2017 00:32:45 GMT
Server: Python/3.6 aiohttp/2.1.0

{
    "data": {
        "2017-06-25": [
            {
                "coords": [
                    {
                        "coord": {
                            "latitude": 41.6560980011,
                            "longitude": 45.040654242
                        },
                        "dist": 151.9575,
                        "dt": "2017-06-25 11:33:25",
                        "geohash": 3612189142451081,
                        "units": "km"
                    },
                    {
                        "coord": {
                            "latitude": 41.620011176,
                            "longitude": 45.1084819436
                        },
                        "dist": 147.1127,
                        "dt": "2017-06-25 11:33:26",
                        "geohash": 3612189381935032,
                        "units": "km"
                    },
                    ...
                    {
                        "coord": {
                            "latitude": 40.5169486871,
                            "longitude": 47.1061268449
                        },
                        "dist": 150.4877,
                        "dt": "2017-06-25 11:33:56",
                        "geohash": 3612067477243933,
                        "units": "km"
                    }
                ],
                "end": {
                    "coord": {
                        "latitude": 40.5169486871,
                        "longitude": 47.1061268449
                    },
                    "dist": 150.4877,
                    "dt": "2017-06-25 11:33:56",
                    "geohash": 3612067477243933,
                    "units": "km"
                },
                "start": {
                    "coord": {
                        "latitude": 41.6560980011,
                        "longitude": 45.040654242
                    },
                    "dist": 151.9575,
                    "dt": "2017-06-25 11:33:25",
                    "geohash": 3612189142451081,
                    "units": "km"
                },
                "sun_angle": 53.0876931352,
                "title": [
                    45.35,
                    40.31
                ],
                "traverse": {
                    "coord": {
                        "latitude": 41.073352933,
                        "longitude": 46.116220057
                    },
                    "dist": 106.697,
                    "dt": "2017-06-25 11:33:41",
                    "geohash": 3612029254672552,
                    "units": "km"
                }
            }
        ]
    },
    "error": false,
    "error_msg": null
}

Find subsat points in radius for few objects:

$ http POST iss-positioner.nkoshelev.tech/radius start_dt="2017-06-24 17:20:23" end_dt="2017-06-26 03:30:12" objects:='[{"title": "Baku", "lat": 40.46, "lon": 49.83}, {"title": "Ozero Baikal", "lon": 107.75, "lat": 53.216}]' dist:=155 sun_angle:='{"$between": [1, 90]}'
HTTP/1.1 200 OK
Content-Length: 10241
Content-Type: application/json; charset=utf-8
Date: Mon, 19 Jun 2017 00:41:49 GMT
Server: Python/3.6 aiohttp/2.1.0

{
    "data": {
        "2017-06-25": [
            {
                "coords": [
                    {
                        "coord": {
                            "latitude": 39.3338549124,
                            "longitude": 48.8792225718
                        },
                        "dist": 149.2349,
                        "dt": "2017-06-25 05:05:32",
                        "geohash": 3611733843357722,
                        "units": "km"
                    },
                    ...
                    {
                        "coord": {
                            "latitude": 40.8865059627,
                            "longitude": 51.5298727155
                        },
                        "dist": 151.0384,
                        "dt": "2017-06-25 05:06:13",
                        "geohash": 3614217228560593,
                        "units": "km"
                    }
                ],
                "end": {
                    "coord": {
                        "latitude": 40.8865059627,
                        "longitude": 51.5298727155
                    },
                    "dist": 151.0384,
                    "dt": "2017-06-25 05:06:13",
                    "geohash": 3614217228560593,
                    "units": "km"
                },
                "start": {
                    "coord": {
                        "latitude": 39.3338549124,
                        "longitude": 48.8792225718
                    },
                    "dist": 149.2349,
                    "dt": "2017-06-25 05:05:32",
                    "geohash": 3611733843357722,
                    "units": "km"
                },
                "sun_angle": 41.9252071823,
                "title": "Baku",
                "traverse": {
                    "coord": {
                        "latitude": 40.0998146954,
                        "longitude": 50.1561203599
                    },
                    "dist": 48.6902,
                    "dt": "2017-06-25 05:05:52",
                    "geohash": 3612624174040669,
                    "units": "km"
                }
            },
            {
                "coords": [
                    {
                        "coord": {
                            "latitude": 39.8750128105,
                            "longitude": 48.2068732381
                        },
                        "dist": 152.528,
                        "dt": "2017-06-25 11:34:13",
                        "geohash": 3612454092213748,
                        "units": "km"
                    },
                    ...
                    {
                        "coord": {
                            "latitude": 39.1050050778,
                            "longitude": 49.4737878442
                        },
                        "dist": 153.7554,
                        "dt": "2017-06-25 11:34:33",
                        "geohash": 3611782396693308,
                        "units": "km"
                    }
                ],
                "end": {
                    "coord": {
                        "latitude": 39.1050050778,
                        "longitude": 49.4737878442
                    },
                    "dist": 153.7554,
                    "dt": "2017-06-25 11:34:33",
                    "geohash": 3611782396693308,
                    "units": "km"
                },
                "start": {
                    "coord": {
                        "latitude": 39.8750128105,
                        "longitude": 48.2068732381
                    },
                    "dist": 152.528,
                    "dt": "2017-06-25 11:34:13",
                    "geohash": 3612454092213748,
                    "units": "km"
                },
                "sun_angle": 51.3293668014,
                "title": "Baku",
                "traverse": {
                    "coord": {
                        "latitude": 39.4919632142,
                        "longitude": 48.8440749049
                    },
                    "dist": 136.5807,
                    "dt": "2017-06-25 11:34:23",
                    "geohash": 3611732186127579,
                    "units": "km"
                }
            }
        ]
    },
    "error": false,
    "error_msg": null
}

>From LST file:

$ http -f POST iss-positioner.nkoshelev.tech/lst start_dt='2017-06-21 17:20:23' end_dt='2017-06-25 03:30:12' dist=155 sun_angle='{"$between":[60, 90]}' lst@uragan.lst
HTTP/1.1 200 OK
Content-Length: 2773
Content-Type: application/json; charset=utf-8
Date: Sun, 18 Jun 2017 23:18:07 GMT
Server: Python/3.6 aiohttp/2.1.0

{
    "data": {
        "2017-06-22": [
            {
                "coords": [
                    {
                        "coord": {
                            "latitude": 46.3698428995,
                            "longitude": 42.7196744084
                        },
                        "dist": 153.2124,
                        "dt": "2017-06-22 07:42:05",
                        "geohash": 3707104453628981,
                        "units": "km"
                    },
                    ...
                    {
                        "coord": {
                            "latitude": 46.7598274929,
                            "longitude": 43.8530954719
                        },
                        "dist": 153.8867,
                        "dt": "2017-06-22 07:42:19",
                        "geohash": 3707422748292802,
                        "units": "km"
                    }
                ],
                "end": {
                    "coord": {
                        "latitude": 46.7598274929,
                        "longitude": 43.8530954719
                    },
                    "dist": 153.8867,
                    "dt": "2017-06-22 07:42:19",
                    "geohash": 3707422748292802,
                    "units": "km"
                },
                "start": {
                    "coord": {
                        "latitude": 46.3698428995,
                        "longitude": 42.7196744084
                    },
                    "dist": 153.2124,
                    "dt": "2017-06-22 07:42:05",
                    "geohash": 3707104453628981,
                    "units": "km"
                },
                "sun_angle": 61.0532714812,
                "title": "Cimlandskoe vodohran",
                "traverse": {
                    "coord": {
                        "latitude": 46.5663851782,
                        "longitude": 43.2842418551
                    },
                    "dist": 145.685,
                    "dt": "2017-06-22 07:42:12",
                    "geohash": 3707321610769135,
                    "units": "km"
                }
            }
        ]
    },
    "error": false,
    "error_msg": null
}

NikitaKoshelev-MacBook-Pro:responses nkoshelev$

Source code

The latest developer version is available in a github repository: https://github.com/nkoshell/iss-positioner

Metadata

Release files for iss-positioner 1.0.6

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for iss-positioner 1.0.6
File Size Uploaded
iss-positioner-1.0.6.tar.gz 20.7 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for iss-positioner 1.0.6
File Interpreter ABI Platform
iss_positioner-1.0.6-py3-none-any.whl Python 3 none any Details

Total release size: 42.9 kB

Release files / iss-positioner-1.0.6.tar.gz

Download URL iss-positioner-1.0.6.tar.gz
Size 20.7 kB
Tags Source
SHA-256 checksum
How to use checksums
3ed11abb7914685974a6193cf0f00e4d642feff9783863be65cfb8744b379b0a
BLAKE2b-256 checksum
How to use checksums
478ce54596f93518978a3bd4e16089f1f579e24796b8dcbc35a7a3713d439703
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Release files / iss_positioner-1.0.6-py3-none-any.whl

Download URL iss_positioner-1.0.6-py3-none-any.whl
Size 22.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
bfd47027c18eabe48bd68b4f7437cc171cea23cbdb83782370a8f3328404ceeb
BLAKE2b-256 checksum
How to use checksums
9fa4973b3bc4ee1bc8a3c176a4631a307ab558f2a47c4713835abdff6a108644
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Release history Release notifications | RSS feed

This release

1.0.6 This release

2 release files

1.0.5

2 release files

1.0.4

2 release files

1.0.3

2 release files

1.0.2

2 release files

1.0.1

2 release files

1.0.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page