Python | Adding markers to volcano locations using folium package


Python is a multipurpose language and its utilities extend to more than just normal programming. It can be used to develop games, crawl the internet, or develop deep learning models.

We’ll be using the Python library named folium (with Pandas) along with the Volcanoes_USA dataset (which contains the necessary data used in this project). The script will create a saved web page. Upon opening it the user will be directed to google maps, where the locations of the volcanoes will be marked, their colors set according to the elevation.

Setup:
First, Install libraries like folium, pandas, and the dataset mention above:

pip3 install folium
pip3 install pandas

Now, you need to download the required dataset, Volcanoes_USA.txt. Remember to download this in the same directory in which you will save the Python script. Also, do remove the apostrophes “‘” from the values of the ‘NAME’ column in the dataset, wherever present.

Pre-defined functions:

  • Mean() – A pandas function which can calculate the mean of the values of in an array/Series.
  • Map() – Generate a base map of given width and height with either default tilesets or a custom tileset URL.
  • Marker() – Create a simple stock Leaflet marker on the map, with optional popup text or Vincent visualization.

User defined functions :

  • color() – used to assign color to the marker according to the elevation of volcano.

Below is the implementation:

filter_none

edit
close

play_arrow

link
brightness_4
code

#import the necesssary packages
import folium
import pandas as pd
  
# importing the dataset as a csv file,
# and storing it as a dataframe in 'df'
df=pd.read_csv('Volcanoes.txt')
  
# calculating the mean of the latitudes
# and longitudes of the locations of volcanoes
latmean=df['LAT'].mean()
lonmean=df['LON'].mean()
  
# Creating a map object using Map() function.
# Location parameter takes latitudes and
# longitudes as starting location.
# (Map will be centered at those co-ordinates) 
map5 = folium.Map(location=[latmean,lonmean],
        zoom_start=6,tiles = 'Mapbox bright')
          
# Function to change the marker color 
# according to the elevation of volcano
def color(elev):
    if elev in range(0,1000):
        col = 'green'
    elif elev in range(1001,1999):
        col = 'blue'
    elif elev in range(2000,2999):
        col = 'orange'
    else:
        col='red'
    return col
      
# Iterating over the LAT,LON,NAME and
# ELEV columns simultaneously using zip()
for lat,lan,name,elev in zip(df['LAT'],df['LON'],df['NAME'],df['ELEV']):
    # Marker() takes location coordinates 
    # as a list as an argument
    folium.Marker(location=[lat,lan],popup = name,
                  icon= folium.Icon(color=color(elev),
                  icon_color='yellow',icon = 'cloud')).add_to(map5)
                    
# Save the file created above
print(map5.save('test7.html'))

chevron_right


Output:

Reference:
http://python-visualization.github.io/folium/docs-v0.5.0/modules.html



My Personal Notes arrow_drop_up

Check out this Author's contributed articles.

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.




Article Tags :

3


Please write to us at contribute@geeksforgeeks.org to report any issue with the above content.