-
Notifications
You must be signed in to change notification settings - Fork 1
1. Fuentes de datos
Comenzamos realizando pruebas con un conjunto de datos pequeño, el cual albergaba los datos correspondientes a alrededor de una hora y media de señales. Sin embargo, pronto nos pusimos a trabajar con un conjunto de datos de tamaño superior.
El conjunto sobre el que realizamos los ejercicios de la entrega uno se corresponde con una semana entera de señales recibidas por el radar y pesa alrededor de unos 9GB descomprimido, lo que se corresponde con entorno a 200 millones de señales ADS-B y Mode-S.
Para facilitar el acceso a los datos, tras su decodificación (ver entrada de preprocesamiento), organizamos el conjunto de datos en parquets separados por día y hora (nombrados como YYYY_MM_DD_HH.parquet). Asimismo, a partir de estos datos generamos otros que también se almacenan en parquets como, por ejemplo, los tiempos de espera de espera en los despegues.
De momento, todos estos archivos están almacenados en una carpeta compartida de Google Drive. Cada uno de nosotros ha trabajado de manera local con ellos ya que la idea es migrar los datos a un sistema distribuido cuando aumente el volumen de los mismos y, por lo tanto, implementar un sistema de descargas de los datos desde Google Drive en los notebooks y módulos no tendría mucho futuro.
Nuestra fuente principal de datos ha sido el conjunto de mensajes emitidos por aeronaves registrados por un radar perteneciente a DataBeacon situado en Paracuellos de Jarama. Estos datos estaban almacenados en el clúster de Cloudera de la FDI, ocupaban alrededor de 100GB y en su forma cruda contienen únicamente dos columnas:
- ts_kafka. Timestamp del registro.
- message. Mensaje codificado en base64.
A continuación, procedimos a extraer otros datos relacionados con la geometría y disposición del aeropuerto. Así pues, representamos gráficamente los datos proporcionados en los archivos GeoJSON. Dado que las pistas venían dadas como combinación de varios polígonos, decidimos combinarlos y reducir a un solo rectángulo cada una de cara a simplificar en gran medida los cálculos posteriores.
Debido a la proximidad de estos puntos a pistas concretas podemos concluir que no hay puntos de espera que compartan varias pistas. Además, observamos gracias a FlightRadar24 que los aviones no cruzan por esos puntos al aterrizar, sino que toman rutas alternativas, luego los aterrizajes no añadirán ruido a los resultados en este sentido. Otra observación realizada es el hecho de que hay aviones que no se detienen en los puntos de espera si la pista está vacía generalmente, estas aeronaves no se considerarán para el entrenamiento del modelo.
Los puntos de espera se han ampliado a áreas circulares de 40 metros de diámetro (la figura anterior refleja estas medidas) para poder detectar correctamente aviones situados sobre ellos. No hay intersección entre puntos de espera ni con las pistas. Datos meteorológicos
Hemos intentado incorporar los mensajes meteorológicos provenientes de las aeronaves a nuestro conjunto de datos final. No obstante, la significativa escasez de los mismos y la frecuente lejanía en tiempo de los mensajes de las aeronaves situadas en puntos de espera nos ha hecho descartar estos datos.
Por otro lado, descubrimos una API llamada Open-meteo que ofrece de forma gratuita datos meteorológicos históricos con una resolución horaria (comentaremos más adelante las variables introducidas). De este modo, truncamos los timestamps de los mensajes a la hora para combinarlos con su dato meteorológico anterior más cercano, evitando así la contaminación de futuro. Datos técnicos de la aeronave
Aunque no hayan llegado a formar parte del conjunto final, tratamos de combinar los datos suministrados con otra fuente adicional para tener más información acerca de detalles técnicos de la aeronave. Gracias a los datos proporcionados por OpenSky Network, construimos un dataframe que contenía campos como el modelo de la aeronave, la aerolínea o el número de motores. No obstante, cuando lo contrastamos para las ICAOs de las aeronaves de nuestro conjunto de datos había una presencia muy significativa de valores nulos en todas las columnas, por lo que lo decidimos descartar.