{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Exploring the WMS with OWSLib"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "surface_flag\n",
      "CRW_DHW\n",
      "CRW_HOTSPOT\n",
      "CRW_SST\n",
      "CRW_SSTANOMALY\n"
     ]
    }
   ],
   "source": [
    "from owslib.wms import WebMapService\n",
    "\n",
    "\n",
    "url = 'http://oos.soest.hawaii.edu/thredds/wms/hioos/satellite/dhw_5km'\n",
    "\n",
    "web_map_services = WebMapService(url)\n",
    "\n",
    "print('\\n'.join(web_map_services.contents.keys()))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Layer metadata"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "layer = 'CRW_SST'\n",
    "wms = web_map_services.contents[layer]\n",
    "\n",
    "name = wms.title\n",
    "\n",
    "lon = (wms.boundingBox[0] + wms.boundingBox[2]) / 2.\n",
    "lat = (wms.boundingBox[1] + wms.boundingBox[3]) / 2.\n",
    "center = lat, lon\n",
    "\n",
    "time_interval = '{0}/{1}'.format(\n",
    "    wms.timepositions[0].strip(),\n",
    "    wms.timepositions[-1].strip()\n",
    ")\n",
    "style = 'boxfill/sst_36'\n",
    "\n",
    "if style not in wms.styles:\n",
    "    style = None"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Single layer"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<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+CjxoZWFkPiAgICAKICAgIDxtZXRhIGh0dHAtZXF1aXY9ImNvbnRlbnQtdHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04IiAvPgogICAgPHNjcmlwdD5MX1BSRUZFUl9DQU5WQVMgPSBmYWxzZTsgTF9OT19UT1VDSCA9IGZhbHNlOyBMX0RJU0FCTEVfM0QgPSBmYWxzZTs8L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL2xlYWZsZXRAMS4yLjAvZGlzdC9sZWFmbGV0LmpzIj48L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2FqYXguZ29vZ2xlYXBpcy5jb20vYWpheC9saWJzL2pxdWVyeS8xLjExLjEvanF1ZXJ5Lm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9tYXhjZG4uYm9vdHN0cmFwY2RuLmNvbS9ib290c3RyYXAvMy4yLjAvanMvYm9vdHN0cmFwLm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9jZG5qcy5jbG91ZGZsYXJlLmNvbS9hamF4L2xpYnMvTGVhZmxldC5hd2Vzb21lLW1hcmtlcnMvMi4wLjIvbGVhZmxldC5hd2Vzb21lLW1hcmtlcnMuanMiPjwvc2NyaXB0PgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL2xlYWZsZXRAMS4yLjAvZGlzdC9sZWFmbGV0LmNzcyIgLz4KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9tYXhjZG4uYm9vdHN0cmFwY2RuLmNvbS9ib290c3RyYXAvMy4yLjAvY3NzL2Jvb3RzdHJhcC5taW4uY3NzIiAvPgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL21heGNkbi5ib290c3RyYXBjZG4uY29tL2Jvb3RzdHJhcC8zLjIuMC9jc3MvYm9vdHN0cmFwLXRoZW1lLm1pbi5jc3MiIC8+CiAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Imh0dHBzOi8vbWF4Y2RuLmJvb3RzdHJhcGNkbi5jb20vZm9udC1hd2Vzb21lLzQuNi4zL2Nzcy9mb250LWF3ZXNvbWUubWluLmNzcyIgLz4KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9jZG5qcy5jbG91ZGZsYXJlLmNvbS9hamF4L2xpYnMvTGVhZmxldC5hd2Vzb21lLW1hcmtlcnMvMi4wLjIvbGVhZmxldC5hd2Vzb21lLW1hcmtlcnMuY3NzIiAvPgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL3Jhd2dpdC5jb20vcHl0aG9uLXZpc3VhbGl6YXRpb24vZm9saXVtL21hc3Rlci9mb2xpdW0vdGVtcGxhdGVzL2xlYWZsZXQuYXdlc29tZS5yb3RhdGUuY3NzIiAvPgogICAgPHN0eWxlPmh0bWwsIGJvZHkge3dpZHRoOiAxMDAlO2hlaWdodDogMTAwJTttYXJnaW46IDA7cGFkZGluZzogMDt9PC9zdHlsZT4KICAgIDxzdHlsZT4jbWFwIHtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDtyaWdodDowO2xlZnQ6MDt9PC9zdHlsZT4KICAgIAogICAgICAgICAgICA8c3R5bGU+ICNtYXBfYjk3NGIxY2U1M2I5NGM2NmFjNDRiNmI5ODE5NTk3ODkgewogICAgICAgICAgICAgICAgcG9zaXRpb24gOiByZWxhdGl2ZTsKICAgICAgICAgICAgICAgIHdpZHRoIDogMTAwLjAlOwogICAgICAgICAgICAgICAgaGVpZ2h0OiAxMDAuMCU7CiAgICAgICAgICAgICAgICBsZWZ0OiAwLjAlOwogICAgICAgICAgICAgICAgdG9wOiAwLjAlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICA8L3N0eWxlPgogICAgICAgIAogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vY2RuanMuY2xvdWRmbGFyZS5jb20vYWpheC9saWJzL2pxdWVyeS8yLjAuMC9qcXVlcnkubWluLmpzIj48L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2NkbmpzLmNsb3VkZmxhcmUuY29tL2FqYXgvbGlicy9qcXVlcnl1aS8xLjEwLjIvanF1ZXJ5LXVpLm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9yYXdnaXQuY29tL25lemFzYS9pc284NjAxLWpzLXBlcmlvZC9tYXN0ZXIvaXNvODYwMS5taW4uanMiPjwvc2NyaXB0PgogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vcmF3Z2l0LmNvbS9zb2NpYi9MZWFmbGV0LlRpbWVEaW1lbnNpb24vbWFzdGVyL2Rpc3QvbGVhZmxldC50aW1lZGltZW5zaW9uLm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Imh0dHBzOi8vY2RuanMuY2xvdWRmbGFyZS5jb20vYWpheC9saWJzL2hpZ2hsaWdodC5qcy84LjQvc3R5bGVzL2RlZmF1bHQubWluLmNzcyIgLz4KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cDovL2FwcHMuc29jaWIuZXMvTGVhZmxldC5UaW1lRGltZW5zaW9uL2Rpc3QvbGVhZmxldC50aW1lZGltZW5zaW9uLmNvbnRyb2wubWluLmNzcyIgLz4KPC9oZWFkPgo8Ym9keT4gICAgCiAgICAKICAgICAgICAgICAgPGRpdiBjbGFzcz0iZm9saXVtLW1hcCIgaWQ9Im1hcF9iOTc0YjFjZTUzYjk0YzY2YWM0NGI2Yjk4MTk1OTc4OSIgPjwvZGl2PgogICAgICAgIAo8L2JvZHk+CjxzY3JpcHQ+ICAgIAogICAgCgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBib3VuZHMgPSBudWxsOwogICAgICAgICAgICAKCiAgICAgICAgICAgIHZhciBtYXBfYjk3NGIxY2U1M2I5NGM2NmFjNDRiNmI5ODE5NTk3ODkgPSBMLm1hcCgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdtYXBfYjk3NGIxY2U1M2I5NGM2NmFjNDRiNmI5ODE5NTk3ODknLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2NlbnRlcjogWy00MCwtNTBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgem9vbTogNSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heEJvdW5kczogYm91bmRzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF5ZXJzOiBbXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdvcmxkQ29weUp1bXA6IGZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JzOiBMLkNSUy5FUFNHMzg1NwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgTC5jb250cm9sLnNjYWxlKCkuYWRkVG8obWFwX2I5NzRiMWNlNTNiOTRjNjZhYzQ0YjZiOTgxOTU5Nzg5KTsKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgdGlsZV9sYXllcl9kZjUwZDgxYjk3ZmM0MDI5OTA1MWNhYzE0ZGE4YzQ4NiA9IEwudGlsZUxheWVyKAogICAgICAgICAgICAgICAgJ2h0dHBzOi8ve3N9LnRpbGUub3BlbnN0cmVldG1hcC5vcmcve3p9L3t4fS97eX0ucG5nJywKICAgICAgICAgICAgICAgIHsKICAiYXR0cmlidXRpb24iOiBudWxsLAogICJkZXRlY3RSZXRpbmEiOiBmYWxzZSwKICAibWF4Wm9vbSI6IDE4LAogICJtaW5ab29tIjogMSwKICAibm9XcmFwIjogZmFsc2UsCiAgInN1YmRvbWFpbnMiOiAiYWJjIgp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF9iOTc0YjFjZTUzYjk0YzY2YWM0NGI2Yjk4MTk1OTc4OSk7CiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIG1hY3JvX2VsZW1lbnRfZThmMTEyODQxMTAyNGE2Yjk4ZjdmZjcwOGVhNTE4YzcgPSBMLnRpbGVMYXllci53bXMoCiAgICAgICAgICAgICAgICAnaHR0cDovL29vcy5zb2VzdC5oYXdhaWkuZWR1L3RocmVkZHMvd21zL2hpb29zL3NhdGVsbGl0ZS9kaHdfNWttJywKICAgICAgICAgICAgICAgIHsKICAiYXR0cmlidXRpb24iOiAiIiwKICAiY3JzIjogbnVsbCwKICAiZm9ybWF0IjogImltYWdlL3BuZyIsCiAgImxheWVycyI6ICJDUldfU1NUIiwKICAic3R5bGVzIjogImJveGZpbGwvc3N0XzM2IiwKICAidHJhbnNwYXJlbnQiOiB0cnVlLAogICJ1cHBlcmNhc2UiOiBmYWxzZSwKICAidmVyc2lvbiI6ICIxLjEuMSIKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfYjk3NGIxY2U1M2I5NGM2NmFjNDRiNmI5ODE5NTk3ODkpOwoKICAgICAgICAKICAgIAogICAgICAgICAgICBtYXBfYjk3NGIxY2U1M2I5NGM2NmFjNDRiNmI5ODE5NTk3ODkudGltZURpbWVuc2lvbiA9IEwudGltZURpbWVuc2lvbih7CiAgICAgICAgICAgICAgICBwZXJpb2Q6IlBUMUgiLAogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB0aW1lSW50ZXJ2YWw6ICIyMDEzLTA2LTAzVDEyOjAwOjAwLjAwMFovMjAxNy0wOS0yMFQxMjowMDowMC4wMDBaIiwKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIG1hcF9iOTc0YjFjZTUzYjk0YzY2YWM0NGI2Yjk4MTk1OTc4OS50aW1lRGltZW5zaW9uQ29udHJvbCA9IEwuY29udHJvbC50aW1lRGltZW5zaW9uKHsKICAgICAgICAgICAgICAgIHBvc2l0aW9uOiAnYm90dG9tbGVmdCcsCiAgICAgICAgICAgICAgICBhdXRvUGxheTogZmFsc2UsCiAgICAgICAgICAgICAgICBwbGF5ZXJPcHRpb25zOiB7CiAgICAgICAgICAgICAgICAgICAgdHJhbnNpdGlvblRpbWU6IDIwMCwKICAgICAgICAgICAgICAgICAgICBsb29wOiBmYWxzZX0KICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgbWFwX2I5NzRiMWNlNTNiOTRjNjZhYzQ0YjZiOTgxOTU5Nzg5LmFkZENvbnRyb2wobWFwX2I5NzRiMWNlNTNiOTRjNjZhYzQ0YjZiOTgxOTU5Nzg5LnRpbWVEaW1lbnNpb25Db250cm9sKTsKCiAgICAgICAgICAgIAogICAgICAgICAgICB2YXIgbWFjcm9fZWxlbWVudF9lOGYxMTI4NDExMDI0YTZiOThmN2ZmNzA4ZWE1MThjNyA9IEwudGltZURpbWVuc2lvbi5sYXllci53bXMobWFjcm9fZWxlbWVudF9lOGYxMTI4NDExMDI0YTZiOThmN2ZmNzA4ZWE1MThjNywKICAgICAgICAgICAgICAgIHt1cGRhdGVUaW1lRGltZW5zaW9uOiBmYWxzZSwKICAgICAgICAgICAgICAgICB3bXNWZXJzaW9uOiAnJywKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwX2I5NzRiMWNlNTNiOTRjNjZhYzQ0YjZiOTgxOTU5Nzg5KTsKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGxheWVyX2NvbnRyb2xfY2I0MDFhYzQyMzFlNGQzMmJlMWNkZjdmZGFlOTc3ZjYgPSB7CiAgICAgICAgICAgICAgICBiYXNlX2xheWVycyA6IHsgIm9wZW5zdHJlZXRtYXAiIDogdGlsZV9sYXllcl9kZjUwZDgxYjk3ZmM0MDI5OTA1MWNhYzE0ZGE4YzQ4NiwgfSwKICAgICAgICAgICAgICAgIG92ZXJsYXlzIDogeyAic2VhX3N1cmZhY2VfdGVtcGVyYXR1cmUiIDogbWFjcm9fZWxlbWVudF9lOGYxMTI4NDExMDI0YTZiOThmN2ZmNzA4ZWE1MThjNywgfQogICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgTC5jb250cm9sLmxheWVycygKICAgICAgICAgICAgICAgIGxheWVyX2NvbnRyb2xfY2I0MDFhYzQyMzFlNGQzMmJlMWNkZjdmZGFlOTc3ZjYuYmFzZV9sYXllcnMsCiAgICAgICAgICAgICAgICBsYXllcl9jb250cm9sX2NiNDAxYWM0MjMxZTRkMzJiZTFjZGY3ZmRhZTk3N2Y2Lm92ZXJsYXlzLAogICAgICAgICAgICAgICAge3Bvc2l0aW9uOiAndG9wcmlnaHQnLAogICAgICAgICAgICAgICAgIGNvbGxhcHNlZDogdHJ1ZSwKICAgICAgICAgICAgICAgICBhdXRvWkluZGV4OiB0cnVlCiAgICAgICAgICAgICAgICB9KS5hZGRUbyhtYXBfYjk3NGIxY2U1M2I5NGM2NmFjNDRiNmI5ODE5NTk3ODkpOwogICAgICAgIAo8L3NjcmlwdD4=\" style=\"position:absolute;width:100%;height:100%;left:0;top:0;border:none !important;\" allowfullscreen webkitallowfullscreen mozallowfullscreen></iframe></div></div>"
      ],
      "text/plain": [
       "<folium.folium.Map at 0x7ff4a9b6a588>"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "import folium\n",
    "from folium import plugins\n",
    "\n",
    "lon, lat = -50, -40\n",
    "\n",
    "m = folium.Map(\n",
    "    location=[lat, lon],\n",
    "    zoom_start=5,\n",
    "    control_scale=True\n",
    ")\n",
    "\n",
    "w = folium.raster_layers.WmsTileLayer(\n",
    "    url=url,\n",
    "    name=name,\n",
    "    styles=style,\n",
    "    fmt='image/png',\n",
    "    transparent=True,\n",
    "    layers=layer,\n",
    "    overlay=True,\n",
    "    COLORSCALERANGE='1.2,28',\n",
    ")\n",
    "\n",
    "w.add_to(m)\n",
    "\n",
    "time = plugins.TimestampedWmsTileLayers(\n",
    "    w,\n",
    "    period='PT1H',\n",
    "    time_interval=time_interval\n",
    ")\n",
    "\n",
    "time.add_to(m)\n",
    "\n",
    "folium.LayerControl().add_to(m)\n",
    "\n",
    "m"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Multiple layers"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<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+CjxoZWFkPiAgICAKICAgIDxtZXRhIGh0dHAtZXF1aXY9ImNvbnRlbnQtdHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04IiAvPgogICAgPHNjcmlwdD5MX1BSRUZFUl9DQU5WQVMgPSBmYWxzZTsgTF9OT19UT1VDSCA9IGZhbHNlOyBMX0RJU0FCTEVfM0QgPSBmYWxzZTs8L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL2xlYWZsZXRAMS4yLjAvZGlzdC9sZWFmbGV0LmpzIj48L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2FqYXguZ29vZ2xlYXBpcy5jb20vYWpheC9saWJzL2pxdWVyeS8xLjExLjEvanF1ZXJ5Lm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9tYXhjZG4uYm9vdHN0cmFwY2RuLmNvbS9ib290c3RyYXAvMy4yLjAvanMvYm9vdHN0cmFwLm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9jZG5qcy5jbG91ZGZsYXJlLmNvbS9hamF4L2xpYnMvTGVhZmxldC5hd2Vzb21lLW1hcmtlcnMvMi4wLjIvbGVhZmxldC5hd2Vzb21lLW1hcmtlcnMuanMiPjwvc2NyaXB0PgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL2xlYWZsZXRAMS4yLjAvZGlzdC9sZWFmbGV0LmNzcyIgLz4KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9tYXhjZG4uYm9vdHN0cmFwY2RuLmNvbS9ib290c3RyYXAvMy4yLjAvY3NzL2Jvb3RzdHJhcC5taW4uY3NzIiAvPgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL21heGNkbi5ib290c3RyYXBjZG4uY29tL2Jvb3RzdHJhcC8zLjIuMC9jc3MvYm9vdHN0cmFwLXRoZW1lLm1pbi5jc3MiIC8+CiAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Imh0dHBzOi8vbWF4Y2RuLmJvb3RzdHJhcGNkbi5jb20vZm9udC1hd2Vzb21lLzQuNi4zL2Nzcy9mb250LWF3ZXNvbWUubWluLmNzcyIgLz4KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9jZG5qcy5jbG91ZGZsYXJlLmNvbS9hamF4L2xpYnMvTGVhZmxldC5hd2Vzb21lLW1hcmtlcnMvMi4wLjIvbGVhZmxldC5hd2Vzb21lLW1hcmtlcnMuY3NzIiAvPgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL3Jhd2dpdC5jb20vcHl0aG9uLXZpc3VhbGl6YXRpb24vZm9saXVtL21hc3Rlci9mb2xpdW0vdGVtcGxhdGVzL2xlYWZsZXQuYXdlc29tZS5yb3RhdGUuY3NzIiAvPgogICAgPHN0eWxlPmh0bWwsIGJvZHkge3dpZHRoOiAxMDAlO2hlaWdodDogMTAwJTttYXJnaW46IDA7cGFkZGluZzogMDt9PC9zdHlsZT4KICAgIDxzdHlsZT4jbWFwIHtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDtyaWdodDowO2xlZnQ6MDt9PC9zdHlsZT4KICAgIAogICAgICAgICAgICA8c3R5bGU+ICNtYXBfNTU1MDU4NTg0YjUwNGJjMWI0NDg1YWUwNmVhNmQ1OGUgewogICAgICAgICAgICAgICAgcG9zaXRpb24gOiByZWxhdGl2ZTsKICAgICAgICAgICAgICAgIHdpZHRoIDogMTAwLjAlOwogICAgICAgICAgICAgICAgaGVpZ2h0OiAxMDAuMCU7CiAgICAgICAgICAgICAgICBsZWZ0OiAwLjAlOwogICAgICAgICAgICAgICAgdG9wOiAwLjAlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICA8L3N0eWxlPgogICAgICAgIAogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vY2RuanMuY2xvdWRmbGFyZS5jb20vYWpheC9saWJzL2pxdWVyeS8yLjAuMC9qcXVlcnkubWluLmpzIj48L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2NkbmpzLmNsb3VkZmxhcmUuY29tL2FqYXgvbGlicy9qcXVlcnl1aS8xLjEwLjIvanF1ZXJ5LXVpLm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9yYXdnaXQuY29tL25lemFzYS9pc284NjAxLWpzLXBlcmlvZC9tYXN0ZXIvaXNvODYwMS5taW4uanMiPjwvc2NyaXB0PgogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vcmF3Z2l0LmNvbS9zb2NpYi9MZWFmbGV0LlRpbWVEaW1lbnNpb24vbWFzdGVyL2Rpc3QvbGVhZmxldC50aW1lZGltZW5zaW9uLm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Imh0dHBzOi8vY2RuanMuY2xvdWRmbGFyZS5jb20vYWpheC9saWJzL2hpZ2hsaWdodC5qcy84LjQvc3R5bGVzL2RlZmF1bHQubWluLmNzcyIgLz4KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cDovL2FwcHMuc29jaWIuZXMvTGVhZmxldC5UaW1lRGltZW5zaW9uL2Rpc3QvbGVhZmxldC50aW1lZGltZW5zaW9uLmNvbnRyb2wubWluLmNzcyIgLz4KPC9oZWFkPgo8Ym9keT4gICAgCiAgICAKICAgICAgICAgICAgPGRpdiBjbGFzcz0iZm9saXVtLW1hcCIgaWQ9Im1hcF81NTUwNTg1ODRiNTA0YmMxYjQ0ODVhZTA2ZWE2ZDU4ZSIgPjwvZGl2PgogICAgICAgIAo8L2JvZHk+CjxzY3JpcHQ+ICAgIAogICAgCgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBib3VuZHMgPSBudWxsOwogICAgICAgICAgICAKCiAgICAgICAgICAgIHZhciBtYXBfNTU1MDU4NTg0YjUwNGJjMWI0NDg1YWUwNmVhNmQ1OGUgPSBMLm1hcCgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdtYXBfNTU1MDU4NTg0YjUwNGJjMWI0NDg1YWUwNmVhNmQ1OGUnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2NlbnRlcjogWy00MCwtNTBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgem9vbTogNSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heEJvdW5kczogYm91bmRzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF5ZXJzOiBbXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdvcmxkQ29weUp1bXA6IGZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JzOiBMLkNSUy5FUFNHMzg1NwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgTC5jb250cm9sLnNjYWxlKCkuYWRkVG8obWFwXzU1NTA1ODU4NGI1MDRiYzFiNDQ4NWFlMDZlYTZkNThlKTsKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgdGlsZV9sYXllcl9lOTVlMThjNzFiYTg0MzgxOTIyODc4OWViMGE3NjVjOSA9IEwudGlsZUxheWVyKAogICAgICAgICAgICAgICAgJ2h0dHBzOi8ve3N9LnRpbGUub3BlbnN0cmVldG1hcC5vcmcve3p9L3t4fS97eX0ucG5nJywKICAgICAgICAgICAgICAgIHsKICAiYXR0cmlidXRpb24iOiBudWxsLAogICJkZXRlY3RSZXRpbmEiOiBmYWxzZSwKICAibWF4Wm9vbSI6IDE4LAogICJtaW5ab29tIjogMSwKICAibm9XcmFwIjogZmFsc2UsCiAgInN1YmRvbWFpbnMiOiAiYWJjIgp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF81NTUwNTg1ODRiNTA0YmMxYjQ0ODVhZTA2ZWE2ZDU4ZSk7CiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIG1hY3JvX2VsZW1lbnRfZjIxMjM5Mjc4MThmNGYwNmIzMTYzODlmN2U1MDAzNWUgPSBMLnRpbGVMYXllci53bXMoCiAgICAgICAgICAgICAgICAnaHR0cDovL29vcy5zb2VzdC5oYXdhaWkuZWR1L3RocmVkZHMvd21zL2hpb29zL3NhdGVsbGl0ZS9kaHdfNWttJywKICAgICAgICAgICAgICAgIHsKICAiYXR0cmlidXRpb24iOiAiIiwKICAiY3JzIjogbnVsbCwKICAiZm9ybWF0IjogImltYWdlL3BuZyIsCiAgImxheWVycyI6ICJDUldfU1NUIiwKICAic3R5bGVzIjogImJveGZpbGwvc3N0XzM2IiwKICAidHJhbnNwYXJlbnQiOiB0cnVlLAogICJ1cHBlcmNhc2UiOiBmYWxzZSwKICAidmVyc2lvbiI6ICIxLjEuMSIKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfNTU1MDU4NTg0YjUwNGJjMWI0NDg1YWUwNmVhNmQ1OGUpOwoKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgbWFjcm9fZWxlbWVudF8xOTc2YWU1ZmZmN2Q0NDVhYjJkYjhkOTI5OGMzODI0OSA9IEwudGlsZUxheWVyLndtcygKICAgICAgICAgICAgICAgICdodHRwOi8vb29zLnNvZXN0Lmhhd2FpaS5lZHUvdGhyZWRkcy93bXMvaGlvb3Mvc2F0ZWxsaXRlL2Rod181a20nLAogICAgICAgICAgICAgICAgewogICJhdHRyaWJ1dGlvbiI6ICIiLAogICJjcnMiOiBudWxsLAogICJmb3JtYXQiOiAiaW1hZ2UvcG5nIiwKICAibGF5ZXJzIjogIkNSV19TU1RBTk9NQUxZIiwKICAic3R5bGVzIjogImJveGZpbGwvc3N0XzM2IiwKICAidHJhbnNwYXJlbnQiOiB0cnVlLAogICJ1cHBlcmNhc2UiOiBmYWxzZSwKICAidmVyc2lvbiI6ICIxLjEuMSIKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfNTU1MDU4NTg0YjUwNGJjMWI0NDg1YWUwNmVhNmQ1OGUpOwoKICAgICAgICAKICAgIAogICAgICAgICAgICBtYXBfNTU1MDU4NTg0YjUwNGJjMWI0NDg1YWUwNmVhNmQ1OGUudGltZURpbWVuc2lvbiA9IEwudGltZURpbWVuc2lvbih7CiAgICAgICAgICAgICAgICBwZXJpb2Q6IlBUMUgiLAogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB0aW1lSW50ZXJ2YWw6ICIyMDEzLTA2LTAzVDEyOjAwOjAwLjAwMFovMjAxNy0wOS0yMFQxMjowMDowMC4wMDBaIiwKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIG1hcF81NTUwNTg1ODRiNTA0YmMxYjQ0ODVhZTA2ZWE2ZDU4ZS50aW1lRGltZW5zaW9uQ29udHJvbCA9IEwuY29udHJvbC50aW1lRGltZW5zaW9uKHsKICAgICAgICAgICAgICAgIHBvc2l0aW9uOiAnYm90dG9tbGVmdCcsCiAgICAgICAgICAgICAgICBhdXRvUGxheTogZmFsc2UsCiAgICAgICAgICAgICAgICBwbGF5ZXJPcHRpb25zOiB7CiAgICAgICAgICAgICAgICAgICAgdHJhbnNpdGlvblRpbWU6IDIwMCwKICAgICAgICAgICAgICAgICAgICBsb29wOiBmYWxzZX0KICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgbWFwXzU1NTA1ODU4NGI1MDRiYzFiNDQ4NWFlMDZlYTZkNThlLmFkZENvbnRyb2wobWFwXzU1NTA1ODU4NGI1MDRiYzFiNDQ4NWFlMDZlYTZkNThlLnRpbWVEaW1lbnNpb25Db250cm9sKTsKCiAgICAgICAgICAgIAogICAgICAgICAgICB2YXIgbWFjcm9fZWxlbWVudF9mMjEyMzkyNzgxOGY0ZjA2YjMxNjM4OWY3ZTUwMDM1ZSA9IEwudGltZURpbWVuc2lvbi5sYXllci53bXMobWFjcm9fZWxlbWVudF9mMjEyMzkyNzgxOGY0ZjA2YjMxNjM4OWY3ZTUwMDM1ZSwKICAgICAgICAgICAgICAgIHt1cGRhdGVUaW1lRGltZW5zaW9uOiBmYWxzZSwKICAgICAgICAgICAgICAgICB3bXNWZXJzaW9uOiAnJywKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzU1NTA1ODU4NGI1MDRiYzFiNDQ4NWFlMDZlYTZkNThlKTsKICAgICAgICAgICAgCiAgICAgICAgICAgIHZhciBtYWNyb19lbGVtZW50XzE5NzZhZTVmZmY3ZDQ0NWFiMmRiOGQ5Mjk4YzM4MjQ5ID0gTC50aW1lRGltZW5zaW9uLmxheWVyLndtcyhtYWNyb19lbGVtZW50XzE5NzZhZTVmZmY3ZDQ0NWFiMmRiOGQ5Mjk4YzM4MjQ5LAogICAgICAgICAgICAgICAge3VwZGF0ZVRpbWVEaW1lbnNpb246IGZhbHNlLAogICAgICAgICAgICAgICAgIHdtc1ZlcnNpb246ICcnLAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfNTU1MDU4NTg0YjUwNGJjMWI0NDg1YWUwNmVhNmQ1OGUpOwogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgbGF5ZXJfY29udHJvbF9iZjFmZjY4OGE5ZDk0YWJjYTU2MWMzNjUzZmI3MTg1MCA9IHsKICAgICAgICAgICAgICAgIGJhc2VfbGF5ZXJzIDogeyAib3BlbnN0cmVldG1hcCIgOiB0aWxlX2xheWVyX2U5NWUxOGM3MWJhODQzODE5MjI4Nzg5ZWIwYTc2NWM5LCB9LAogICAgICAgICAgICAgICAgb3ZlcmxheXMgOiB7ICJzZWFfc3VyZmFjZV90ZW1wZXJhdHVyZSIgOiBtYWNyb19lbGVtZW50X2YyMTIzOTI3ODE4ZjRmMDZiMzE2Mzg5ZjdlNTAwMzVlLCJhbmFseXNlZCBzZWEgc3VyZmFjZSB0ZW1wZXJhdHVyZSBhbm9tYWx5IiA6IG1hY3JvX2VsZW1lbnRfMTk3NmFlNWZmZjdkNDQ1YWIyZGI4ZDkyOThjMzgyNDksIH0KICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgIEwuY29udHJvbC5sYXllcnMoCiAgICAgICAgICAgICAgICBsYXllcl9jb250cm9sX2JmMWZmNjg4YTlkOTRhYmNhNTYxYzM2NTNmYjcxODUwLmJhc2VfbGF5ZXJzLAogICAgICAgICAgICAgICAgbGF5ZXJfY29udHJvbF9iZjFmZjY4OGE5ZDk0YWJjYTU2MWMzNjUzZmI3MTg1MC5vdmVybGF5cywKICAgICAgICAgICAgICAgIHtwb3NpdGlvbjogJ3RvcHJpZ2h0JywKICAgICAgICAgICAgICAgICBjb2xsYXBzZWQ6IHRydWUsCiAgICAgICAgICAgICAgICAgYXV0b1pJbmRleDogdHJ1ZQogICAgICAgICAgICAgICAgfSkuYWRkVG8obWFwXzU1NTA1ODU4NGI1MDRiYzFiNDQ4NWFlMDZlYTZkNThlKTsKICAgICAgICAKPC9zY3JpcHQ+\" style=\"position:absolute;width:100%;height:100%;left:0;top:0;border:none !important;\" allowfullscreen webkitallowfullscreen mozallowfullscreen></iframe></div></div>"
      ],
      "text/plain": [
       "<folium.folium.Map at 0x7ff48f737668>"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "m = folium.Map(\n",
    "    location=[lat, lon],\n",
    "    zoom_start=5,\n",
    "    control_scale=True\n",
    ")\n",
    "\n",
    "w0 = folium.raster_layers.WmsTileLayer(\n",
    "    url=url,\n",
    "    name='sea_surface_temperature',\n",
    "    styles=style,\n",
    "    fmt='image/png',\n",
    "    transparent=True,\n",
    "    layers='CRW_SST',\n",
    "    overlay=True,\n",
    ")\n",
    "\n",
    "w1 = folium.raster_layers.WmsTileLayer(\n",
    "    url=url,\n",
    "    name='analysed sea surface temperature anomaly',\n",
    "    styles=style,\n",
    "    fmt='image/png',\n",
    "    transparent=True,\n",
    "    layers='CRW_SSTANOMALY',\n",
    "    overlay=True,\n",
    ")\n",
    "\n",
    "w0.add_to(m)\n",
    "w1.add_to(m)\n",
    "\n",
    "time = folium.plugins.TimestampedWmsTileLayers(\n",
    "    [w0, w1],\n",
    "    period='PT1H',\n",
    "    time_interval=time_interval\n",
    ")\n",
    "\n",
    "time.add_to(m)\n",
    "\n",
    "folium.LayerControl().add_to(m)\n",
    "\n",
    "m"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.2"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}