#!/usr/bin/env python # coding: utf-8 # In[1]: # This is to import the repository's version of folium ; not the installed one. import sys, os sys.path.insert(0,'..') # In[2]: from folium import features # ### WMS # In[3]: m = features.Map([40,-100], zoom_start=4) w = features.WmsTileLayer("http://mesonet.agron.iastate.edu/cgi-bin/wms/nexrad/n0r.cgi", name='test', format='image/png', layers='nexrad-n0r-900913', attribution=u"Weather data © 2012 IEM Nexrad", transparent=True) w.add_to(m) m # ### Marker, Icon, Popup # In[4]: f = features.Figure(figsize=(8,8)) m = features.Map([0,0], zoom_start=1) mk = features.Marker([0,0]) pp = features.Popup("hello") ic = features.Icon(color='red') f.add_children(m) mk.add_children(ic) mk.add_children(pp) m.add_children(mk) f # ### RegularPolygonMarker # In[5]: f = features.Figure() m = features.Map([0,0], zoom_start=1) mk = features.RegularPolygonMarker([0,0]) mk2 = features.RegularPolygonMarker([0,45]) f.add_children(m) m.add_children(mk) m.add_children(mk2) f # ### Vega stuff # In[6]: import vincent, json import numpy as np N=100 multi_iter2 = {'x' : np.random.uniform(size=(N,)), 'y' : np.random.uniform(size=(N,)), } scatter = vincent.Scatter(multi_iter2, iter_idx='x', height=100, width=200) data = json.loads(scatter.to_json()) f = features.Figure() m = features.Map([0,0], zoom_start=1) mk = features.Marker([0,0]) p = features.Popup("Hello") v = features.Vega(data, width="100%", height="100%") f.add_children(m) mk.add_children(p) p.add_children(v) m.add_children(mk) f # ### Vega div # In[7]: import vincent, json import numpy as np N=100 multi_iter2 = {'x' : np.random.uniform(size=(N,)), 'y' : np.random.uniform(size=(N,)), } scatter = vincent.Scatter(multi_iter2, iter_idx='x', height=400, width=600) data = json.loads(scatter.to_json()) f = features.Figure() v = features.Vega(data, height=40, width=600) f.add_children(v) f # ### A div and a Map # # In[8]: import vincent, json import numpy as np N=100 multi_iter2 = {'x' : np.random.uniform(size=(N,)), 'y' : np.random.uniform(size=(N,)), } scatter = vincent.Scatter(multi_iter2, iter_idx='x', height=250, width=420) data = json.loads(scatter.to_json()) f = features.Figure() # Create two maps m = features.Map([0,0], tiles='stamenwatercolor', zoom_start=1, position='absolute', left="0%", width="50%", height="50%") m2 = features.Map([46,3], tiles='mapquestopen', zoom_start=4, position='absolute', left="50%", width="50%", height='50%',top='50%') # Create two Vega v = features.Vega(data, position='absolute', left="50%", width="50%", height="50%") v2 = features.Vega(data, position='absolute', left="0%", width="50%", height="50%", top='50%') f.add_children(m) f.add_children(m2) f.add_children(v) f.add_children(v2) f # ### GeoJson # In[9]: N=1000 lons = +5 - np.random.normal(size=N) lats = 48 - np.random.normal(size=N) data = { "type": "FeatureCollection", "features": [ { "type": "Feature", "geometry": { "type": "MultiPoint", "coordinates": [[lon, lat] for (lat,lon) in zip(lats,lons)], }, "properties": {"prop0": "value0"} }, ], } m = features.Map([48.,5.], zoom_start=6) m.add_children(features.GeoJson(data)) m # ### Marker Cluster # In[10]: N = 100 data = np.array([ np.random.uniform(low=35,high=60, size=N), # random latitudes in Europe np.random.uniform(low=-12,high=30, size=N), # random longitudes in Europe range(N), # popups are simple numbers ]).T m = features.Map([45.,3.], zoom_start=4) mc = features.MarkerCluster() for i in range(N): mk = features.Marker([data[i][0],data[i][1]]) p = features.Popup(str(data[i][2])) mk.add_children(p) mc.add_children(mk) m.add_children(mc) m # ### Div # In[11]: import vincent, json import numpy as np N=100 multi_iter2 = {'x' : np.random.uniform(size=(N,)), 'y' : np.random.uniform(size=(N,)), } scatter = vincent.Scatter(multi_iter2, iter_idx='x', height=250, width=420) data = json.loads(scatter.to_json()) f = features.Figure() d1 = f.add_subplot(1,2,1) d2 = f.add_subplot(1,2,2) d1.add_children(features.Map([0,0], tiles='stamenwatercolor', zoom_start=1)) d2.add_children(features.Map([46,3], tiles='mapquestopen', zoom_start=5)) f # ### Choropleth # In[12]: import pandas as pd import json geojson_data = json.load(open('us-states.json')) sd = pd.read_csv('US_Unemployment_Oct2012.csv').set_index('State')['Unemployment'].to_dict() f = features.Figure() m = features.Map([43,-100], zoom_start=4) g = features.GeoJson(geojson_data) f.add_children(m) m.add_children(g) g.add_children(features.GeoJsonStyle([3.0, 7.0, 8.0, 9.0, 9.0], 'YlGn', sd, key_on='feature.id')) f # ### Boat marker # In[13]: from folium.features import * # ### LayerControl # ### ScrollZoomToggler # ### Terminator # ### Timestamped GeoJson # ### ImageOverlay # ### Timestamped ImageOverlay # In[ ]: