The system is divided into two main parts, a User APP connected to an APP server, which in turn will be able to query raw data from NASA and other sources.
The app main task will be to display the data requested by the user in a simple, easy to read and fast manner.
The app is only has one node that communicates with. The app will send commands and messages to the server and will receive useful information to display to the user.
Those inputs that the app will send to the server are:
Displaying the information received from the server will be done by using two main map layers.
The user will be able to interact with the app to request all sort of information. The app functions are as follows:
Once the app is launched it will send a periodic message to the server, This message will include the device IMEI number (DEV_IMEI), the GPS current location (CURRENT_GPS), the current time (CURRENT_TIME), and if the app is currently working on the background or the foreground (USER_STATUS).
The sever will use this data in its different functions. One of which it will check if CURRENT_GPS or CURRENT_TIME changed beyond a certain threshold (GPS_THD & Refresh_Interval). If yes, the server will send to the app new collection of information. This information will be updated on the app’s information layer.
The user request information about an area by sending a specific location and time to get the data collection and display it on the app’s information layer.
The user can request to know the status of a route or a road by sending the starting point location and the end point. The app (which incorprate some of GOOGLE MAPS features) will generate routes and display them to the user. The server (which has a copy of the same algorithm to generate the routes) will check those routes againest its database and send back to the user data collection for the all suggest routes.
The APP will receives notifications from the server from time to time if Accept_Notifications was set. It will generate a notification on the user device and will display the notfications on a separate map layer (which can be hidden or shown based according to the user preference).
When the app is on the foreground or the user has selected to start a journy on a route, the server will send fresh data collections for every Refresh_Interval.
Most of the processing will be done on the server. It will take different data from different sources and incorporate it into useful information that can be sent to the user app to display.
The server will get messages from the user app and it will also be connected to different types of data resources and has specific processing function for each of those to correlate what the user wanted and what can be taken from those resources and keep it in its local database.
Those are the same discussed in User APP IN/Out section
Differnet types of data will need different methods of processing, (weather data, flood prediction maps, terrain imagies, cload images, clutter maps, vegitation maps, ..etc) each will be queried in a specific way and the resulted data will be saved locally.
The server will be able to handle different tasks
The server will keep a database on all the users of the app. It will contain:
This database will be updated when certain events occure:
The server will contain a database of locations and information data corresponding to each location. This information database will be updated periodicly and kept locally. That way there will be no need to complicate the system by introducing static connections to the different resources of information.
The updating period will differ according to the kind of information. Weather information, Floods predicitons, and storms monitoring will be updated more frequently than vegitation maps and terrain images.
This data will be queried from different resources and proccessed to be kept as a single record for each location/Time. Critical events or information will be marked in the database to be used as notifications to the users.
That way whenever a request for information from the user app is received, the server will just look up the needed record from its own local database and send it to the user.
If USER_STATUS is “live”, the The server will keep track of the periodic information update messages by the user and send fresh data collection to be displayed in the app in real time.
The server will accept different messages from the user, and respond accordingly. There are two main requests from the user:
The server will generate a broadcast message to all the users in a certain location when some events occur.
Events marked as critical will be broadcasted to the users accoring to their locations saved in the user database kept in the app server.
Travelers, Campers , regular people to check a prospect property or even for governmental agencies to check where urgent support could be needed.
SpaceApps is a NASA incubator innovation program.