Challenge Overview
FAA NOTAM: Notice to Airmen Data Ingestion
Project Background
The Federal Aviation Administration (FAA) in collaboration with Topcoder is working to further improve timely access to Notice to Airmen (NOTAM) data by developing required Application Programming Interfaces (APIs) to meet the diverse needs of the aviation industry.
A Notice to Airmen (NOTAM) is the real-time notification component of the FAA's Aeronautical Information System and contains up-to-date information related to any change in the National Airspace System (NAS).
Who uses NOTAMs?
-
Commercial, General Aviation, and Drone pilots need access to NOTAM data before and during flight.
-
The FAA issues NOTAMs to support multiple Federal Agencies, Airports, protect critical infrastructure, disaster relief efforts, and space operations.
Challenge Overview
Welcome to the Notice to Airmen Data Ingestion part 2 Challenge! Your task in this challenge is to create a tool that processes NOTAM records.
Background Information
A NOTAM is a real time, safety critical, information essential to personnel concerned with flight operations but not known far enough in advance to be publicized by other means. It states the abnormal status of a component of the NAS – not the normal status.
The system that we’re building will need to ingest all the data sources and provide an API to query all the data based on various properties, such as location, NOTAM type, location and notam number, effective start and end dates, affected feature types and last updated date.
API will also have the options to return the data in 3 different formats: AIXM, AIDAP or GeoJSON.
To access the API, users will first need to be registered on a developer portal where they would get an access key for the API.
All the application components will be hosted on Kubernetes and will need to be dockerized.
NOTE: For more details on project background and NOTAM data sources, see the architecture challenge
Technology Stack
-
Java/Spring
Assets
Project architecture and demo SFTP credentials are posted in challenge forums.
Task Details
Your task in this challenge is to create two CLI tools - FIL Job and SAA Job in the architecture diagram.
FIL tool will:
-
Download the notam data from sftp,
-
Extract the notam records from zip archive and process each one,
-
store them in the database,
-
determine if the NOTAM is an SAA record and if so, load the SAA geometry data if it exists
-
Update the record in the database
-
Convert the AIXM 5.1 record into two additional formats:
* AIDAP format (call the existing format conversion tool)
* GeoJSON format (call the existing tool)
and finally save the updated data to database
SAA tool will:
-
Download the SAA zip archive
-
Extract all the SAA geometry files and store them into the database
-
Remove old SAA geometry data from database
-
Update existing notam records with new SAA data
Refer to the project architecture for exact data processing requirements. Both tools will be implemented using Java 11, Spring Boot 2.4 and data should be stored in the PostgreSQL database.
In the previous challenge we have developed a tool that loads the JMS and TFR data. FIL and SAA tools will be developed in the same codebase - each tool should have it’s own entry(main) class.
For reference here is the architecture diagram with details of what is already implemented (green) vs what we are implementing in this challenge (red)
Final task in this challenge is to implement extracting “features” from notam records - this should be done in both FIL and JMS tools. See the “Extracting notam features” section in the data merging document.
Create a docker file for the tools (you can reuse the existing one and just change the start command) and a docker-compose script that starts all the services.
What To Submit
Submit the full source code for the CLI tools and a README file with build and verification instructions. Winner will need to submit a pull request to the project repository.