Skip to content

Instantly share code, notes, and snippets.

@ninpocoder
Last active May 1, 2017 00:55
Show Gist options
  • Save ninpocoder/e089a10e49ebe70669b6b5a2a1bc44e2 to your computer and use it in GitHub Desktop.
Save ninpocoder/e089a10e49ebe70669b6b5a2a1bc44e2 to your computer and use it in GitHub Desktop.
Documentation
When Landslides Strike
Project Scope
The project we took over aims at populating the global LandSlide database with observations made by individuals. This will help people get information real time about several places on Earth where landslides have occurred and, thus, protect themselves from accidents. Moreover, this Web Application should be user friendly, giving the ability to the user to insert his personal observations to the system. Finally, according to the records in the database, the application should give clues to the user about places that are dangerous for future possible landslide and inform him accordingly.
Project Design & Resources
In this project, we were concerned mainly to build a web app which would be very easy and user friendly for an individual to handle. The user must be able to obtain, insert and view data in short time. Also, the data the user inserts must be valid, or else the database will be filled with corrupted and wrong data, something that would affect extremely the purpose of the application. Several validation mechanism were implemented for this reason.
Besides, the user must be able to view locations on Earth, where already landslides have occurred. With the selection of a particular country around the world, the user is able to view on a Map all the locations together, with locations that landslides may occur in the long run.
The project was built on Java and Google Map APIs. More specifically, for the Front-End part we used JavaScript, HTML, CSS2, Google Map APIs & JSF, whereas for the Back-End we used Spring. For Database support, we used MySQL and ORM technologies such as JPA and Hibernate.
Project Implementation
When the App launches, the user is navigated to the page (img_1.jpg) where he can insert his own observations.
There is a welcome logo at the top of the page and an infinite banner with a friendly message. On the right side, there is a Google Map with a red marker in order to navigate to the exact location he observed a landslide.
On the left side, there is a short description of the purpose of this site and direction on what the user should do, in order to insert a valid observation to the system. Below, there is a form with specific fields to fill, there is a small panel that shows real time what is the Address & Country the user has currently selected on the Map and also, two buttons: Save button to insert his observation and View Records to see all available landslides on Earth, at every country. The latter button will turn to a new page for this operation.
According to user operations, several messages appear on screen indicating if he performed a valid operation or not. In this case, where the user submits correctly his data, a success message with green color appears on screen (img_2.jpg).
In order to maintain the validity and accuracy of the data, we prompt the user to Save data only if he zoomed to the Map above 75%.
After saving his observation, the user is able to view the landslide records. After pressing View Records button, he is navigated to another page with relevant information (img_3.jpg).
On the right side, there is the Google Map where the user will have a visual representation of the landslide locations, previewed as clusters (when zoom is small, several points that exists within specific area create a cluster) and as individual points on Map, when zoom is greater.
When Landslides Strike
Project Scope
The project we took over aims at populating the global LandSlide database with observations made by individuals. This will help people get information real time about several places on Earth where landslides have occurred and, thus, protect themselves from accidents. Moreover, this Web Application should be user friendly, giving the ability to the user to insert his personal observations to the system. Finally, according to the records in the database, the application should give clues to the user about places that are dangerous for future possible landslide and inform him accordingly.
Project Design & Resources
In this project, we were concerned mainly to build a web app which would be very easy and user friendly for an individual to handle. The user must be able to obtain, insert and view data in short time. Also, the data the user inserts must be valid, or else the database will be filled with corrupted and wrong data, something that would affect extremely the purpose of the application. Several validation mechanism were implemented for this reason.
Besides, the user must be able to view locations on Earth, where already landslides have occurred. With the selection of a particular country around the world, the user is able to view on a Map all the locations together, with locations that landslides may occur in the long run.
The project was built on Java and Google Map APIs. More specifically, for the Front-End part we used JavaScript, HTML, CSS2, Google Map APIs & JSF, whereas for the Back-End we used Spring. For Database support, we used MySQL and ORM technologies such as JPA and Hibernate.
Project Implementation
When the App launches, the user is navigated to the page where he can insert his own observations.
There is a welcome logo at the top of the page and an infinite banner with a friendly message. On the right side, there is a Google Map with a red marker in order to navigate to the exact location he observed a landslide.
On the left side, there is a short description of the purpose of this site and direction on what the user should do, in order to insert a valid observation to the system. Below, there is a form with specific fields to fill, there is a small panel that shows real time what is the Address & Country the user has currently selected on the Map and also, two buttons: Save button to insert his observation and View Records to see all available landslides on Earth, at every country. The latter button will turn to a new page for this operation.
According to user operations, several messages appear on screen indicating if he performed a valid operation or not. In this case, where the user submits correctly his data, a success message with green color appears on screen.
In order to maintain the validity and accuracy of the data, we prompt the user to Save data only if he zoomed to the Map above 75%.
After saving his observation, the user is able to view the landslide records. After pressing View Records button, he is navigated to another page with relevant information.
On the right side, there is the Google Map where the user will have a visual representation of the landslide locations, previewed as clusters (when zoom is small, several points that exists within specific area create a cluster) and as individual points on Map, when zoom is greater.
On the left side, there lay the components that define the actual functionality. There are messages with clear instructions on the steps need to be taken. At first, there is a drop-down list that prompts the user to select the country for which he wishes to look on the data. When the country is selected, the users clicks the Calculate Data button. This spawns an operation to the back end, where the landslide observations for that specific country are collected. Finally, the user clicks on the Show Results button and the locations on the Map reveal (img_4.jpg).
With blue color are clusters that contain observations (the number on the cluster reveals how many locations there are). The flags are actual locations that landslides have occurred.
Project Operations Flow
On the client side, we have two pages: index.xhtml, which is the initial page, and reports.xhtml. Both of them include a Google Map (included with Google Map API & JavaScript) to locate a specific point.
In index.xhtml is that we want to capture the longitude, latitude & country we locate the Map Marker. Besides, the user fills a form with relevant information (landslide size, type, what triggered the landslide, how many people were injured, e.t.c). Then, by invoking its associated bean on server side (GeoBean.java), after performing some basic validations aiming to check he validity of the record to be inserted, we insert the record to the database. This is done by passing the information through several application layers. The classes LandSlideManager.java, LandSlideDAO.java & LandSlide.java fulfill this purpose and the ORM we have used to map database entities to Java classes and persist the records to database (Hibernate, JPA).
The same principles apply also to reports.xhtml. A basic form that submits fields to the database through calling methods from its backing bean (ReportBean.java) and passing it through the same classes as mentioned above.
Project Considerations
Although the app is functional, there are some things that need to be considered, as also things that we didn’t manage (due to lack of resources: very small team, time limit) to address:
 No clustering algorithm eventually was implemented (k-means) to “predict” from the dataset locations that landslides may occur. Currently, we only project the observations that have already been committed to database
 We didn’t verify the weather conditions for the current observations (is it raining at that particular time? Is the ground still wet?)
 Validate the locations are reasonable. As an example, it is not a valid record a point on Map that is located to the sea!
 Does the user enters a location where actually a landslide occurred? This could be cross-validated with real-time data from another database, maybe from a satelite
@ninpocoder
Copy link
Author

phase_1
phase_2
phase_3
phase_4
phase_5

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment