In [1]:
import os
import folium

print(folium.__version__)
0.5.0+27.g2d457b0.dirty

How to draw a GeoPandas.GeoDataFrame into folium

GeoPandas is a project to add support for geographic data to pandas 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.

In [2]:
import geopandas

nybb = os.path.join('data', 'nybb.shp')

boros = geopandas.GeoDataFrame.from_file(nybb)

boros
Out[2]:
BoroCode BoroName Shape_Leng Shape_Area geometry
0 5 Staten Island 330454.175933 1.623847e+09 (POLYGON ((970217.0223999023 145643.3322143555...
1 3 Brooklyn 741227.337073 1.937810e+09 (POLYGON ((1021176.479003906 151374.7969970703...
2 4 Queens 896875.396449 3.045079e+09 (POLYGON ((1029606.076599121 156073.8142089844...
3 1 Manhattan 358400.912836 6.364308e+08 (POLYGON ((981219.0557861328 188655.3157958984...
4 2 Bronx 464475.145651 1.186822e+09 (POLYGON ((1012821.805786133 229228.2645874023...

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
Out[3]: