Skip to content

Commit 41a441a

Browse files
authored
Merge pull request #660 from acrosby/wms-timedim
Wms TimeDimension Example Notebook, and some minor fixes
2 parents d9dfb85 + eb792bc commit 41a441a

3 files changed

Lines changed: 116 additions & 2 deletions

File tree

examples/WmsTimeDimension.ipynb

Lines changed: 114 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,114 @@
1+
{
2+
"cells": [
3+
{
4+
"cell_type": "code",
5+
"execution_count": 2,
6+
"metadata": {
7+
"collapsed": false,
8+
"deletable": true,
9+
"editable": true
10+
},
11+
"outputs": [
12+
{
13+
"name": "stdout",
14+
"output_type": "stream",
15+
"text": [
16+
"0.4.0.dev0\n"
17+
]
18+
}
19+
],
20+
"source": [
21+
"import os\n",
22+
"import folium\n",
23+
"from folium import features, plugins\n",
24+
"import datetime\n",
25+
"print(folium.__version__)"
26+
]
27+
},
28+
{
29+
"cell_type": "code",
30+
"execution_count": 14,
31+
"metadata": {
32+
"collapsed": false,
33+
"deletable": true,
34+
"editable": true
35+
},
36+
"outputs": [
37+
{
38+
"data": {
39+
"text/html": [
40+
"<div style=\"width:100%;\"><div style=\"position:relative;width:100%;height:0;padding-bottom:60%;\"><iframe src=\"data:text/html;charset=utf-8;base64,PCFET0NUWVBFIGh0bWw+CjxoZWFkPiAgICAKICAgIDxtZXRhIGh0dHAtZXF1aXY9ImNvbnRlbnQtdHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04IiAvPgogICAgPHNjcmlwdD5MX1BSRUZFUl9DQU5WQVMgPSBmYWxzZTsgTF9OT19UT1VDSCA9IGZhbHNlOyBMX0RJU0FCTEVfM0QgPSBmYWxzZTs8L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSJodHRwczovL3VucGtnLmNvbS9sZWFmbGV0QDEuMC4xL2Rpc3QvbGVhZmxldC5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9hamF4Lmdvb2dsZWFwaXMuY29tL2FqYXgvbGlicy9qcXVlcnkvMS4xMS4xL2pxdWVyeS5taW4uanMiPjwvc2NyaXB0PgogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vbWF4Y2RuLmJvb3RzdHJhcGNkbi5jb20vYm9vdHN0cmFwLzMuMi4wL2pzL2Jvb3RzdHJhcC5taW4uanMiPjwvc2NyaXB0PgogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vY2RuanMuY2xvdWRmbGFyZS5jb20vYWpheC9saWJzL0xlYWZsZXQuYXdlc29tZS1tYXJrZXJzLzIuMC4yL2xlYWZsZXQuYXdlc29tZS1tYXJrZXJzLmpzIj48L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2NkbmpzLmNsb3VkZmxhcmUuY29tL2FqYXgvbGlicy9sZWFmbGV0Lm1hcmtlcmNsdXN0ZXIvMS4wLjAvbGVhZmxldC5tYXJrZXJjbHVzdGVyLXNyYy5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9jZG5qcy5jbG91ZGZsYXJlLmNvbS9hamF4L2xpYnMvbGVhZmxldC5tYXJrZXJjbHVzdGVyLzEuMC4wL2xlYWZsZXQubWFya2VyY2x1c3Rlci5qcyI+PC9zY3JpcHQ+CiAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Imh0dHBzOi8vdW5wa2cuY29tL2xlYWZsZXRAMS4wLjEvZGlzdC9sZWFmbGV0LmNzcyIgLz4KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9tYXhjZG4uYm9vdHN0cmFwY2RuLmNvbS9ib290c3RyYXAvMy4yLjAvY3NzL2Jvb3RzdHJhcC5taW4uY3NzIiAvPgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL21heGNkbi5ib290c3RyYXBjZG4uY29tL2Jvb3RzdHJhcC8zLjIuMC9jc3MvYm9vdHN0cmFwLXRoZW1lLm1pbi5jc3MiIC8+CiAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Imh0dHBzOi8vbWF4Y2RuLmJvb3RzdHJhcGNkbi5jb20vZm9udC1hd2Vzb21lLzQuNi4zL2Nzcy9mb250LWF3ZXNvbWUubWluLmNzcyIgLz4KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9jZG5qcy5jbG91ZGZsYXJlLmNvbS9hamF4L2xpYnMvTGVhZmxldC5hd2Vzb21lLW1hcmtlcnMvMi4wLjIvbGVhZmxldC5hd2Vzb21lLW1hcmtlcnMuY3NzIiAvPgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL2NkbmpzLmNsb3VkZmxhcmUuY29tL2FqYXgvbGlicy9sZWFmbGV0Lm1hcmtlcmNsdXN0ZXIvMS4wLjAvTWFya2VyQ2x1c3Rlci5EZWZhdWx0LmNzcyIgLz4KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9jZG5qcy5jbG91ZGZsYXJlLmNvbS9hamF4L2xpYnMvbGVhZmxldC5tYXJrZXJjbHVzdGVyLzEuMC4wL01hcmtlckNsdXN0ZXIuY3NzIiAvPgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL3Jhd2dpdC5jb20vcHl0aG9uLXZpc3VhbGl6YXRpb24vZm9saXVtL21hc3Rlci9mb2xpdW0vdGVtcGxhdGVzL2xlYWZsZXQuYXdlc29tZS5yb3RhdGUuY3NzIiAvPgogICAgPHN0eWxlPmh0bWwsIGJvZHkge3dpZHRoOiAxMDAlO2hlaWdodDogMTAwJTttYXJnaW46IDA7cGFkZGluZzogMDt9PC9zdHlsZT4KICAgIDxzdHlsZT4jbWFwIHtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDtyaWdodDowO2xlZnQ6MDt9PC9zdHlsZT4KICAgIAogICAgICAgICAgICA8c3R5bGU+ICNtYXBfMzJiNzE5NDk3MDBlNGY2NTg1YTYzN2U4YTQ5OTNmMzQgewogICAgICAgICAgICAgICAgcG9zaXRpb24gOiByZWxhdGl2ZTsKICAgICAgICAgICAgICAgIHdpZHRoIDogMTAwLjAlOwogICAgICAgICAgICAgICAgaGVpZ2h0OiAxMDAuMCU7CiAgICAgICAgICAgICAgICBsZWZ0OiAwLjAlOwogICAgICAgICAgICAgICAgdG9wOiAwLjAlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICA8L3N0eWxlPgogICAgICAgIAogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vY2RuanMuY2xvdWRmbGFyZS5jb20vYWpheC9saWJzL2pxdWVyeS8yLjAuMC9qcXVlcnkubWluLmpzIj48L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2NkbmpzLmNsb3VkZmxhcmUuY29tL2FqYXgvbGlicy9qcXVlcnl1aS8xLjEwLjIvanF1ZXJ5LXVpLm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9yYXdnaXQuY29tL25lemFzYS9pc284NjAxLWpzLXBlcmlvZC9tYXN0ZXIvaXNvODYwMS5taW4uanMiPjwvc2NyaXB0PgogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vcmF3Z2l0LmNvbS9zb2NpYi9MZWFmbGV0LlRpbWVEaW1lbnNpb24vbWFzdGVyL2Rpc3QvbGVhZmxldC50aW1lZGltZW5zaW9uLm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Imh0dHBzOi8vY2RuanMuY2xvdWRmbGFyZS5jb20vYWpheC9saWJzL2hpZ2hsaWdodC5qcy84LjQvc3R5bGVzL2RlZmF1bHQubWluLmNzcyIgLz4KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cDovL2FwcHMuc29jaWIuZXMvTGVhZmxldC5UaW1lRGltZW5zaW9uL2Rpc3QvbGVhZmxldC50aW1lZGltZW5zaW9uLmNvbnRyb2wubWluLmNzcyIgLz4KPC9oZWFkPgo8Ym9keT4gICAgCiAgICAKICAgICAgICAgICAgPGRpdiBjbGFzcz0iZm9saXVtLW1hcCIgaWQ9Im1hcF8zMmI3MTk0OTcwMGU0ZjY1ODVhNjM3ZThhNDk5M2YzNCIgPjwvZGl2PgogICAgICAgIAo8L2JvZHk+CjxzY3JpcHQ+ICAgIAogICAgCgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBzb3V0aFdlc3QgPSBMLmxhdExuZygtOTAsIC0xODApOwogICAgICAgICAgICAgICAgdmFyIG5vcnRoRWFzdCA9IEwubGF0TG5nKDkwLCAxODApOwogICAgICAgICAgICAgICAgdmFyIGJvdW5kcyA9IEwubGF0TG5nQm91bmRzKHNvdXRoV2VzdCwgbm9ydGhFYXN0KTsKICAgICAgICAgICAgCgogICAgICAgICAgICB2YXIgbWFwXzMyYjcxOTQ5NzAwZTRmNjU4NWE2MzdlOGE0OTkzZjM0ID0gTC5tYXAoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbWFwXzMyYjcxOTQ5NzAwZTRmNjU4NWE2MzdlOGE0OTkzZjM0JywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtjZW50ZXI6IFs2MCwtMTQ1XSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHpvb206IDYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhCb3VuZHM6IGJvdW5kcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxheWVyczogW10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3b3JsZENvcHlKdW1wOiBmYWxzZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyczogTC5DUlMuRVBTRzM4NTcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIEwuY29udHJvbC5zY2FsZSgpLmFkZFRvKG1hcF8zMmI3MTk0OTcwMGU0ZjY1ODVhNjM3ZThhNDk5M2YzNCk7CiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHRpbGVfbGF5ZXJfNjkyMmQ5NjNhMWYxNGRkOWJmODIxMTkxNjM5ZTliNDUgPSBMLnRpbGVMYXllcigKICAgICAgICAgICAgICAgICdodHRwczovL3tzfS50aWxlLm9wZW5zdHJlZXRtYXAub3JnL3t6fS97eH0ve3l9LnBuZycsCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgbWF4Wm9vbTogMTgsCiAgICAgICAgICAgICAgICAgICAgbWluWm9vbTogMSwKICAgICAgICAgICAgICAgICAgICBjb250aW51b3VzV29ybGQ6IGZhbHNlLAogICAgICAgICAgICAgICAgICAgIG5vV3JhcDogZmFsc2UsCiAgICAgICAgICAgICAgICAgICAgYXR0cmlidXRpb246ICdEYXRhIGJ5IDxhIGhyZWY9Imh0dHA6Ly9vcGVuc3RyZWV0bWFwLm9yZyI+T3BlblN0cmVldE1hcDwvYT4sIHVuZGVyIDxhIGhyZWY9Imh0dHA6Ly93d3cub3BlbnN0cmVldG1hcC5vcmcvY29weXJpZ2h0Ij5PRGJMPC9hPi4nLAogICAgICAgICAgICAgICAgICAgIGRldGVjdFJldGluYTogZmFsc2UsCiAgICAgICAgICAgICAgICAgICAgc3ViZG9tYWluczogJ2FiYycKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF8zMmI3MTk0OTcwMGU0ZjY1ODVhNjM3ZThhNDk5M2YzNCk7CgogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBtYWNyb19lbGVtZW50X2Y3NzJlNTQ2OThiZDQxZWZhMDRkODI0MGNiMGRhMjZkID0gTC50aWxlTGF5ZXIud21zKAogICAgICAgICAgICAgICAgJ2h0dHBzOi8vZGF0YS5heGRzLmNvL25jV01TL3dtcycsCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgQ09MT1JTQ0FMRVJBTkdFOiAnMCwyJywKICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICBsYXllcnM6ICdUQU1VX1NXQU5fUFdTL0hzJywKICAgICAgICAgICAgICAgICAgICBzdHlsZXM6ICdib3hmaWxsL3JhaW5ib3cnLAogICAgICAgICAgICAgICAgICAgIGZvcm1hdDogJ2ltYWdlL3BuZycsCiAgICAgICAgICAgICAgICAgICAgdHJhbnNwYXJlbnQ6IHRydWUsCiAgICAgICAgICAgICAgICAgICAgdmVyc2lvbjogJzEuMS4xJywKICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF8zMmI3MTk0OTcwMGU0ZjY1ODVhNjM3ZThhNDk5M2YzNCk7CgogICAgICAgIAogICAgCiAgICAgICAgICAgIG1hcF8zMmI3MTk0OTcwMGU0ZjY1ODVhNjM3ZThhNDk5M2YzNC50aW1lRGltZW5zaW9uID0gTC50aW1lRGltZW5zaW9uKHsKICAgICAgICAgICAgICAgIHBlcmlvZDoiUFQzSCIsCiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIHRpbWVJbnRlcnZhbDogIjIwMTEtMTItMTZUMTk6MDAvMjAxMy0wOS0xM1QwODowMCIsCiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICBtYXBfMzJiNzE5NDk3MDBlNGY2NTg1YTYzN2U4YTQ5OTNmMzQudGltZURpbWVuc2lvbkNvbnRyb2wgPSBMLmNvbnRyb2wudGltZURpbWVuc2lvbih7CiAgICAgICAgICAgICAgICBwb3NpdGlvbjogJ2JvdHRvbWxlZnQnLAogICAgICAgICAgICAgICAgYXV0b1BsYXk6IGZhbHNlLAogICAgICAgICAgICAgICAgcGxheWVyT3B0aW9uczogewogICAgICAgICAgICAgICAgICAgIHRyYW5zaXRpb25UaW1lOiAyMDAsCiAgICAgICAgICAgICAgICAgICAgbG9vcDogZmFsc2V9CiAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIG1hcF8zMmI3MTk0OTcwMGU0ZjY1ODVhNjM3ZThhNDk5M2YzNC5hZGRDb250cm9sKG1hcF8zMmI3MTk0OTcwMGU0ZjY1ODVhNjM3ZThhNDk5M2YzNC50aW1lRGltZW5zaW9uQ29udHJvbCk7CgogICAgICAgICAgICAKICAgICAgICAgICAgdmFyIG1hY3JvX2VsZW1lbnRfZjc3MmU1NDY5OGJkNDFlZmEwNGQ4MjQwY2IwZGEyNmQgPSBMLnRpbWVEaW1lbnNpb24ubGF5ZXIud21zKG1hY3JvX2VsZW1lbnRfZjc3MmU1NDY5OGJkNDFlZmEwNGQ4MjQwY2IwZGEyNmQsCiAgICAgICAgICAgICAgICB7dXBkYXRlVGltZURpbWVuc2lvbjogZmFsc2UsCiAgICAgICAgICAgICAgICAgd21zVmVyc2lvbjogJzEuMS4xJywKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzMyYjcxOTQ5NzAwZTRmNjU4NWE2MzdlOGE0OTkzZjM0KTsKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGxheWVyX2NvbnRyb2xfNzNmMGMwMzI5YTg5NGNlNjgxYmFkYWZlMDJmYzg2NjEgPSB7CiAgICAgICAgICAgICAgICBiYXNlX2xheWVycyA6IHsgIm9wZW5zdHJlZXRtYXAiIDogdGlsZV9sYXllcl82OTIyZDk2M2ExZjE0ZGQ5YmY4MjExOTE2MzllOWI0NSwgfSwKICAgICAgICAgICAgICAgIG92ZXJsYXlzIDogeyAiQU9PUyBIUyIgOiBtYWNyb19lbGVtZW50X2Y3NzJlNTQ2OThiZDQxZWZhMDRkODI0MGNiMGRhMjZkLCB9CiAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICBMLmNvbnRyb2wubGF5ZXJzKAogICAgICAgICAgICAgICAgbGF5ZXJfY29udHJvbF83M2YwYzAzMjlhODk0Y2U2ODFiYWRhZmUwMmZjODY2MS5iYXNlX2xheWVycywKICAgICAgICAgICAgICAgIGxheWVyX2NvbnRyb2xfNzNmMGMwMzI5YTg5NGNlNjgxYmFkYWZlMDJmYzg2NjEub3ZlcmxheXMsCiAgICAgICAgICAgICAgICB7cG9zaXRpb246ICd0b3ByaWdodCcsCiAgICAgICAgICAgICAgICAgY29sbGFwc2VkOiB0cnVlLAogICAgICAgICAgICAgICAgIGF1dG9aSW5kZXg6IHRydWUKICAgICAgICAgICAgICAgIH0pLmFkZFRvKG1hcF8zMmI3MTk0OTcwMGU0ZjY1ODVhNjM3ZThhNDk5M2YzNCk7CiAgICAgICAgCjwvc2NyaXB0Pg==\" style=\"position:absolute;width:100%;height:100%;left:0;top:0;border:none !important;\" allowfullscreen webkitallowfullscreen mozallowfullscreen></iframe></div></div>"
41+
],
42+
"text/plain": [
43+
"<folium.folium.Map at 0x7fad6d926a50>"
44+
]
45+
},
46+
"execution_count": 14,
47+
"metadata": {},
48+
"output_type": "execute_result"
49+
}
50+
],
51+
"source": [
52+
"m = folium.Map([60, -145],\n",
53+
" zoom_start=6, \n",
54+
" control_scale=True)\n",
55+
"\n",
56+
"server = \"https://data.axds.co/ncWMS/wms\"\n",
57+
"w = []\n",
58+
"\n",
59+
"w.append(features.WmsTileLayer(\n",
60+
" server,\n",
61+
" name=\"AOOS HS\",\n",
62+
" styles=\"boxfill/rainbow\",\n",
63+
" format=\"image/png\",\n",
64+
" transparent=True,\n",
65+
" layers=\"TAMU_SWAN_PWS/Hs\",\n",
66+
" COLORSCALERANGE=\"0,2\",\n",
67+
"))\n",
68+
"\n",
69+
"for wi in w:\n",
70+
" wi.add_to(m)\n",
71+
"\n",
72+
"time = plugins.TimestampedWmsTileLayers(w, period=\"PT3H\", time_interval=\"2011-12-16T19:00/2013-09-13T08:00\")\n",
73+
"time.add_to(m)\n",
74+
"\n",
75+
"\n",
76+
"folium.LayerControl().add_to(m)\n",
77+
"\n",
78+
"\n",
79+
"m\n",
80+
"\n"
81+
]
82+
},
83+
{
84+
"cell_type": "code",
85+
"execution_count": null,
86+
"metadata": {
87+
"collapsed": true
88+
},
89+
"outputs": [],
90+
"source": []
91+
}
92+
],
93+
"metadata": {
94+
"kernelspec": {
95+
"display_name": "Python 2",
96+
"language": "python",
97+
"name": "python2"
98+
},
99+
"language_info": {
100+
"codemirror_mode": {
101+
"name": "ipython",
102+
"version": 2
103+
},
104+
"file_extension": ".py",
105+
"mimetype": "text/x-python",
106+
"name": "python",
107+
"nbconvert_exporter": "python",
108+
"pygments_lexer": "ipython2",
109+
"version": "2.7.12"
110+
}
111+
},
112+
"nbformat": 4,
113+
"nbformat_minor": 2
114+
}

folium/plugins/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,5 +31,5 @@
3131
'Fullscreen',
3232
'PolyLineTextPath',
3333
'FloatImage',
34-
'TimestampedWmsTileLayer'
34+
'TimestampedWmsTileLayers'
3535
]

folium/plugins/timestamped_wmstilelayer.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@
2828

2929
class TimestampedWmsTileLayers(Layer):
3030
def __init__(self, data, transition_time=200, loop=False, auto_play=False,
31-
period="P1D", time_interval=False):
31+
period='P1D', time_interval=False):
3232
"""Creates a TimestampedWmsTileLayer subclass of Layer that takes a
3333
WmsTileLayer and adds time control with the Leaflet.TimeDimension
3434
plugin.

0 commit comments

Comments
 (0)