Safe Floods | Water, Water, Everywhere!

Everywhere / Virtual Participation

The Challenge | Water, Water, Everywhere!

Develop a tool that provides emergency management personnel with an up-to-date flood-risk map for an area of interest.

Safe Floods

SAFE FLOODS is an app that runs on your mobile device, that can give you a better understanding of the weather hazards that can face you on the road or in any area around you.

Safe Floods

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.

User APP

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:

  • -GPS location.
  • -Time.
  • -User device information
  • -User app settings
  • -User status.

Displaying the information received from the server will be done by using two main map layers.

  • -Layer to display the information requested by the user.
  • -Layer to display any notifications the app will broadcast to users.

User APP Functions

The user will be able to interact with the app to request all sort of information. The app functions are as follows:

Periodic Information Update

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.

Request information on location

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.

Display Notificaions

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).

Live User Updates

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.

APP Server

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.

To and From User IN/OUT

Those are the same discussed in User APP IN/Out section

From Data resources

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.

APP Server Functions

The server will be able to handle different tasks

User Database

The server will keep a database on all the users of the app. It will contain:

  • -The device IMEI number (DEV_IMEI)
  • -The GPS location of the last access (LASTSAVED_GPS)
  • -The date and time of the last access (LASTSAVED_TIME)
  • -The user status as if the app is currently working on the background or the foreground (USER_STATUS).
  • -Some of the user set parameters Refresh_Interval, Accept_Notifications, and GPS_THD.

This database will be updated when certain events occure:

  • -First Signup/Use of app: a new record will be created.
  • -Every period information update from the user, the server will check the data from the user against its user database and updated accordingly.

Local Information Database

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.

Periodicly Update Live Users

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.

Process Information/Requests

The server will accept different messages from the user, and respond accordingly. There are two main requests from the user:

  • 1-GPS&TIME Information request: in which case the server will just look up the information from its database and send it to the user app.
  • 2-Route Information request: in which the server will receive two points and using the same algorithm in the app the server will generate same suggested routes by the app and it will query data collection for each of those routes and send them back to the user.

Notifications Update

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.

Who Benfits from the APP

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.