Pases - acien101/GranaSATDashboard GitHub Wiki

Un elemento esencial es los pases, y es importante ver como se gestiona. Primero hay que ver un poco de teoría de lo que es un pase. Cada satélite cuenta con una ecuación conocida como TLE que define su órbita, y así se puede conocer la posición en la que está en cada momento. Un ejemplo de un TLE sería este, el de un NOAA 19:

NOAA 19                 
1 33591U 09005A   17271.49831915  .00000157  00000-0  11068-3 0  9995
2 33591  99.1052 239.8519 0013816 346.2888  13.7906 14.12215124445231

Esta ecuación se suele actualizar cada 2 semanas porque "caduca" y va perdiendo su precisión.

Teniendo el TLE, lo que se hace es que se utiliza el propagador para propagar la posición de un satélite y ver cuando pasa por encima de nuestra posición, es decir la elevación es mayor a 0. Además hay que añadir que si calculo la posición de un satélite de donde va a estar dentro de 3 días, y lo vuelvo a calcular en 8 horas, esos dos valores no son iguales, tiene un poco de diferencia.

El problema que se nos presenta es que necesitamos calcular todos los pases de los satélites de nuestro sistema cada cierto tiempo porque van cambiando y asignarles a cada uno un identificador. La forma usada para resolver este problema es que cada hora se calculan los pases y se guardan cada uno con un identificador, y como dije anteriormente estos pases van cambiando de valor (poco pero cambian) pues van comparando con los que tenía anteriormente el sistema y ve si se trata del mismo pase le pone el mismo identificador que tenía.

De esta forma solo se tiene una copia de los próximos pases, así cuando se programa uno el usuario envía una petición con el identificador del pase que quiere programar, y lo mismo para cuando lo quiere deshacer.

Todo esto se hace en el app.js en los métodos refreshPasses(), refreshSatellites() y fetchPasses().