#!/usr/bin/env python # coding: utf-8 # In[1]: import os import folium print(folium.__version__) # # How to draw a GeoPandas.GeoDataFrame into folium # # GeoPandas is a project to add support for geographic data to [pandas](http://pandas.pydata.org) objects. # (See https://github.com/geopandas/geopandas) # # It provides (among other cool things) a `GeoDataFrame` object that represents a Feature collection. # When you have one, you may be willing to use it on a folium map. Here's the simplest way to do so. # In this example, we'll use the same file as GeoPandas demo ; it's containing # [the boroughs of New York City](http://www.nyc.gov/html/dcp/download/bytes/nybb_14aav.zip). # In[2]: import geopandas nybb = os.path.join('data', 'nybb.shp') boros = geopandas.GeoDataFrame.from_file(nybb) boros # To create a map with these features, simply put them in a `GeoJson`: # In[3]: m = folium.Map([40.7, -74], zoom_start=10, tiles='cartodbpositron') folium.GeoJson(boros).add_to(m) m.save(os.path.join('results', 'geopandas_0.html')) m # Quite easy. # # Well, you can also take advantage of your `GeoDataFrame` structure to set the style of the data. For this, just create a column `style` containing each feature's style in a dictionnary. # In[4]: boros['style'] = [ {'fillColor': '#ff0000', 'weight': 2, 'color': 'black'}, {'fillColor': '#00ff00', 'weight': 2, 'color': 'black'}, {'fillColor': '#0000ff', 'weight': 2, 'color': 'black'}, {'fillColor': '#ffff00', 'weight': 2, 'color': 'black'}, {'fillColor': '#00ffff', 'weight': 2, 'color': 'black'}, ] boros # In[5]: m = folium.Map([40.7, -74], zoom_start=10, tiles='cartodbpositron') folium.GeoJson(boros).add_to(m) m.save(os.path.join('results', 'geopandas_1.html')) m