GithubHelp home page GithubHelp logo

sebsebmc / starlink-coverage Goto Github PK

View Code? Open in Web Editor NEW
64.0 64.0 15.0 10.1 MB

Calculating some statistics about Starlink satellites

Python 51.78% HTML 45.47% CSS 2.04% Shell 0.71%
cesiumjs h3 skyfield starlink

starlink-coverage's People

Contributors

sebsebmc avatar uber5001 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

starlink-coverage's Issues

Coverage within range of ground station

Due to the initial phase of satellites not communicating between satellites, yet... In order to send and receive data from a user terminal, the satellite that your user terminal communicates with must also see a ground station at the same time. Therefore, what is the coverage pattern of the satellites, while being able to contact a ground station and the target grid section at the same time? A checkbox perhaps, enable ground station data coverage?

Minimum Earth Station Elevation

As you note in README.md, the minimum elevation angle on the initial 1,584-satellite shell has been approved by the FCC at 25%, moving to 40% once the entire 4,409-satellite system is built out. See https://licensing.fcc.gov/myibfs/download.do?attachment_key=1877671. This modification (SAT-MOD-20190830-00087) was approved on December 19, 2019.

On April 17, 2020, SpaceX applied for a number of changes (SAT-MOD-20200417-00037), including asking for minimum elevation angles down to 25% on most of the constellation, but down to 5% on the high inclination portions. This application has not yet been approved by the FCC. See https://licensing.fcc.gov/myibfs/download.do?attachment_key=2274316.

As far as I know, the V-band constellation minimum elevation angle has not been changed.

The 30k-satellite additional constellation application (SAT-LOA-20200526-00055) also is asking for minimum elevation angles down to 25% on most of the constellation, but down to 5% on the high inclination portions . See https://licensing.fcc.gov/myibfs/download.do?attachment_key=2378671.

Thanks for this very nice visualization!

Additional stats

There are a couple of statistics that should be relatively easy to develop into this kind of simulation. This issue will track ideas until they start to get broken out into their own issues.

  • Calculating average time between gaps. At higher resolutions this will become an average of averages which is unfortunate. This should give an idea of how spotty/intermittent service is.

perigee > 540

Hi,
Thank you for your this.

Just wanted to ask, what is the reason why you exclude satellites with perigee less than 540?

Regards,
Bryan

FIll in missing indices

When generating the full file for a day, the areas near the north and south pole never get any coverage so we need to insert those indexes into the file.

This should fill the missing parts of the visualization

Highlight 100% uptime cells

If a cell gets ~100% uptime the cell outline could be changed to gold or some other color with good contrast to blue, yellow, and red. Because currently we only show resolution 2 cells and those use averages we don't expect to have any res 2 cells with 100% coverage. Maybe a 99.9% uptime would be enough to highlight?

This project "Cell" vs a Starlink "Cell"

This is more of inquiry and request for alignment depending upon the answer, but dishes are currently assigned by Starlink to a "Cell" in which they are scheduled to receive service. Does a "Cell" in this project equate to the same geological area ad Starlink maps them? and if not what data would be needed to deduce a proper alignment (aka how might one assist). Amazing project - Cheers!

License?

Could you choose / add a license?
Thanks!

Hover info on viz

It would be beneficial to show some stats of a cell when mousing over it. This would improve things like readability of the coverage percentage, especially when over land vs water where they appear very differently due to the opacity and contrast.

Indicate age of data

Hi - love the site, but unable to tell how up to date the data being shown is. Would be great if you could add something to indicate that. Thanks!

Zoom levels and higher resolution cells

Currently the data is simulated at resolution 4, and loaded at resolution 4 but for the sake of getting something out the door I render at resolution 2 right now. I want to add a slider or calculate based on the render distance (because Cesium doesn't have a concept of zoom levels) when to switch between rendered resolutions.

Ignore non-operational satellites

Currently there are a number of satellites that are raising orbits or deorbiting. Those should not be used when calculating coverage. Someone recommended looking at the perigee and using a cutoff altitude to ignore satellites that are too low.

Ops and process improvements

Currently I manually set the date and by hand start 4 python instances of main.py to generate the partial coverage files. Then I manually run the merge and push the new coverage file to GitHub. The process should be turned into a bash script with configurable number of processes and at least do the merge automatically at the end.

For historical purposes I would like to keep the old coverage files, so the final coverage file names should contain the date they were generated for.

Identifying cell IDs within USA

Is there is a way for identifying cell IDs that are within US territory? I am trying to calculate the % coverage for the cells within the US territory.
Do you think the global performance (% coverage) is similar to the performance of the cells in the US territory?

Thanks!!

Stars not showing

The stars representing that a area has 100% coverage only show when you set the a minimum angle to load the dataset to 25 degrees, when you set that to 35 degrees it doesn't show any stars where it should show them.

De first picture shows the 35 degrees option, and the second picture shows the 25 degrees option
sternietzien
sterwelzien

Thanks anyway for the awesome website!

IDL (antimeridian) undercounting

At the IDL the polygon passed to H3's polyfill will return no results. This is a documented issue with H3 here: uber/h3#210

In order to fix this, when H3 returns 0 cells, its most likely because the polygon crosses the antimeridian and so the polygon needs to be split into 2 polygons with the antimeridian as the edge between the two.

Optimize coverage file

There are a lot of ways to compress the file to make it smaller and also to reduce the memory usage of the coverage data when loaded.

Help: 'failures_url' seems outdated...

In the main.py the failures_url link seems not working. There are a few URL redirects and it seems the data is not downloaded. Here is the output when I run the main.py:

Loaded 2568 satellites
Traceback (most recent call last):
File "main.py", line 201, in
op_sats = filter_sats(sats)
File "main.py", line 61, in filter_sats
name = row{'NAME'].strip()
KeyError: 'NAME'

Could you let me know how to fix this problem?
Thanks a lot for sharing the code and thanks for your support.

Thanks!!

Formula issue

Currently I am trying to run your program to generate the data using the scripts you provided, gen_cov.sh, my first remark is that the encoding for end-of-line is not unix standard in your python sources, i.e. DOS instead of Unix. Second, I ran in an issue when running the forementioned script : sh gen_cov.py. Here's the outcome :

Sat 02 Jan 2021 05:58:48 PM CET
Loaded 897 satellites
Filtered to 659 operational satellites
2020-07-25T00:00:00Z
Traceback (most recent call last):
  File "/tmp/starlink-coverage/./main.py", line 246, in <module>
    angle = calcCapAngle(sat.elevation.km, MIN_TERMINAL_ANGLE_DEG)
  File "/tmp/starlink-coverage/./main.py", line 100, in calcCapAngle
    eta_FOV = math.asin((math.sin(epsilon + RIGHT_ANGLE)
ValueError: math domain error
Loaded 897 satellites
Filtered to 659 operational satellites
2020-07-25T18:00:00Z
Traceback (most recent call last):
  File "/tmp/starlink-coverage/./main.py", line 246, in <module>
    angle = calcCapAngle(sat.elevation.km, MIN_TERMINAL_ANGLE_DEG)
  File "/tmp/starlink-coverage/./main.py", line 100, in calcCapAngle
    eta_FOV = math.asin((math.sin(epsilon + RIGHT_ANGLE)
ValueError: math domain error
Loaded 897 satellites
Filtered to 659 operational satellites
2020-07-25T12:00:00Z
Traceback (most recent call last):
  File "/tmp/starlink-coverage/./main.py", line 246, in <module>
    angle = calcCapAngle(sat.elevation.km, MIN_TERMINAL_ANGLE_DEG)
  File "/tmp/starlink-coverage/./main.py", line 100, in calcCapAngle
    eta_FOV = math.asin((math.sin(epsilon + RIGHT_ANGLE)
ValueError: math domain error
Loaded 897 satellites
Filtered to 659 operational satellites
2020-07-25T06:00:00Z
Traceback (most recent call last):
  File "/tmp/starlink-coverage/./main.py", line 246, in <module>
    angle = calcCapAngle(sat.elevation.km, MIN_TERMINAL_ANGLE_DEG)
  File "/tmp/starlink-coverage/./main.py", line 100, in calcCapAngle
    eta_FOV = math.asin((math.sin(epsilon + RIGHT_ANGLE)
ValueError: math domain error
mv: cannot stat 'h3_4_cov_full.txt': No such file or directory
  File "/tmp/starlink-coverage/./merge_cover.py", line 36
    res4_cells = h3.h3_to_children(base_cell, 4)
IndentationError: unexpected indent

Could you help me troubleshoot the situation?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.