Big Data & AI in Natural Disaster Management
Big Data & AI in Natural Disaster Management
LEARNING
ABSTRACT
Natural disasters are events that are difficult to avoid. There are several ways of
reducing the risks of natural disasters. One of them is implementing disaster reduction
programs. There are already several developed countries that apply the concept of disaster
reduction. In addition to disaster reduction programs, there are several ways to predict or
reducing the risks using artificial intelligence technology. One of them is big data, machine
learning, and deep learning. By utilizing this method at the moment, it facilitates tasks in
visualizing, analyzing, and predicting natural disaster. This research will focus on conducting
a review process and understanding the purpose of machine learning and big data in the area
of disaster management and natural disaster. The result of this paper is providing insight and
the use of big data, machine learning, and deep learning in 6 disaster management area. This
6-disaster management area includes early warning damage, damage assessment, monitoring
and detection, forecasting and predicting, and post-disaster coordination, and response, and
long-term risk assessment and reduction.
CHAPTER - 1
1.1 INTRODUCTION
Natural disasters are events that result from natural processes that cannot be predicted.
Natural disasters can also cause loss of life or damage property and economic losses.
According to data provided by world health organizations from 1900 to 2018, there are
around 14 million for all types of disasters. Children are the most vulnerable groups who get
direct impacts of disasters. Disaster victims come from various countries, and disasters have
been threatening the lives of millions of children.
One effort to minimize disasters is to provide a program for reducing the risks of
natural disasters. Disaster risk reduction is a concept of how communities reduce damage and
victims affected by disasters. One example of risk reduction according to the Sendai
framework [3] made by UNISDR (United Nations International Strategy for Disaster
Reduction) is understanding the risk of the disaster. According to Goswami's research states
that the aim of disaster management is minimizing victims, can save victims promptly,
evacuate people to save places, Reconstruct the damages immediately, and Offer first aid
instantly.
The technology today is big data, machine learning, along with deep learning.
According to Hashem's research stated that big data is a set of techniques and technology that
requires a new form of integration to find large hidden values derived from datasets that are
complex, diverse, and of a massive scale. The advantage of using big data can determine the
pattern obtained from data analysis and the creation of hidden information.
In this study, we will review and focus more on Disaster management phases, which
focus more on the use of machine learning in the area of Disaster management phases, which
consists of the data source used and the model/algorithm used. Because to find out whether
the previous research solved the problem in the prediction area and early detection we must
know the data source used already has 5'v characteristics, namely Velocity, Volume, Value,
Variety, and Veracity. The performance level of the model made is good or not from the level
of accuracy, precision, recall, and the execution time. The propose of this study to give an
insight and the use of big data, machine learning, and deep learning from 6 disaster area
which is early warning damage, damage assessment, monitoring and detection, forecasting
and predicting, and post-disaster coordination, and response, and long-term risk assessment
and reduction. But also give the data source that the previous research.
Big data is defined as the technological paradigm that allows researchers to conduct
an efficient analysis of vast quantities of data that is made available through the current
practices. It is the collection of scientific and engineering methods and tools that help in
making the best of massive amounts of available data. Big data addresses not only storage
issues, but also issues related to accessibility, distribution, analysis, and effective visual
presentation of data and analysis. Big data has now become a crucial element of
communication, which complements the conventional exchange of intentional and explicit
messages; such as first responders talking over a voice connection; or an announcement of a
text message through which warning is given to citizens faced with the threat of an
approaching natural disaster. More precisely, communication also entails understanding and
monitoring the entire body of public and openly available communication such as messages
and content that is publicly exchanged on social media. In such situations, people may be
exchanging messages in reporting their condition to their loved ones or making appeals for
help. However, big data allows researchers to conduct a detailed analysis of all
communications which provides valuable information that has a general validity for the
population at large; such as information about a disease outbreak.
In general, the disaster management cycle comprises four distinct phases, which are
“mitigation”, “preparedness”, “responses”, and “recovery”. The goal of the mitigation phase
is to minimize the effects of a disaster (building warning codes and risk zones, risk analysis,
public education). The main focus of the preparedness phase is on planning how to respond to
a disaster. It includes preparedness plans, emergency exercises, and training, but also the
Early Warning System development and implementation. Response activities pertain to
providing the required disaster management services to save lives and safeguard property and
protect the environment during disaster management situations. “Recovery” is the process of
returning systems to normal levels after a disaster. In recent years, the literature on disaster
management mostly focused on the potential that lies in using specific kinds of data for
natural disaster management. It is in this context that this paper makes a review of major big
data sources, the associated achievements in different disaster management phases, and
emerging technological topics associated with leveraging this new ecosystem of Big Data to
monitor and detect natural hazards, mitigate their effects, assist in relief efforts, and
contribute to the recovery and reconstruction processes.
Natural and man-made disasters impact the lives of millions of people worldwide
each year. Often it is the case that human lives are lost as a result of these events. Besides
human losses, significant impacts on infrastructure and properties are caused by disasters.
Disaster management operations are performed before, during and after the occurrence of a
disaster, aiming at preventing human losses, protecting people and infrastructure, reducing
the impacts on economy and reestablishing a state of normalcy. The complexity of the
disasters and the criticality and complexity of disaster operations require robust decision
making, enhanced by information technology and in particular AI. Effective and informed
disaster management is necessary to address the scale and the impact of disasters and in
recent years has been leveraged by advances in ML and DL.
Disaster management addresses disasters over time. Four distinct phases have been
widely adopted: mitigation, preparedness, response and recovery. Mitigation relates to
activities that will either prevent the occurrence of a disaster or reduce the impacts of a
disaster. Preparedness includes the activities that prepare the communities to take actions in
response to a disaster, such as emergency planning, prepositioning of supplies, training and
education of the community in order to better respond when a disaster strikes or to mitigate
the effects of a disaster. Response includes the operations that implement the planning made
to protect the lives and property, the environment, and the socio-economic structure of the
community. Disaster relief and response also includes activities such as implementation of
emergency plans, emergency rescue and medical care, shelter opening and management,
distribution of supplies and damage assessment. It is one of the most researched phases
because it is during this phase that people and infrastructure need the most immediate
assistance. In this phase, time is very much of the essence, so techniques focus not only on
high accuracy results but also fast performing and optimized methods. Recovery
(reconstruction) includes the long-term actions that aim to bring a state of normalcy to the
community. Activities in this phase include among others financial assistance and
rebuilding/reconstruction (e.g., of buildings and key infrastructure). Moreover, the active
involvement of local communities in disaster management can lead to community resilience.
The AI techniques that are used for the purpose of assisting disaster management
across all of its phases consist of several ML and DL methods. ML methods include support
vector machine (SVM), Naïve Bayes (NB) methods, decision trees (DT), random forest (RF),
logistic regression (LR) and K-nearest neighbour (KNN) clustering algorithm. On the other
hand, DL methods include different architectures of artificial neural networks (ANNs), such
as convolutional neural networks (CNNs), multi-layer perceptron (MLP), recurrent neural
networks (RNNs), long short-term memory neural network (LSTM), transformers
architecture and generative adversarial networks (GANs) [3,9,10]. ML and DL enable the
utilization of big and complex datasets in order to develop systems that can predict disasters
as well as assist during the response and recovery after such events and practical decision-
support tools have been developed. These techniques take advantage of the ability to
manipulate different types of data from multiple sources and determine patterns that can
provide intelligence which would be otherwise impossible to divulge. Big data is available
from sources such as satellite imagery, unmanned aerial vehicles (UAVs), social media,
crowdsourcing, geographical information systems (GIS) and wireless sensor networks.
Taking into account the increasing trend in the development of ML-based methods for
disaster management and the rapid advances in DL, a comprehensive review focusing on ML
and DL advances in disaster management is needed. Accordingly, in this paper, a review of
literature studies utilizing ML and DL since 2017 has been conducted, covering various
phases of disaster management with different types of techniques and data.
1.2 OBJECTIVE
Encouraging culture of disaster preparedness.
Institutionalisation of disaster management.
Safety and quick decision making.
Post disaster medical help and first aid.
SYSTEM ANALYSIS
Earthquakes have been one of the most hazardous but least predictable natural
disasters. The occurrence of catastrophic earthquakes results in casualties, massive damage to
the infrastructure, the vanquishing of societies in a flash and a sudden downfall in the
country’s economy. There are many geographical factors that may cause an earthquake,
including ground motion, heavy rainfall, rock bed material, regional tectonics and altitude.
There is a tremendous pressure on geologists and seismologists for the prediction of the time,
place and strength of earthquakes.
DISADVANTAGES:
ADVANTAGES:
HARDWARE REQUIREMENTS
SOFTWARE REQUIREMENTS
SYSTEM IMPLEMENTATION
3.1 IMPLEMENTATION
Implementation is the stage of the project when the theoretical design is turned out
into a working system. Thus it can be considered to be the most critical stage in achieving a
successful new system and in giving the user, confidence that the new system will work and
be effective. The implementation stage involves careful planning, investigation of the
existing system and it’s constraints on implementation, designing of methods to achieve
changeover and evaluation of changeover methods.
3.2 MODULE
MODULES:
MODULES DESCRIPTION:
PYTHON:
Python is consistently rated as one of the world's most popular programming languages.
Python is fairly easy to learn, so if you are starting to learn any programming language then
Python could be your great choice. Today various Schools, Colleges and Universities are
teaching Python as their primary programming language. There are many other good reasons
which makes Python as the top choice of any programmer:
Python is a MUST for students and working professionals to become a great Software
Engineer specially when they are working in Web Development Domain. I will list down
some of the key advantages of learning Python:
CHARACTERISTICS OF PYTHON:
APPLICATIONS OF PYTHON:
The latest release of Python is 3.x. As mentioned before, Python is one of the most widely
used language over the web. I'm going to list few of them here:
Easy-to-learn − Python has few keywords, simple structure, and a clearly defined
syntax. This allows the student to pick up the language quickly.
Easy-to-read − Python code is more clearly defined and visible to the eyes.
A broad standard library − Python's bulk of the library is very portable and cross-
platform compatible on UNIX, Windows, and Macintosh.
Interactive Mode − Python has support for an interactive mode which allows
interactive testing and debugging of snippets of code.
Portable − Python can run on a wide variety of hardware platforms and has the same
interface on all platforms.
Extendable − You can add low-level modules to the Python interpreter. These
modules enable programmers to add to or customize their tools to be more efficient.
GUI Programming − Python supports GUI applications that can be created and
ported to many system calls, libraries and windows systems, such as Windows MFC,
Macintosh, and the X Window system of Unix.
Scalable − Python provides a better structure and support for large programs than
shell scripting.
PYTHON – OVERVIEW:
Python is Interactive − You can actually sit at a Python prompt and interact with the
interpreter directly to write your programs.
HISTORY OF PYTHON:
Python was developed by Guido van Rossum in the late eighties and early nineties at the
National Research Institute for Mathematics and Computer Science in the Netherlands.
Python is derived from many other languages, including ABC, Modula-3, C, C++, Algol-68,
SmallTalk, and Unix shell and other scripting languages.
Python is copyrighted. Like Perl, Python source code is now available under the GNU
General Public License (GPL).
PYTHON FEATURES:
Apart from the above-mentioned features, Python has a big list of good features, few are
listed below:
As we learned in the previous Python Introduction article, python is a free, open-source, and
cross-platform language. So, the python can run on multiple OS platforms like Windows,
Linux, Mac, etc.
We will now learn how to install python or set up a Python development environment on
different OS platforms like Windows, Mac, and Linux machines.
Before you start python installation, first verify whether the python has already installed on
your machine or not. Nowadays, most of the devices are coming with preinstalled python.
To verify python installation, open the command prompt ([Link]) or Terminal and type the
command like python --version. If you found that python has not installed on your machine,
follow the below steps based on your OS version.
WINDOWS INSTALLATION:
Follow the link for the Windows installer [Link] file where XYZ is the
version you need to install.
To use this installer [Link], the Windows system must support Microsoft
Installer 2.0. Save the installer file to your local machine and then run it to find out if
your machine supports MSI.
Run the downloaded file. This brings up the Python install wizard, which is really
easy to use. Just accept the default settings, wait until the install is finished, and you
are done.
SETTING UP PATH:
Programs and other executable files can be in many directories, so operating systems provide
a search path that lists the directories that the OS searches for executables.
The path is stored in an environment variable, which is a named string maintained by the
operating system. This variable contains information available to the command shell and
other programs.
The path variable is named as PATH in Unix or Path in Windows (Unix is case sensitive;
Windows is not).
To install Python on a Windows machine, visit download python Url to download and install
the latest python version. When you open the URL, it will automatically detect your OS and
display the download link as per your operating system like as shown below.
Fig.1 Python-Website
When you click on the Download Python 3.8.3 button, it will download the python-
[Link] file for a 32-bit version. If you want to download the 64-bit version, visit the python
for windows page and download the appropriate 64-bit installer.
If you choose the Install Now option, it will install Python in the default installation folder
(C:\Users\{UserName}\AppData\Local\Programs\Python\Python38) with default settings. If
you want to customize the python installation folder location & features, you can choose
the Customize installation option. Select Add Python 3.8 to path option so that you can
execute the python from any path.
After completing the python installation, you will see the success message window like as
shown below, and click on the Close button to close the setup wizard.
After completing python installation on your machine, you can verify it by opening the
command prompt and typing python --version command. If python is installed successfully, it
will display the version of python installed on your machine as shown below. To verify the
installation, you open the Run window and type cmd and press Enter:
To add the Python directory to the path for a particular session in Windows
1 PYTHONPATH
It has a role similar to PATH. This variable tells the Python interpreter where to locate
the module files imported into a program. It should include the Python source library
directory and the directories containing Python source code. PYTHONPATH is
sometimes preset by the Python installer.
2 PYTHONSTARTUP
3 PYTHONCASEOK
4 PYTHONHOME
You can run Python from a Graphical User Interface (GUI) environment as well, if you have
a GUI application on your system that supports Python.
Windows − PythonWin is the first Windows interface for Python and is an IDE with
a GUI.
If you are not able to set up the environment properly, then you can take help from your
system admin. Make sure the Python environment is properly set up and working perfectly
fine.
The Python syntax defines a set of rules that are used to create Python statements while
writing a Python Program. The Python Programming Language Syntax has many similarities
to Perl, C, and Java Programming Languages. However, there are some definite differences
between the languages.
If you are running older version of Python, like Python 2.4.x, then you would need to use
print statement without parenthesis as in print "Hello, World!". However in Python version
3.x, this produces the following result.
Hello, World!
SETUP VISUAL STUDIO CODE FOR PYTHON:
Visual Studio Code is a lightweight source code editor. The Visual Studio Code is
often called VS Code. The VS Code runs on your desktop. It’s available for Windows,
macOS, and Linux. VS Code comes with many features such as IntelliSense, code editing,
and extensions that allow you to edit Python source code effectively. The best part is that the
VS Code is open-source and free. Be sides the desktop version, VS Code also has a browser
version that you can use directly in your web browser without installing it.
Visual Studio Code is a lightweight but powerful source code editor which runs on your
desktop and is available for Windows, macOS and Linux. It comes with built-in support for
JavaScript, TypeScript and [Link] and has a rich ecosystem of extensions for other
languages and runtimes (such as C++, C#, Java, Python, PHP, Go, .NET). Begin your
journey with VS Code with these introductory videos.
EXTENSIONS:
To make the VS Code works with Python, you need to install the Python extension from the
Visual Studio Marketplace.
The following picture illustrates the steps:
First, click the Extensions tab and second, type the python keyword on the search
input.
Third, click the Python extension. It’ll show detailed information on the right pane.
Finally, click the Install button to install the Python extension.
INTRODUCTION TO TKINTER:
Graphical User Interface (GUI) is a form of user interface which allows users to interact
with computers through visual indicators using items such as icons, menus, windows, etc. It
has advantages over the Command Line Interface (CLI) where users interact with computers
by writing commands using keyboard only and whose usage is more difficult than GUI.
Modern computer applications are user-friendly. User interaction is not restricted to console-
based I/O. They have a more ergonomic graphical user interface (GUI) thanks to high speed
processors and powerful graphics hardware. These applications can receive inputs through
mouse clicks and can enable the user to choose from alternatives with the help of radio
buttons, dropdown lists, and other GUI elements (or widgets).
Such applications are developed using one of various graphics libraries available. A graphics
library is a software toolkit having a collection of classes that define a functionality of
various GUI elements. These graphics libraries are generally written in C/C++. Many of them
have been ported to Python in the form of importable modules.
What is Tkinter?
Tkinter is the inbuilt python module that is used to create GUI applications. It is one of the
most commonly used modules for creating GUI applications in Python as it is simple and
easy to work with. You don’t need to worry about the installation of the Tkinter module
separately as it comes with Python already. It gives an object-oriented interface to the Tk GUI
toolkit.
Some other Python Libraries available for creating our own GUI applications are,
Kivy
Python Qt
wxPython
Widgets in Tkinter are the elements of GUI application which provides various controls
(such as Labels, Buttons, ComboBoxes, CheckBoxes, MenuBars, RadioButtons and many
more) to users to interact with the application.
Fig.8. Fundamental structure of tkinter program
1 Button
The Button widget is used to display buttons in your application.
2 Canvas
The Canvas widget is used to draw shapes, such as lines, ovals, polygons and rectangles,
in your application.
3 Checkbutton
The Checkbutton widget is used to display a number of options as checkboxes. The user
can select multiple options at a time.
4 Entry
The Entry widget is used to display a single-line text field for accepting values from a
user.
5 Frame
The Frame widget is used as a container widget to organize other widgets.
6 Label
The Label widget is used to provide a single-line caption for other widgets. It can also
contain images.
7 Listbox
The Listbox widget is used to provide a list of options to a user.
8 Menubutton
The Menubutton widget is used to display menus in your application.
9 Menu
The Menu widget is used to provide various commands to a user. These commands are
contained inside Menubutton.
10 Message
The Message widget is used to display multiline text fields for accepting values from a
user.
11 Radiobutton
The Radiobutton widget is used to display a number of options as radio buttons. The user
can select only one option at a time.
12 Scale
The Scale widget is used to provide a slider widget.
13 Scrollbar
The Scrollbar widget is used to add scrolling capability to various widgets, such as list
boxes.
14 Text
The Text widget is used to display text in multiple lines.
15 Toplevel
The Toplevel widget is used to provide a separate window container.
16 Spinbox
The Spinbox widget is a variant of the standard Tkinter Entry widget, which can be used
to select from a fixed number of values.
17 PanedWindow
A PanedWindow is a container widget that may contain any number of panes, arranged
horizontally or vertically.
18 LabelFrame
A labelframe is a simple container widget. Its primary purpose is to act as a spacer or
container for complex window layouts.
Tkinter PROGRAMMING:
Tkinter is the standard GUI library for Python. Python when combined with Tkinter
provides a fast and easy way to create GUI applications. Tkinter provides a powerful
object-oriented interface to the Tk GUI toolkit.
Creating a GUI application using Tkinter is an easy task. All you need to do is perform the
following steps-
Import the Tkinter module.
Create the GUI application main window.
Add one or more of the above-mentioned widgets to the GUI application.
Enter the main event loop to take action against each event triggered by the user.
EXAMPLE:
import Tkinter
top = [Link]()
# Code to add widgets will go here...
[Link]()
This would create a following window-
Fig.9 Simple Tkinter Windows
STANDARD ATTRIBUTES:
Let us take a look at how some of their common [Link] as sizes, colors and fonts
are specified.
Dimensions
Colors
Fonts
Anchors
Relief styles
Bitmaps
Cursors
GEOMETRY MANAGEMENT:
All Tkinter widgets have access to specific geometry management methods, which have the
purpose of organizing widgets throughout the parent widget area. Tkinter exposes the
following geometry manager classes: pack, grid, and place.
The pack() Method − This geometry manager organizes widgets in blocks before
placing them in the parent widget.
The grid() Method − This geometry manager organizes widgets in a table-like
structure in the parent widget.
The place() Method − This geometry manager organizes widgets by placing them
in a specific position in the parent widget.
Python - place() method in Tkinter:
The Place geometry manager is the simplest of the three general geometry managers
provided in Tkinter. It allows you explicitly set the position and size of a window, either in
absolute terms, or relative to another window. You can access the place manager through
the place() method which is available for all standard widgets. It is usually not a good idea
to use place() for ordinary window and dialog layouts; its simply too much work to get
things working as they should. Use the pack() or grid() managers for such purposes.
Syntax:
[Link](relx = 0.5, rely = 0.5, anchor = CENTER)
Python - grid() method in Tkinter:
The Grid geometry manager puts the widgets in a 2-dimensional table. The master widget is
split into a number of rows and columns, and each “cell” in the resulting table can hold a
widget. The grid manager is the most flexible of the geometry managers in Tkinter. If you
don’t want to learn how and when to use all three managers, you should at least make sure
to learn this one. Consider the following example-
Creating this layout using the pack manager is possible, but it takes a number of extra
frame widgets, and a lot of work to make things look good. If you use the grid manager
instead, you only need one call per widget to get everything laid out properly. Using
the grid manager is easy. Just create the widgets, and use the grid method to tell the
manager in which row and column to place them. You don’t have to specify the size of the
grid beforehand; the manager automatically determines that from the widgets in it.
The Pack geometry manager packs widgets relative to the earlier widget. Tkinter literally
packs the entire widgets one after the other in a window. We can use options
like fill, expand, and side to control this geometry manager.
Compared to the grid manager, the pack manager is somewhat limited, but it’s much easier
to use in a few, but quite common situations:
Put a widget inside a frame (or any other container widget), and have it fill the
entire frame
Place a number of widgets on top of each other
Place a number of widgets side by side
Python - Binding function in Tkinter:
Tkinter is a GUI (Graphical User Interface) module that is widely used in desktop
applications. It comes along with the Python, but you can also install it externally with the
help of pip command.
It provides a variety of Widget classes and functions with the help of which one can make
our GUI more attractive and user-friendly in terms of both looks and functionality.
The binding function is used to deal with the events. We can bind Python’s Functions and
methods to an event as well as we can bind these functions to any particular widget.
What is bind?
The basic definition of the word bind is stick together or cause to stick together in a single
mass. Similarly, Tkinter bind is used to connect an event passed in the widget along with
the event handler. The event handler is the function that gets invoked when the events take
place.
[Link](sequence=None, func=None, add=None)
The sequence the argument describes what event we expect, and the func argument is a
function to be called when that event happens to the widget. If there was already a binding
for that event for this widget, normally the old callback is replaced with func, but you can
preserve both callbacks by passing add='+'.
The events can be bonded to an event handler using the bind function at different levels.
1. Instance-level binding
One can bind an event to one specific widget. To bind an event of a widget, call
the .bind() method on that widget.
[Link](event, event handler)
Event – occurrence caused by the user that might reflect changes.
Event Handler – function in your application that gets invoked when the event
takes place.
Bind – configuring an event handler (python function) that is called when an event
occurs to a widget.
2. Class-level binding
One can bind an event to all widgets of a class. For example, you might set up
all Button widgets to respond to middle mouse button clicks by changing back and forth
between English and Japanese labels. To bind an event to all widgets of a class, call
the .bind_class() method on any widget.
The “class” mentioned in bind_class refers to the internal class name used by the tk library,
not the python class name. bind_class is a method available to all widgets and simply calls
the Tk bind command again, however not with the instance name, but the widget class
name.
w.bind_class(className, sequence=None, func=None, add=None)
The basic working of .bind_class is the same as the .bind function.
3. Application-level binding
One can set up a binding so that a certain event calls a handler no matter what widget has
the focus or is under the mouse.
w.bind_all(sequence=None, func=None, add=None)
Like .bind(), but applies to all widgets in the entire application.
CHAPTER - 5
SYSTEM DESIGN
5.1 SYSTEM ARCHITECTURE
Load Damage
Data Filtering
Assessment
Data Acquisition
Machine Learning
Methods
View Real
Time Events View Earthquake
Report Prediction
1. The DFD is also called as bubble chart. It is a simple graphical formalism that can be
used to represent a system in terms of input data to the system, various processing
carried out on this data, and the output data is generated by this system.
2. The data flow diagram (DFD) is one of the most important modeling tools. It is used
to model the system components. These components are the system process, the data
used by the process, an external entity that interacts with the system and the
information flows in the system.
3. DFD shows how the information moves through the system and how it is modified by
a series of transformations. It is a graphical technique that depicts information flow
and the transformations that are applied as data moves from input to output.
4. DFD is also known as bubble chart. A DFD may be used to represent a system at any
level of abstraction. DFD may be partitioned into levels that represent increasing
information flow and functional detail.
Start
Earthquake Report
Machine Learning
Methods
Stop
USE CASE DIAGRAM:
A use case diagram in the Unified Modeling Language (UML) is a type of behavioral
diagram defined by and created from a Use-case analysis. Its purpose is to present a graphical
overview of the functionality provided by a system in terms of actors, their goals (represented
as use cases), and any dependencies between those use cases. The main purpose of a use case
diagram is to show what system functions are performed for which actor. Roles of the actors
in the system can be depicted.
Disaster
Make
Add Disaster
Report
View
System Data
Earthquake
Report
System
Machine
Learning
Input Disaster
Data
No
Invalid Data
Yes
Feature
Extraction
No
Invalid Analysis
Yes
Big Data - ML
No
Invalid Model
Yes
Disaster Dataset:
Supplies Dataset:
CHAPTER - 6
SYSTEM DEVELOPMENT
INPUT DESIGN
The input design is the link between the information system and the user. It comprises
the developing specification and procedures for data preparation and those steps are
necessary to put transaction data in to a usable form for processing can be achieved by
inspecting the computer to read data from a written or printed document or it can occur by
having people keying the data directly into the system. The design of input focuses on
controlling the amount of input required, controlling the errors, avoiding delay, avoiding
extra steps and keeping the process simple. The input is designed in such a way so that it
provides security and ease of use with retaining the privacy. Input Design considered the
following things:
OBJECTIVES
1. Input Design is the process of converting a user-oriented description of the input into a
computer-based system. This design is important to avoid errors in the data input process and
show the correct direction to the management for getting correct information from the
computerized system.
2. It is achieved by creating user-friendly screens for the data entry to handle large volume of
data. The goal of designing input is to make data entry easier and to be free from errors. The
data entry screen is designed in such a way that all the data manipulates can be performed. It
also provides record viewing facilities.
3. When the data is entered it will check for its validity. Data can be entered with the help of
screens. Appropriate messages are provided as when needed so that the user will not be in
maize of instant. Thus the objective of input design is to create an input layout that is easy to
follow.
OUTPUT DESIGN
A quality output is one, which meets the requirements of the end user and presents the
information clearly. In any system results of processing are communicated to the users and to
other system through outputs. In output design it is determined how the information is to be
displaced for immediate need and also the hard copy output. It is the most important and
direct source information to the user. Efficient and intelligent output design improves the
system’s relationship to help user decision-making.
1. Designing computer output should proceed in an organized, well thought out manner; the
right output must be developed while ensuring that each output element is designed so that
people will find the system can use easily and effectively. When analysis design computer
output, they should Identify the specific output that is needed to meet the requirements.
3. Create document, report, or other formats that contain information produced by the system.
The output form of an information system should accomplish one or more of the following
objectives.
Convey information about past activities, current status or projections of the Future.
Signal important events, opportunities, problems, or warnings.
Trigger an action.
Confirm an action.
6.2 SYSTEM STUDY
FEASIBILITY STUDY:-
The feasibility of the project is analyzed in this phase and business proposal is put
forth with a very general plan for the project and some cost estimates. During system analysis
the feasibility study of the proposed system is to be carried out. This is to ensure that the
proposed system is not a burden to the company. For feasibility analysis, some
understanding of the major requirements for the system is essential. Three key considerations
involved in the feasibility analysis are
Economical Feasibility
Technical Feasibility
Social Feasibility
ECONOMICAL FEASIBILITY:-
This study is carried out to check the economic impact that the system will have on
the organization. The amount of fund that the company can pour into the research and
development of the system is limited. The expenditures must be justified. Thus the developed
system as well within the budget and this was achieved because most of the technologies
used are freely available. Only the customized products had to be purchased.
TECHNICAL FEASIBILITY:-
This study is carried out to check the technical feasibility, that is, the technical
requirements of the system. Any system developed must not have a high demand on the
available technical resources. This will lead to high demands on the available technical
resources. This will lead to high demands being placed on the client. The developed system
must have a modest requirement, as only minimal or null changes are required for
implementing this system.
SOCIAL FEASIBILITY:-
The aspect of study is to check the level of acceptance of the system by the user. This
includes the process of training the user to use the system efficiently. The user must not feel
threatened by the system, instead must accept it as a necessity. The level of acceptance by the
users solely depends on the methods that are employed to educate the user about the system
and to make him familiar with it. His level of confidence must be raised so that he is also able
to make some constructive criticism, which is welcomed, as he is the final user of the system.
6.3 SYSTEM TESTING
The purpose of testing is to discover errors. Testing is the process of trying to discover
every conceivable fault or weakness in a work product. It provides a way to check the
functionality of components, sub assemblies, assemblies and/or a finished product it is the
process of exercising software with the intent of ensuring that the Software system meets its
requirements and user expectations and does not fail in an unacceptable manner. There are
various types of test. Each test type addresses a specific testing requirement.
TYPES OF TESTS:-
UNIT TESTING:-
Unit testing involves the design of test cases that validate that the internal program logic is
functioning properly, and that program inputs produce valid outputs. All decision branches and
internal code flow should be validated. It is the testing of individual software units of the
application .it is done after the completion of an individual unit before integration. This is a
structural testing, that relies on knowledge of its construction and is invasive. Unit tests perform
basic tests at component level and test a specific business process, application, and/or system
configuration. Unit tests ensure that each unique path of a business process performs accurately
to the documented specifications and contains clearly defined inputs and expected results.
INTEGRATION TESTING:-
Integration tests are designed to test integrated software components to determine if they
actually run as one program. Testing is event driven and is more concerned with the basic
outcome of screens or fields. Integration tests demonstrate that although the components were
individually satisfaction, as shown by successfully unit testing, the combination of components
is correct and consistent. Integration testing is specifically aimed at exposing the problems that
arise from the combination of components.
FUNCTIONAL TEST:-
Functional tests provide systematic demonstrations that functions tested are available as
specified by the business and technical requirements, system documentation, and user manuals.
Functional testing is centered on the following items:
SYSTEM TEST
System testing ensures that the entire integrated software system meets requirements. It
tests a configuration to ensure known and predictable results. An example of system testing is the
configuration oriented system integration test. System testing is based on process descriptions
and flows, emphasizing pre-driven process links and integration points.
White Box Testing is a testing in which in which the software tester has knowledge of the
inner workings, structure and language of the software, or at least its purpose. It is purpose. It is
used to test areas that cannot be reached from a black box level.
Black Box Testing is testing the software without any knowledge of the inner workings,
structure or language of the module being tested. Black box tests, as most other kinds of tests,
must be written from a definitive source document, such as specification or requirements
document, such as specification or requirements document. It is a testing in which the software
under test is treated, as a black box .you cannot “see” into it. The test provides inputs and
responds to outputs without considering how the software works.
Unit Testing:
Unit testing is usually conducted as part of a combined code and unit test phase of the
software lifecycle, although it is not uncommon for coding and unit testing to be conducted as
two distinct phases.
Test Strategy and Approach
Field testing will be performed manually and functional tests will be written in detail.
Test objectives
All field entries must work properly.
Pages must be activated from the identified link.
The entry screen, messages and responses must not be delayed.
Features to be tested
Verify that the entries are of the correct format
No duplicate entries should be allowed
All links should take the user to the correct page.
Integration Testing:
Software integration testing is the incremental integration testing of two or more
integrated software components on a single platform to produce failures caused by interface
defects. The task of the integration test is to check that components or software applications, e.g.
components in a software system or - one step up - software applications at the company level -
interact without error.
Test Results: All the test cases mentioned above passed successfully. No defects encountered.
Acceptance Testing:
User Acceptance Testing is a critical phase of any project and requires significant
participation by the end user. It also ensures that the system meets the functional requirements.
Test Results: All the test cases mentioned above passed successfully. No defects encountered.
CHAPTER - 7
APPENDICES
7.1 SCREENSHOT
Home Window:
Add Report:
[Link]:
import pandas as pd
import csv
import random
import [Link] as plt
from [Link].backend_tkagg import FigureCanvasTkAgg
import requests
import tkinter as tk
from tkinter import ttk
from PIL import Image, ImageTk
from io import BytesIO
from datetime import datetime
from sys import exit
def main_menu():
window = [Link]() #create a window
[Link]("-fullscreen", True)
[Link]("NATURAL DISASTER APPLICATION")
options_frame = [Link](window)
options_frame.place(relx=0.5, rely=0.5, anchor=[Link])
[Link]()
list_of_codes=[]
def under_rubble():
def submit_report():
global health_condition
province = (province_entry.get()).capitalize() #get the entries and assign them to a
variable(see line 102 for where we get the entry)
district = (district_entry.get()).capitalize()
street_name = (street_entry.get()).capitalize()
apartment_name = (apartment_entry.get()).capitalize()
health_condition = health_condition_combo.get()
code = code_entry.get()
if not (province and district and street_name and apartment_name and health_condition
and code):
result_label.config(text="Please fill in all fields.", fg="red")
elif len(code)!=4:
result_label.config(text="Verification code must be 4 digits long.", fg="red")
else:
if (apartment_name in pd.read_csv("[Link]")["APARTMENT
NAME"].tolist()) and (province in pd.read_csv("[Link]")["PROVINCE"].tolist())
and (district in pd.read_csv("[Link]")["DISTRICT"].tolist()) and (street_name in
pd.read_csv("[Link]")["STREET NAME"].tolist()):
result_label.config(text="A report has already been made for this apartment.",
fg="red")
else:
report = [province, district, street_name, apartment_name, health_condition,"NO
HELP YET"]
with open("[Link]", "a", newline='', encoding='utf-8') as ea:
writer = [Link](ea)
[Link](report)
window = [Link]()
[Link]("-fullscreen", True)
[Link]("I am trapped under rubble")
[Link]()
def reporting_debris():
def submit_rprt():
province = (province_entry.get()).capitalize()
district = (district_entry.get()).capitalize()
street_name = (street_entry.get()).capitalize()
apartment_name = (apartment_entry.get()).capitalize()
code = code_entry.get()
if not (province and district and street_name and apartment_name and code):
result_label.config(text="Please fill in all fields.", fg="red")
elif len(code)!=4:
result_label.config(text="Verification code must be 4 digits long.", fg="red")
else:
if (apartment_name in pd.read_csv("[Link]")["APARTMENT
NAME"].tolist()) and (province in pd.read_csv("[Link]")["PROVINCE"].tolist())
and (district in pd.read_csv("[Link]")["DISTRICT"].tolist()) and (street_name in
pd.read_csv("[Link]")["STREET NAME"].tolist()):
result_label.config(text="A report has already been made for this apartment.",
fg="red")
else:
report = [province, district, street_name, apartment_name] + ["Not Under Rubble"]
+ ["NO HELP YET"]
with open("[Link]", "a", newline='', encoding='utf-8') as ea:
writer = [Link](ea)
[Link](report)
window = [Link]()
[Link]("-fullscreen", True)
[Link]("Report A Debris")
[Link]()
def supplies():
supplies_list = []
def add_supply():
supply = (supply_entry.get()).capitalize()
if supply:
supplies_list.append(supply)
supply_entry.delete(0, [Link]) #delete the previous text from index 0 to [Link] for
adding more supplies
def submit_supply():
province = (province_entry.get()).capitalize()
district = (district_entry.get()).capitalize()
result_label.config(text="REPORT SUBMITTED")
window = [Link]()
[Link]("-fullscreen", True)
[Link]("Supply Request")
[Link]()
options_frame = [Link](window)
options_frame.place(relx=0.5, rely=0.5, anchor="center")
[Link]()
def report():
def show_most_requested_supplies():
supply_dict = {}
for supply in pd.read_csv("[Link]")["NEEDED SUPPLY"]:
supply_dict[supply] = supply_dict.get(supply, 0) + 1 #supply_dict.get(supply, 0) if
supply key does not exist, assign 0
def show_report_distribution_by_city():
province_dict = {}
for province in pd.read_csv("[Link]")["PROVINCE"]:
province_dict[province] = province_dict.get(province, 0) + 1
window = [Link]()
[Link]("-fullscreen", True)
[Link]("Report Menu")
button_frame = [Link](window)
button_frame.pack()
[Link]()
def show_report_table():
#it is better to print and see how these look like, so you can understand the code better
dict_of_file = pd.read_csv("[Link]").to_dict("list")
list_of_status = dict_of_file["REPORT STATUS"]
for i in range(len(list_of_status)):
if list_of_status[i] != "HELP ARRIVED" :
else:
list_of_status[i] = [Link](["HELP ARRIVED","NO HELP YET","NO
HELP YET","NO HELP YET","NO HELP YET"]) # increasing the probability of "No Help
Yet" to make the program more realistic
def help_code():
global help_code_window
result_label=[Link](help_code_window,text="",font=("Arial",12))
result_label.pack(pady=10)
def submit_help_code(help_code_entry,result_label):
selected_item = [Link]()
item_text = [str(e) for e in [Link](selected_item)["values"]] #integers in the
treeview are converted to strings
if len(help_code_entry) != 4:
result_label.config(text="The verification code must be 4 digits.", fg="red")
else:
result_label.config(text="The verification code is incorrect.", fg="red")
def show_in_map():
selected_item = [Link]()
if selected_item:
item_text = [Link](selected_item)["values"]
location = f"{item_text[0]}, {item_text[1]}, {item_text[2]}"
show_map(location) #calling the function to show the map
def show_map(location):
api_key = "AIzaSyDZVEC3l5lA53c2JyVdEYmziytllm8f-s4"
url = f"[Link]
center={location}&zoom=13&size=400x300&markers=color:red
%7C{location}&key={api_key}"
def on_item_select(event):
selected_item = [Link]()
if selected_item:
item_text = [Link](selected_item)["values"]
if item_text[5] == "HELP ARRIVED":
#[Link](state=[Link])
help_button.config(state=[Link]) #the help button is disabled because the
help has already arrived
else:
#[Link](state=[Link])
help_button.config(state=[Link])
window = [Link]()
[Link]("-fullscreen", True)
[Link]("NATURAL DISASTER APPLICATION")
treeview = [Link](window)
[Link](fill="both", expand=True)
data = pd.read_csv("[Link]")
treeview["columns"] = list([Link])
[Link]("#0", text="Index", anchor="w") #"w" means west so heading is left
aligned
button_frame = [Link](window)
button_frame.pack(pady=10)
help_button=[Link](button_frame,text="Verify Help
Code",command=help_code,width=30,height=2,state=[Link])
help_button.pack(padx=5,side=[Link])
[Link]()
def show_supply_table():
window = [Link]()
[Link]("-fullscreen", True)
[Link]("Supply Report Data")
treeview = [Link](window)
[Link](fill="both", expand=True)
data = pd.read_csv("[Link]")
treeview["columns"] = list([Link])
[Link]("#0", text="Index", anchor="w")
button = [Link](window, text="Return To Upper Menu", command=admin_menu,
width=30, height=2, bg="crimson")
[Link](pady=5)
index = 1
for _, row in [Link]():
values = [Link]()
[Link]("", "end", text=index, values=values)
index += 1
[Link]()
#------------------------#
earthquake_data = []
def recent_earthquakes():
def fetch_earthquake_data():
global earthquake_data
url = "[Link]
infos = {
"format": "geojson",
"minmagnitude": "2.5",
"limit": "5",
#coordinates of Delhi
"minlatitude": "33.15",
"maxlatitude": "35.0",
"minlongitude": "78.82",
"maxlongitude": "85.0"
}
window = [Link]()
[Link]("-fullscreen", True)
[Link]("Real-Time Earthquake Data")
data_text = [Link](window, font=("Courier New", 12))
data_text.pack(fill=[Link], expand=True) #filling the whole window
for x in debris_data:
if x == debris_data[0]:
continue
else:
list_of_codes.append(x[0:4]+["1234"])
with open('[Link]','w', newline='',encoding='utf-8') as file1:
supply_data = [['PROVINCE', 'DISTRICT', 'NEEDED SUPPLY'],
['Assam', 'Goalpara', 'Food']]
writer = [Link](file1)
[Link](supply_data)
main_menu()
CHAPTER - 8
CONCLUSION
In analyzing the recent achievements associated with leveraging Big Data to disaster
management, this paper has presented the findings of several researchers on varied scientific
and technological perspectives that have a bearing on the efficacy of big data in facilitating
disaster management. It has become apparent that in the present age of information
technology, a major objective of scientists is to analyze the varied aspects of big data and find
ways of making the best of the available technologies in storing the available information in
well-integrated structures and using it for the welfare of human societies, particularly in the
context of using bid data to effectively deal with natural disasters. The paper has analyzed
major big data sources that are valuable in disaster management. A detailed analysis has been
conducted to highlight the significance of different big data sources in various disaster
management phases. The main challenges pertain to effectively dealing with data collection
and management technologies and developing efficient systems of mitigating the adversities
associated with natural disasters and managing disasters in ways that result in minimum
losses to human lives and property. Other challenges pertain to developing algorithms by way
of systems that can be used in resolving operational issues and attaining greater accuracy in
predicting disasters. The paper has highlighted the need for further research on big data
applications in enhancing the efficiency of the public sector in further developing technology
to mitigate the adverse effects of natural disasters. Overall, further research efforts need to be
made to look into the challenges emerging from Big Sensing Data, particularly in the context
of the emerging data volume of streaming videos, including efficient data management, fast
data transfer, and intuitive data visualization.
CHAPTER - 9
FUTURE WORK
According to researchers the standardization and application of IoT, data formats and
data specifications, big data management and accessibility with information systems, which
are subjects of further research in the near future. Some authors even concluded that future
development will include system enhancement with more sensor numbers, improved fog
layer computing and actual cloud virtual instance data deployment.
CHAPTER - 10
REFERENCE
[2] Tuswadi and T. Hayashi, “Disaster Prevention Education in Merapi Volcano Area
Primary Schools: Focusing on Students’ Perception and Teachers’ Performance,” Procedia
Environ. Sci., vol. 20, pp. 668–677, 2021.
[5] I. A. T. Hashem, I. Yaqoob, N. B. Anuar, S. Mokhtar, A. Gani, and S. Ullah Khan, “The
rise of ‘big data’ on cloud computing: Review and open research issues,” Inf. Syst., vol. 47,
pp. 98–115, 2021.
[6] M. Yu, C. Yang, and Y. Li, “Big Data in Natural Disaster Management: A Review,”
Geosciences, vol. 8, no. 5, p. 165, 2020.