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 [1]:
%matplotlib inline
import geopandas
import sys
sys.path.insert(0,'..')
import folium
folium.__file__
Out[1]:
In this example, we'll use the same file as GeoPandas demo ; it's containing the boroughs of New York City.
In [2]:
boros = geopandas.GeoDataFrame.from_file('nybb.shp')
boros
Out[2]:
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
Out[3]:
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'},
]
In [5]:
boros
Out[5]:
In [6]:
m = folium.Map([40.7,-74], zoom_start=10, tiles='cartodbpositron')
folium.GeoJson(boros).add_to(m)
m
Out[6]:
That's all folks !
Hope it'll be useful to you. Don't hesitate to provide a feedback on what can be improved, which method do you prefer, etc.