Picture of our presentation site
sample code of our python script
Picture of ArcGIS API
We have always wanted to create something that can improve the lives of others. We were thinking of certain issues that have been happening in this world and one that came to our mind was ForestFires. Fires in general, are very detrimental to society. They can split families and friends apart, destroy lives, destroy the atmosphere, and this is not only for humans, but for other animals as well. According to Insurance information institute, " Beginning October 6 and continuing until October 25, eight counties in Northern California were hit by a devastating outbreak of wildfires which led to at least 23 fatalities, burned 245,000 acres and destroyed over 8,700 structures." . This shows the affect of forest fires on society.
What it does
FireFall project aims at proactively predicting potential fires in various US zipcode based on existing weather conditions and other factors described later.
In this project, the FireFall team were able acquire some data from Kaggle related to weather.
However, the team's research found that insufficient; hence, added two more essential factors: first, native animal concentration to each region second, number of campers in the area. The FireFall team, developed a risk score (from 1 to 10) based on the above data, where 10 is the highest risk. Due to lack of real data, the team wrote a simulation engine in python to randomly generate data that feeds to the rating engine. all data is stored in postgres relational database and displayed in realtime (set refresh rate) in grafana. the team also integrated into ARCGIS API to zoom on the area of highest fire risk.
How we built it
We started out by downloading the OpenSource Data,
The ForestFire Data set from Kaggle.
All the unique US ZipCodes Data from federalGov website. This includes long, lat, primary city, state.
The zipcode table was enhanced to include the main native animal and normal density percentage and the normal camper density percentage. We then uploaded each data set into a table on a DataBase server using Postgres. We had to have simulated data so that we could show the Risk Score being outputted, because we did not have adequate technology for sensors to receive data, so we generated our own simulation data with a python script and updated it onto the DataBase via a Python Script. This python script generates the simulated data, finds associates it with a zipcode, and develops a Risk Score from 1-10 based on the data we have. This python script outputs a simulated row of data every 5 seconds We then wanted to output the data analytically and a simple and visually pleasing manner, so we used Grafana We uploaded a dashboard for the Risk, which has the simplified simulated data along with the Risk score so that the user may adequately prepare for when a forest fire is about to happen. We also added extra data that we believe would help find the risk score of a fire, such as camper percentage, and certain animal percentage. Grafana refreshed every 5 seconds to output each simulated row of data. We also have a dashboard of the actually simulated data that is updated with the risk score, so that the user may understand what is happening at these certain areas, such as the temperature, the windspeed, humidity... After we had that setup, we wanted to add a API called ArcGIS to accompany our project. The idea behind using ArcGIS was to show a map of the areas with forest fires that are predicted to happen, along side humidity, temperature, animal population. This is the perfect chance for us to use this API because it works hand in hand with our idea. This is where we ran into the bulk of our issue, addressed in challenges section. We needed to use PHP to fetch the data points from the Postgres server. We then used HTML to output the the data, and called the ArcGIS API.
Challenges we ran into
Challenges that we ran into was lack of knowledge, for one. We are new to creating projects such as this, so learning how to access databases using SQL, and Postgres was a learning curve. Also righting a python script that can access a DataBase was a challenge but luckily there was a library that simplified it for us. A big challenge that we faced was lack of team members. We initially were going to have 4 team members, and we had a general game plane beforehand. One who will make a site for the project, one who will find resources needed such as data and knows Machine Learning and how to implement API's. Those two teammate however were not able to show up on the day of the hackathon so we were left with two people. We did out best to pull this project off. Adding ArcGIS to out project was one of our biggest challenges. We could not find a simple way of adding a database to ArcGIS using python, so we had to resort to using HTML and PHP. We initially wanted to put ArcGIS on either our website, or Grafana, and spend a good amount of time trying to figure out how, but decided to find another way. We created a HTML site, and used PHP to access the points. We then used ArcGIS to visualize the data. This was a big learning curve.
Accomplishments that I'm proud of
We are proud of the fact that we entered this hackathon and created a project that would have a great impact on
society and improve the world. ForestFires are no joke and can really change the habitat of this world, so we are
proud to have created a project that can help prevent these sort of things. We are also proud of creating a python script that works together with a DataBase and Grafana in unison to output Data that is easy to read
What I learned
We learned how a project can should be put together effectively, what to do, and what not to do. We learned that problems will be faced and sometimes they can not be fixed and we have to find new solutions due to the time limits. We learned how to create a database using SQL, how to alter it with Python, and how to output the data from the DataBase on Grafana. We learned how to implement a API using HTML, and PHP to access data points from the server, and output it on a map using ArcGIS
What's next for FireFall
The idea behind FireFall is using open source data to find that when certain conditions are met, something is wrong and someone needs to be alerted. The better the Data is, the better the program. FireFall could be used not only for ForestFires, but any situation where someone needs to be alerted. Such as if a volcanoes is about to erupt, a earthquake, even whether someone with asthma would get triggered by the environmental factors. We created a nice use of opensource data to solve a real world problem, and with different data, we could solve similar data. In the future, we can add new datapoints to further advance our project and make sure ForestFires are preventable and easily avoidable.