{ "cells": [ { "cell_type": "code", "execution_count": 1, "id": "e61c1164", "metadata": { "execution": { "iopub.execute_input": "2024-03-26T14:35:07.715898Z", "iopub.status.busy": "2024-03-26T14:35:07.715830Z", "iopub.status.idle": "2024-03-26T14:35:08.083396Z", "shell.execute_reply": "2024-03-26T14:35:08.083091Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "The geodata is provided by © OpenStreetMap contributors and is made available here under the Open Database License (ODbL).\n" ] }, { "data": { "text/html": [ "\n", "
\n", " \n", " " ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import ipywidgets as widgets\n", "\n", "import geopandas as gpd\n", "\n", "from lets_plot.geo_data import *\n", "from lets_plot import *\n", "LetsPlot.setup_html()" ] }, { "cell_type": "code", "execution_count": 2, "id": "216c860e", "metadata": { "execution": { "iopub.execute_input": "2024-03-26T14:35:08.084771Z", "iopub.status.busy": "2024-03-26T14:35:08.084628Z", "iopub.status.idle": "2024-03-26T14:35:08.091583Z", "shell.execute_reply": "2024-03-26T14:35:08.091403Z" } }, "outputs": [], "source": [ "class InteractiveGeocoder(object):\n", " LEVELS = ['country', 'state', 'county', 'city']\n", " RES = {'country': 3, 'state': 6, 'county': 9}\n", "\n", " def __init__(self, plot_width, plot_height):\n", " self.plot_width = plot_width\n", " self.plot_height = plot_height\n", " self.emulated = False\n", " self.select = {'type': None, 'value': None}\n", " self._init_level_widgets()\n", " self.wr = widgets.IntSlider(value=1, min=1, max=15, step=1, description='Resolution:')\n", " self.wo = widgets.Output(layout=widgets.Layout(height='{0}px'.format(self.plot_height + 20)))\n", " self._observe_widgets()\n", "\n", " def _init_level_widgets(self):\n", " self.wl = {}\n", " for level in self.LEVELS:\n", " self.wl[level] = widgets.Dropdown(options=[], description='{0}:'.format(level.title()))\n", " self.wl['country'].options = [''] + \\\n", " geocode_countries().get_geocodes()\\\n", " .sort_values('found name')['found name']\\\n", " .to_list()\n", "\n", " def _observe_widgets(self):\n", " self.wl['country'].observe(self._on_change_select)\n", " self.wl['state'].observe(self._on_change_select)\n", " self.wl['county'].observe(self._on_change_select)\n", " self.wr.observe(self._on_change_slider)\n", "\n", " def _update_output(self, res_value=None):\n", " self.wo.outputs = ()\n", " if not self.select['type'] or not self.select['value']:\n", " return\n", " for i, level in enumerate(self.LEVELS[:-1]):\n", " if self.select['type'] != level or not self.wl[level].value:\n", " continue\n", " self._clear_options_for_lower_widgets(i)\n", " res_value = res_value or self.RES[level]\n", " p = self._get_plot(*(self._geocode(i, level, self._get_scope(i), res_value)))\n", " if p:\n", " self.wo.append_display_data(p)\n", " break\n", " self.emulated = True\n", " self.wr.value = res_value\n", "\n", " def _get_scope(self, level_id):\n", " scope = None\n", " for i in range(0, level_id):\n", " scope = geocode(level=self.LEVELS[i], names=self.wl[self.LEVELS[i]].value, scope=scope).ignore_all_errors()\n", " return scope\n", "\n", " def _clear_options_for_lower_widgets(self, level_id):\n", " for i in range(level_id+1, len(self.LEVELS)-1):\n", " self.emulated = True\n", " self.wl[self.LEVELS[i]].options = []\n", "\n", " def _geocode(self, i, level, scope, res_value):\n", " if self.select['value'] == '':\n", " return geocode(level=level, scope=scope).ignore_all_errors().get_boundaries(res_value), \\\n", " gpd.GeoDataFrame()\n", " b_gdf = geocode(level=self.LEVELS[i+1], scope=self.wl[level].value).ignore_all_errors().get_boundaries(res_value)\n", " p_gdf = gpd.GeoDataFrame()\n", " if self.LEVELS[i+1] in self.wl.keys():\n", " self.emulated = True\n", " self.wl[self.LEVELS[i+1]].options = [''] + b_gdf.sort_values('found name')['found name'].to_list()\n", " if b_gdf.empty or level == 'county':\n", " geocoded_level = geocode(level=level, names=self.wl[level].value, scope=scope).allow_ambiguous().ignore_all_errors()\n", " p_gdf = geocode(level='city', scope=geocoded_level).ignore_all_errors().get_centroids()\n", " if b_gdf.empty:\n", " b_gdf = geocoded_level.get_boundaries(res_value)\n", " return b_gdf, p_gdf\n", "\n", " def _get_plot(self, b_gdf, p_gdf):\n", " if b_gdf.empty:\n", " return None\n", " p = ggplot() + ggsize(self.plot_width, self.plot_height) + \\\n", " theme_void()\n", " if p_gdf.empty:\n", " p += geom_map(data=b_gdf, fill='black', color='white', tooltips=layer_tooltips().line('@{found name}'))\n", " else:\n", " p += geom_map(data=b_gdf, fill='black', color='white') + \\\n", " geom_point(data=p_gdf, shape=1, color='white', tooltips=layer_tooltips().line('@{found name}'))\n", " return p\n", "\n", " def _on_change_select(self, change):\n", " if change['type'] != 'change' or change['name'] != 'value':\n", " return\n", " if self.emulated:\n", " self.emulated = False\n", " return\n", " self.select['type'] = change.owner.description[:-1].lower()\n", " self.select['value'] = change['new']\n", " self._update_output()\n", "\n", " def _on_change_slider(self, change):\n", " if change['type'] != 'change' or change['name'] != 'value':\n", " return\n", " if self.emulated:\n", " self.emulated = False\n", " return\n", " self._update_output(change['new'])\n", "\n", " def display(self):\n", " display(self.wl['country'], self.wl['state'], self.wl['county'], self.wr, self.wo)" ] }, { "cell_type": "code", "execution_count": 3, "id": "50a71299", "metadata": { "execution": { "iopub.execute_input": "2024-03-26T14:35:08.092770Z", "iopub.status.busy": "2024-03-26T14:35:08.092616Z", "iopub.status.idle": "2024-03-26T14:35:08.989485Z", "shell.execute_reply": "2024-03-26T14:35:08.989301Z" } }, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "e5762a6f4cd74ec9a402f141c93e9733", "version_major": 2, "version_minor": 0 }, "text/plain": [ "Dropdown(description='Country:', options=('', 'Afghanistan', 'Albania', 'Algeria', 'Andorra', 'Angola', 'Angui…" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "9a380aaef4f34216a86275298cd4c429", "version_major": 2, "version_minor": 0 }, "text/plain": [ "Dropdown(description='State:', options=(), value=None)" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "01d9691a90d94fdb8c25bb47eee688fa", "version_major": 2, "version_minor": 0 }, "text/plain": [ "Dropdown(description='County:', options=(), value=None)" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "8173b2c01b374eeeafe267ba967ebff9", "version_major": 2, "version_minor": 0 }, "text/plain": [ "IntSlider(value=1, description='Resolution:', max=15, min=1)" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "cb2a9e03b3994b879d1f52fe18d90596", "version_major": 2, "version_minor": 0 }, "text/plain": [ "Output(layout=Layout(height='320px'))" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "geocoder = InteractiveGeocoder(400, 300)\n", "geocoder.display()" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "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.10.13" }, "widgets": { "application/vnd.jupyter.widget-state+json": { "state": { "01d9691a90d94fdb8c25bb47eee688fa": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "DropdownModel", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", "_model_name": "DropdownModel", "_options_labels": [], "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "2.0.0", "_view_name": "DropdownView", "description": "County:", "description_allow_html": false, "disabled": false, "index": null, "layout": "IPY_MODEL_c35f732ef3ba4e9b84edb69e31363812", "style": "IPY_MODEL_ac69368d1e1e48c3850dd3a68b329e56", "tabbable": null, "tooltip": null } }, "3a359052283b421697f34186960c2a8c": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "2.0.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border_bottom": null, "border_left": null, "border_right": null, "border_top": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": "320px", "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "3d4a46669bbb40cf94dad840817e1179": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "DescriptionStyleModel", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", "_model_name": "DescriptionStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", "_view_name": "StyleView", "description_width": "" } }, "6597ec945b7648e0af69a9aebef6fbd2": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "DescriptionStyleModel", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", "_model_name": "DescriptionStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", "_view_name": "StyleView", "description_width": "" } }, "6660c91430274b189373e9fc5133bde9": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "2.0.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border_bottom": null, "border_left": null, "border_right": null, "border_top": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "8173b2c01b374eeeafe267ba967ebff9": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "IntSliderModel", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", "_model_name": "IntSliderModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "2.0.0", "_view_name": "IntSliderView", "behavior": "drag-tap", "continuous_update": true, "description": "Resolution:", "description_allow_html": false, "disabled": false, "layout": "IPY_MODEL_b067139077f04276a7dede82b5bc54cf", "max": 15, "min": 1, "orientation": "horizontal", "readout": true, "readout_format": "d", "step": 1, "style": "IPY_MODEL_d25f121a8c4d4653a9ae039d7240b91e", "tabbable": null, "tooltip": null, "value": 1 } }, "8278fd5e68564601bbe814c7af829e4d": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "DescriptionStyleModel", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", "_model_name": "DescriptionStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", "_view_name": "StyleView", "description_width": "" } }, "9a380aaef4f34216a86275298cd4c429": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "DropdownModel", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", "_model_name": "DropdownModel", "_options_labels": [], "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "2.0.0", "_view_name": "DropdownView", "description": "State:", "description_allow_html": false, "disabled": false, "index": null, "layout": "IPY_MODEL_ae3476210f8d47b0842b08bfb1c3ca69", "style": "IPY_MODEL_8278fd5e68564601bbe814c7af829e4d", "tabbable": null, "tooltip": null } }, "ac69368d1e1e48c3850dd3a68b329e56": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "DescriptionStyleModel", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", "_model_name": "DescriptionStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", "_view_name": "StyleView", "description_width": "" } }, "ae3476210f8d47b0842b08bfb1c3ca69": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "2.0.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border_bottom": null, "border_left": null, "border_right": null, "border_top": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "b067139077f04276a7dede82b5bc54cf": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "2.0.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border_bottom": null, "border_left": null, "border_right": null, "border_top": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "c35f732ef3ba4e9b84edb69e31363812": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "2.0.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border_bottom": null, "border_left": null, "border_right": null, "border_top": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "cb2a9e03b3994b879d1f52fe18d90596": { "model_module": "@jupyter-widgets/output", "model_module_version": "1.0.0", "model_name": "OutputModel", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/output", "_model_module_version": "1.0.0", "_model_name": "OutputModel", "_view_count": null, "_view_module": "@jupyter-widgets/output", "_view_module_version": "1.0.0", "_view_name": "OutputView", "layout": "IPY_MODEL_3a359052283b421697f34186960c2a8c", "msg_id": "", "outputs": [], "tabbable": null, "tooltip": null } }, "cbb2eae3813646768c42637e1d6078c1": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "2.0.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border_bottom": null, "border_left": null, "border_right": null, "border_top": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "d25f121a8c4d4653a9ae039d7240b91e": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "SliderStyleModel", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", "_model_name": "SliderStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", "_view_name": "StyleView", "description_width": "", "handle_color": null } }, "e5762a6f4cd74ec9a402f141c93e9733": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "DropdownModel", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", "_model_name": "DropdownModel", "_options_labels": [ "", "Afghanistan", "Albania", "Algeria", "Andorra", "Angola", "Anguilla", "Antigua and Barbuda", "Argentina", "Armenia", "Australia", "Austria", "Azerbaijan", "Bahrain", "Bangladesh", "Barbados", "Belarus", "Belgium", "Belize", "Benin", "Bermuda", "Bhutan", "Bolivia", "Bosnia and Herzegovina", "Botswana", "Brazil", "British Indian Ocean Territory", "British Virgin Islands", "Brunei", "Bulgaria", "Burkina Faso", "Burundi", "Cambodia", "Cameroon", "Canada", "Cape Verde", "Cayman Islands", "Central African Republic", "Chad", "Chile", "China", "Colombia", "Comoros", "Congo-Brazzaville", "Cook Islands", "Costa Rica", "Croatia", "Cuba", "Cyprus", "Czech Republic", "Democratic Republic of the Congo", "Denmark", "Djibouti", "Dominica", "Dominican Republic", "East Timor", "Ecuador", "Egypt", "El Salvador", "Equatorial Guinea", "Eritrea", "Estonia", "Eswatini", "Ethiopia", "Falkland Islands", "Faroe Islands", "Federated States of Micronesia", "Fiji", "Finland", "France", "Gabon", "Georgia", "Germany", "Ghana", "Gibraltar", "Greece", "Greenland", "Grenada", "Guatemala", "Guernsey", "Guinea", "Guinea-Bissau", "Guyana", "Haiti", "Honduras", "Hungary", "Iceland", "India", "Indonesia", "Iran", "Iraq", "Ireland", "Isle of Man", "Israel", "Italy", "Ivory Coast", "Jamaica", "Japan", "Jersey", "Jordan", "Kazakhstan", "Kenya", "Kiribati", "Kosovo", "Kuwait", "Kyrgyzstan", "Laos", "Latvia", "Lebanon", "Lesotho", "Liberia", "Libya", "Liechtenstein", "Lithuania", "Luxembourg", "Madagascar", "Malawi", "Malaysia", "Maldives", "Mali", "Malta", "Marshall Islands", "Mauritania", "Mauritius", "Mexico", "Moldova", "Monaco", "Mongolia", "Montenegro", "Montserrat", "Morocco", "Mozambique", "Myanmar", "Namibia", "Nauru", "Nepal", "Netherlands", "New Zealand", "Nicaragua", "Niger", "Nigeria", "Niue", "North Korea", "North Macedonia", "Norway", "Oman", "Pakistan", "Palau", "Palestine", "Panama", "Papua New Guinea", "Paraguay", "Peru", "Philippines", "Pitcairn Islands", "Poland", "Portugal", "Qatar", "Romania", "Russia", "Rwanda", "Sahrawi Arab Democratic Republic", "Saint Helena, Ascension and Tristan da Cunha", "Saint Kitts and Nevis", "Saint Lucia", "Saint Vincent and the Grenadines", "Samoa", "San Marino", "Saudi Arabia", "Senegal", "Serbia", "Seychelles", "Sierra Leone", "Singapore", "Slovakia", "Slovenia", "Solomon Islands", "Somalia", "South Africa", "South Georgia and the South Sandwich Islands", "South Korea", "South Sudan", "Spain", "Sri Lanka", "Sudan", "Suriname", "Sweden", "Switzerland", "Syria", "São Tomé and Príncipe", "Taiwan", "Tajikistan", "Tanzania", "Thailand", "The Bahamas", "The Gambia", "Togo", "Tokelau", "Tonga", "Trinidad and Tobago", "Tunisia", "Turkey", "Turkmenistan", "Turks and Caicos Islands", "Tuvalu", "Uganda", "Ukraine", "United Arab Emirates", "United Kingdom", "United States", "Uruguay", "Uzbekistan", "Vanuatu", "Vatican City", "Venezuela", "Vietnam", "Yemen", "Zambia", "Zimbabwe" ], "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "2.0.0", "_view_name": "DropdownView", "description": "Country:", "description_allow_html": false, "disabled": false, "index": null, "layout": "IPY_MODEL_cbb2eae3813646768c42637e1d6078c1", "style": "IPY_MODEL_3d4a46669bbb40cf94dad840817e1179", "tabbable": null, "tooltip": null } }, "f9b1ebe4b914413da1752de8b6fc9060": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "DropdownModel", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", "_model_name": "DropdownModel", "_options_labels": [], "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "2.0.0", "_view_name": "DropdownView", "description": "City:", "description_allow_html": false, "disabled": false, "index": null, "layout": "IPY_MODEL_6660c91430274b189373e9fc5133bde9", "style": "IPY_MODEL_6597ec945b7648e0af69a9aebef6fbd2", "tabbable": null, "tooltip": null } } }, "version_major": 2, "version_minor": 0 } } }, "nbformat": 4, "nbformat_minor": 5 }