superset/superset-frontend/temporary_superset_ui/superset-ui/plugins/legacy-plugin-chart-country-map/scripts/Country Map GeoJSON Generator.ipynb

1533 lines
1.7 MiB
Plaintext
Raw Normal View History

{
"cells": [
{
"cell_type": "markdown",
"source": [
"# Generate GeoJSON from Natural Earth Data"
],
"metadata": {}
},
{
"cell_type": "markdown",
"source": [
"## Install Dependencies"
],
"metadata": {}
},
{
"cell_type": "markdown",
"source": [
"```\n",
"pip install geopandas shapely\n",
"```"
],
"metadata": {}
},
{
"cell_type": "markdown",
"source": [
"## Download Data\n",
"\n",
"Download the [Admin 1 States, Provinces\n",
"](https://www.naturalearthdata.com/downloads/10m-cultural-vectors/10m-admin-1-states-provinces/) dataset from Natural Earch Data and provide the path to the downloaded file below."
],
"metadata": {}
},
{
"cell_type": "code",
"execution_count": 1,
"source": [
"import os\n",
"import geopandas as gpd\n",
"import matplotlib.pyplot as plt\n",
"import shapely\n",
"\n",
"df_admin0_10m = gpd.read_file(os.path.expanduser(\"ne_10m_admin_0_countries.zip\"))\n",
"df_10m = gpd.read_file(os.path.expanduser(\"ne_10m_admin_1_states_provinces.zip\"))\n",
"df_50m = gpd.read_file(os.path.expanduser(\"ne_50m_admin_1_states_provinces.zip\"))"
],
"outputs": [],
"metadata": {}
},
{
"cell_type": "code",
"execution_count": 2,
"source": [
"df_50m.columns"
],
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"Index(['featurecla', 'scalerank', 'adm1_code', 'diss_me', 'iso_3166_2',\n",
" 'wikipedia', 'iso_a2', 'adm0_sr', 'name', 'name_alt', 'name_local',\n",
" 'type', 'type_en', 'code_local', 'code_hasc', 'note', 'hasc_maybe',\n",
" 'region', 'region_cod', 'provnum_ne', 'gadm_level', 'check_me',\n",
" 'datarank', 'abbrev', 'postal', 'area_sqkm', 'sameascity', 'labelrank',\n",
" 'name_len', 'mapcolor9', 'mapcolor13', 'fips', 'fips_alt', 'woe_id',\n",
" 'woe_label', 'woe_name', 'latitude', 'longitude', 'sov_a3', 'adm0_a3',\n",
" 'adm0_label', 'admin', 'geonunit', 'gu_a3', 'gn_id', 'gn_name',\n",
" 'gns_id', 'gns_name', 'gn_level', 'gn_region', 'gn_a1_code',\n",
" 'region_sub', 'sub_code', 'gns_level', 'gns_lang', 'gns_adm1',\n",
" 'gns_region', 'min_label', 'max_label', 'min_zoom', 'wikidataid',\n",
" 'name_ar', 'name_bn', 'name_de', 'name_en', 'name_es', 'name_fr',\n",
" 'name_el', 'name_hi', 'name_hu', 'name_id', 'name_it', 'name_ja',\n",
" 'name_ko', 'name_nl', 'name_pl', 'name_pt', 'name_ru', 'name_sv',\n",
" 'name_tr', 'name_vi', 'name_zh', 'ne_id', 'geometry'],\n",
" dtype='object')"
]
},
"metadata": {},
"execution_count": 2
}
],
"metadata": {}
},
{
"cell_type": "code",
"execution_count": 3,
"source": [
"df_admin0_10m.columns = df_admin0_10m.columns.str.lower()\n",
"df_admin0_10m.columns"
],
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"Index(['featurecla', 'scalerank', 'labelrank', 'sovereignt', 'sov_a3',\n",
" 'adm0_dif', 'level', 'type', 'admin', 'adm0_a3', 'geou_dif', 'geounit',\n",
" 'gu_a3', 'su_dif', 'subunit', 'su_a3', 'brk_diff', 'name', 'name_long',\n",
" 'brk_a3', 'brk_name', 'brk_group', 'abbrev', 'postal', 'formal_en',\n",
" 'formal_fr', 'name_ciawf', 'note_adm0', 'note_brk', 'name_sort',\n",
" 'name_alt', 'mapcolor7', 'mapcolor8', 'mapcolor9', 'mapcolor13',\n",
" 'pop_est', 'pop_rank', 'gdp_md_est', 'pop_year', 'lastcensus',\n",
" 'gdp_year', 'economy', 'income_grp', 'wikipedia', 'fips_10_', 'iso_a2',\n",
" 'iso_a3', 'iso_a3_eh', 'iso_n3', 'un_a3', 'wb_a2', 'wb_a3', 'woe_id',\n",
" 'woe_id_eh', 'woe_note', 'adm0_a3_is', 'adm0_a3_us', 'adm0_a3_un',\n",
" 'adm0_a3_wb', 'continent', 'region_un', 'subregion', 'region_wb',\n",
" 'name_len', 'long_len', 'abbrev_len', 'tiny', 'homepart', 'min_zoom',\n",
" 'min_label', 'max_label', 'ne_id', 'wikidataid', 'name_ar', 'name_bn',\n",
" 'name_de', 'name_en', 'name_es', 'name_fr', 'name_el', 'name_hi',\n",
" 'name_hu', 'name_id', 'name_it', 'name_ja', 'name_ko', 'name_nl',\n",
" 'name_pl', 'name_pt', 'name_ru', 'name_sv', 'name_tr', 'name_vi',\n",
" 'name_zh', 'geometry'],\n",
" dtype='object')"
]
},
"metadata": {},
"execution_count": 3
}
],
"metadata": {}
},
{
"cell_type": "code",
"execution_count": 4,
"source": [
"df_50m.groupby('admin').count()"
],
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
" featurecla scalerank adm1_code diss_me \\\n",
"admin \n",
"Australia 9 9 9 9 \n",
"Brazil 27 27 27 27 \n",
"Canada 13 13 13 13 \n",
"United States of America 51 51 51 51 \n",
"\n",
" iso_3166_2 wikipedia iso_a2 adm0_sr name \\\n",
"admin \n",
"Australia 9 0 9 9 9 \n",
"Brazil 27 0 27 27 27 \n",
"Canada 13 13 13 13 13 \n",
"United States of America 51 51 51 51 51 \n",
"\n",
" name_alt ... name_nl name_pl name_pt name_ru \\\n",
"admin ... \n",
"Australia 0 ... 9 9 9 9 \n",
"Brazil 13 ... 27 27 27 27 \n",
"Canada 9 ... 13 13 13 13 \n",
"United States of America 51 ... 51 51 51 51 \n",
"\n",
" name_sv name_tr name_vi name_zh ne_id geometry \n",
"admin \n",
"Australia 9 9 9 9 9 9 \n",
"Brazil 27 27 27 27 27 27 \n",
"Canada 13 13 13 13 13 13 \n",
"United States of America 51 51 51 51 51 51 \n",
"\n",
"[4 rows x 83 columns]"
],
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>featurecla</th>\n",
" <th>scalerank</th>\n",
" <th>adm1_code</th>\n",
" <th>diss_me</th>\n",
" <th>iso_3166_2</th>\n",
" <th>wikipedia</th>\n",
" <th>iso_a2</th>\n",
" <th>adm0_sr</th>\n",
" <th>name</th>\n",
" <th>name_alt</th>\n",
" <th>...</th>\n",
" <th>name_nl</th>\n",
" <th>name_pl</th>\n",
" <th>name_pt</th>\n",
" <th>name_ru</th>\n",
" <th>name_sv</th>\n",
" <th>name_tr</th>\n",
" <th>name_vi</th>\n",
" <th>name_zh</th>\n",
" <th>ne_id</th>\n",
" <th>geometry</th>\n",
" </tr>\n",
" <tr>\n",
" <th>admin</th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>Australia</th>\n",
" <td>9</td>\n",
" <td>9</td>\n",
" <td>9</td>\n",
" <td>9</td>\n",
" <td>9</td>\n",
" <td>0</td>\n",
" <td>9</td>\n",
" <td>9</td>\n",
" <td>9</td>\n",
" <td>0</td>\n",
" <td>...</td>\n",
" <td>9</td>\n",
" <td>9</td>\n",
" <td>9</td>\n",
" <td>9</td>\n",
" <td>9</td>\n",
" <td>9</td>\n",
" <td>9</td>\n",
" <td>9</td>\n",
" <td>9</td>\n",
" <td>9</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Brazil</th>\n",
" <td>27</td>\n",
" <td>27</td>\n",
" <td>27</td>\n",
" <td>27</td>\n",
" <td>27</td>\n",
" <td>0</td>\n",
" <td>27</td>\n",
" <td>27</td>\n",
" <td>27</td>\n",
" <td>13</td>\n",
" <td>...</td>\n",
" <td>27</td>\n",
" <td>27</td>\n",
" <td>27</td>\n",
" <td>27</td>\n",
" <td>27</td>\n",
" <td>27</td>\n",
" <td>27</td>\n",
" <td>27</td>\n",
" <td>27</td>\n",
" <td>27</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Canada</th>\n",
" <td>13</td>\n",
" <td>13</td>\n",
" <td>13</td>\n",
" <td>13</td>\n",
" <td>13</td>\n",
" <td>13</td>\n",
" <td>13</td>\n",
" <td>13</td>\n",
" <td>13</td>\n",
" <td>9</td>\n",
" <td>...</td>\n",
" <td>13</td>\n",
" <td>13</td>\n",
" <td>13</td>\n",
" <td>13</td>\n",
" <td>13</td>\n",
" <td>13</td>\n",
" <td>13</td>\n",
" <td>13</td>\n",
" <td>13</td>\n",
" <td>13</td>\n",
" </tr>\n",
" <tr>\n",
" <th>United States of America</th>\n",
" <td>51</td>\n",
" <td>51</td>\n",
" <td>51</td>\n",
" <td>51</td>\n",
" <td>51</td>\n",
" <td>51</td>\n",
" <td>51</td>\n",
" <td>51</td>\n",
" <td>51</td>\n",
" <td>51</td>\n",
" <td>...</td>\n",
" <td>51</td>\n",
" <td>51</td>\n",
" <td>51</td>\n",
" <td>51</td>\n",
" <td>51</td>\n",
" <td>51</td>\n",
" <td>51</td>\n",
" <td>51</td>\n",
" <td>51</td>\n",
" <td>51</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>4 rows × 83 columns</p>\n",
"</div>"
]
},
"metadata": {},
"execution_count": 4
}
],
"metadata": {}
},
{
"cell_type": "code",
"execution_count": 5,
"source": [
"df_50m[df_50m.adm0_a3 == 'USA'].plot(figsize=(20,10))"
],
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"<AxesSubplot:>"
]
},
"metadata": {},
"execution_count": 5
},
{
"output_type": "display_data",
"data": {
"text/plain": [
"<Figure size 1440x720 with 1 Axes>"
],
"image/png": "iVBORw0KGgoAAAANSUhEUgAAA04AAAI/CAYAAABAqYlRAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8rg+JYAAAACXBIWXMAAAsTAAALEwEAmpwYAACnzklEQVR4nOzdd3gc1bkG8Hdme99V79VFLnKV5YINptcAoV4IgZBACCE9uemk3PRCElIhAZIQCL33AMHGGFwk9yI39V52V1ptL3P/WFlYVpe2Su/vSR6s3dmZb2XLnnfPOd8RJEkCERERERERjU6MdwFERERERESJjsGJiIiIiIhoHAxORERERERE42BwIiIiIiIiGgeDExERERER0TgYnIiIiIiIiMYhj+XF0tLSpKKiolhekoiIiIiIaEKqq6u7JUlKH+m5mAanoqIiVFVVxfKSREREREREEyIIQsNoz3GqHhERERER0TgYnIiIiIiIiMbB4ERERERERDQOBiciIiIiIqJxMDgRERERERGNg8GJiIiIiIhoHAxORERERERE42BwIiIiIiIiGgeDExERERER0TgYnIiIiIiIiMbB4ERERERERDQOBiciIiIiIqJxMDgRERERERGNg8GJiIiIiIhoHAxORERERERE42BwIiIiIiIiGgeDExERERER0TgYnIiIiIiIiMbB4ERERERERDQOBiciIiIiIqJxMDgRERERERGNg8GJiIiIiIhoHAxORFMUCknwBULxLoOIiIiIYoDBiWiSet1+/Omd4/jO8/sRCDE4EREREc0G8ngXQJRMth7vxlee3IOOPi8A4O3DnVhRYMGKQjNWFFiwONcEtUIW5yqJiIiIKNIYnIgm6MmdTfj2c/sRCEmDj3U6vHj9YDteP9g++FhlUQqe/Mza8PN9HkgA0vQqyEQh1iUTERERUYQwOBGNY39zL+558wg2Heka8zhBANYUp+KbF5cBADYf7cKnH66CNxBCplGFz58zFzetKYxFyUREREQUYQxONKuEQhJ63X5YdMoxj/MFQvhvTQce29GEzUfHDkwAsDTfjAdvqUCaXoVOhwffeHofnqhqGny+o8+LAy29w14XCIbQYHWhp98HAKjr7sfhNgfyLBqUZRlRmKpFr9uPdIMKmUb1JN8tEREREUWKIEnS+EdFSEVFhVRVVRWz6xGdVN/txJNVTXhhTysuW5qNO84sxaYjnQhJgABgR50VJ7r6EZQkBEMS6rqdcHgCk7pGea4JggAcau0bMp3vVCVpOqQbVCjPNUEpF/HMrubB9VLj2TA3DQ/esgpKOXu6EBEREUWDIAjVkiRVjPgcgxPNZJ19Htz79jE8vrMJwYEwY9Io0Ov2x7myyVmWb8YTd6yBSs7GE0RERETRMlZw4kfXNCOFQhK2HOvCf2s60e8NDIYmAEkXmgDgRGc/vvH0PrTa3eju96Kzz8M9pIiIiIhiiGucaEbp7PPgyaomPL6zCS12N/5xayW+eO5cZBhUONbZj511Vjh9wXiXOWkObwDP72nF83taAQDnLcjAX25aOeSYXrcftV39ONDah6PtDpTnmnD5shyo5CJq2h14bX8bGq0uBEISMo1q6JQy5Fm0WFOSivwUDQSBXf+IiIiIRjNucBIEYT6AJ055qATA9wA8PPB4EYB6ANdJkmSLfIlE4/P4g3iyqgm/f/sYugcaLQCAQibgnSNd+NuWujhWF3lvHe7EvO++BoNKDpNWAaNagWMd/fAFh45Cfeu5/VDKRLj9Y4fFbJMahalafOX8+agsTkF7rweiCGQY2JCCiIiICJjkGidBEGQAWgCsBnAXAKskST8XBOGbACySJH1jrNdzjRNNVTAk4Zev10CnkuPOjaVo6HHieKcTtd39ONHpxOajnUMC00lqhQiLVom2Xk8cqk4+ggDMzzTgaIcDclHEsgIzbl1XhIvLs+NdGhEREVHURaw5hCAIFwD4viRJZwiCcATARkmS2gRByAawSZKk+WO9nsGJpqLJ6sK3nt0PhzeA4lQtNh/tgs2VfOuUkllRqhZZJjWyjGpkGtWw6JTodfvR7fBCAiAXBShkIorTdMi1aCBJEtaUpMKsHbvtOxEREVEiGSs4TXaN0/8AeGzg15mSJLUN/LodQOYU6yMa1cv7WvHNZ/aj3xtuDb63yR7fgmap+h4X6ntck3qNSi7i0iXZuLQ8G/MyDchP0Q553uMP4mBrH/o8flj7fdjf0otDrX3wBUMwqOUISRJ6+n1YUWhBRaEFa0tTkW3SRPJtEREREU3YhEecBEFQAmgFsEiSpA5BEOySJJlPed4mSZJlhNd9GsCnAaCgoGBlQ0NDRAqnmS0QDOEXr9fMuLVJs5UoADlmDUya8HosnUqOnfXWSXU4FAXg0iU5+OK5czEnQx/FaomIiGi2ishUPUEQrgBwlyRJFwx8zal6FBU9/V58/rHdeP9ET7xLoQSkUchw87pCrClOxYpCC0waRbxLIiIiohkiUlP1bsCH0/QA4EUAtwD4+cB/X5hyhUQDWu1uXHvfB2ixu+NdCiUotz+I+zfX4v7NtYPNLC5clIVPrCuCRcc1VURERBQdExpxEgRBB6ARQIkkSb0Dj6UCeBJAAYAGhNuRW8c6D0ecaDw3P7QD7x7tincZlIQyDCpcUp4Nq9OHxblGfPrM0niXRERERElm2iNOkiQ5AaSe9lgPgHOnXx5RmN3lY2iiKet0ePGP9+sBhEcuGZyIiIgoksR4F0B00m52zCMiIiKiBMXgRAnhgxM9uPOR6niXQUREREQ0osnu40QUcc/vbsH/Pr0X/uDEN2MmIiIiIoolBieKmyarCz9/rQav7G8b/2AiIiIiojhicKKYkiQJu5vseKqqCc/saoEvEIp3SURERERE42Jwoik70NKLrn4v1HIZ1AoRGqUMkgS4fAE4vUF09HlQ3+OE1elDT78PVqcPtd3hr4mIiIiIkgmDE03ZS/tacf/m2niXQUREREQUdeyqR1O2rXbM/Y6JiIiIiGYMBieakha7G3u57xIRERERzRIMTjQlf3+vLt4lEBERERHFDNc40YR193tx36YT8AZCeGxHY7zLISIiIiKKGQYnmrA0vQrfuXQB+jwBXL4sB09VNeHJquZ4l0VEREREFHUMTjQpgiDApFFgVVEKVhWl4JqV+fjbllpsO9EDhzcQ7/KIiIiIiKKCwYmmpbI4BZXFKQgEQ9jbbMfmI114fGcTOh3eeJdGRERERBQxDE4UEXKZiJWFKVhZmILPnj0HT1Y14c/vnEB7nyfepRERERERTRu76lHEqRUy3Ly2CJu/vhE/vnIxcs2aeJdERERERDQtDE4UNSq5DDetKcQ7X9uIn11VjjwLAxQRERERJScGJ4o6pVzEDZUFeOdrG/HLq5cg3aCKd0lERERERJPC4EQxo5CJuG5VPp68Yy0yjQxPRERERJQ8GJwo5orTdPjBRxbFuwwiIiIiogljcKK4uHBRFuZl6uNdBhERERHRhDA4UVyIooBfXrMUJo0i3qUQEREREY2LwYniZlm+GW986UzcvqEYq4tToFPKhjwvCMDCbGOcqiMiIiIi+hA3wKW4yjKp8Z1LFwIAQiEJjVYXAEACEAxJMGrksDp9yDCoYVTL0WJ3477NJ/DYjqY4Vk1EREREsw2DEyUMURRQlKYb/Pqh9+rwi9drUJ5rwiO3rYZcJqLL4cVzu1viWCURERERzUacqkcJa8PcNOhVcuxqtOHmh3bA6vThu88fgMcfindpRERERDTLMDhRwpqbaUD13efjvW+cA7koIBiS8MVz52JOxtBufMvyzbihsgBlWYY4VUpEREREMx2n6lFU+YMhvHWoAx/U9qCu2wmr0we7yw9/MIRb1hXh5rWFMKjH7qyXY9bgoU+swkNb63Dhoiy88oX1eLq6GbVdTlxbkYeyrHADCUkKr5GSy0QcbOnFp/9VHYu3SERERESzAIMTRZTHH0RtlxM9Ti92Ndjx6PYGdDq8w44TBWBdaeq4oekktUKGj68pxNIf/gcb52egIEWLg629+OBED8qyDfjU+mIsyjGhMDW8Ripdr4JBJYfDG4j
},
"metadata": {
"needs_background": "light"
}
}
],
"metadata": {}
},
{
"cell_type": "markdown",
"source": [
"Use 1:50m geometry for some large countries:"
],
"metadata": {}
},
{
"cell_type": "code",
"execution_count": 6,
"source": [
"df_50m['admin'].unique()"
],
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"array(['Australia', 'Brazil', 'Canada', 'United States of America'],\n",
" dtype=object)"
]
},
"metadata": {},
"execution_count": 6
}
],
"metadata": {}
},
{
"cell_type": "code",
"execution_count": 7,
"source": [
"import pandas as pd\n",
"\n",
"df = pd.concat([df_10m[~df_10m['admin'].isin(df_50m['admin'].unique())], df_50m])"
],
"outputs": [],
"metadata": {}
},
{
"cell_type": "markdown",
"source": [
"## Adjust the Maps\n",
"\n",
"<span style=\"color: red; font-size: 1.5em\">TO SUPPORT NEW COUNTRIES, ADD COUNTRY NAME BELOW</span>"
],
"metadata": {}
},
{
"cell_type": "code",
"execution_count": 8,
"source": [
"# Country names used in file names\n",
"countries = [\n",
" 'canada',\n",
" 'switzerland',\n",
" 'myanmar',\n",
" 'uruguay',\n",
" 'uk',\n",
" 'india',\n",
" 'egypt',\n",
" 'brazil',\n",
" 'portugal',\n",
" 'spain',\n",
" 'timorleste',\n",
" 'syria',\n",
" 'italy',\n",
" 'japan',\n",
" 'ukraine',\n",
" 'zambia',\n",
" 'iran',\n",
" 'thailand',\n",
" 'bulgaria',\n",
" 'morocco',\n",
" 'russia',\n",
" 'belgium',\n",
" 'germany',\n",
" 'france',\n",
" 'netherlands',\n",
" 'usa',\n",
" 'liechtenstein',\n",
" 'singapore',\n",
" 'china',\n",
" 'korea',\n",
" 'slovenia',\n",
" 'indonesia',\n",
" 'malaysia'\n",
"]\n",
"\n",
"# country name used in dataset\n",
"country_name_aliases = {\n",
" \"uk\": \"united kingdom\",\n",
" \"usa\": \"united states of america\",\n",
" \"korea\": \"south korea\",\n",
" \"timorleste\": \"east timor\",\n",
"}"
],
"outputs": [],
"metadata": {}
},
{
"cell_type": "markdown",
"source": [
"Make sure all country names are covered:"
],
"metadata": {}
},
{
"cell_type": "code",
"execution_count": 9,
"source": [
"[x for x in countries if country_name_aliases.get(x, x) not in df[\"admin\"].str.lower().unique()]"
],
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"[]"
]
},
"metadata": {},
"execution_count": 9
}
],
"metadata": {}
},
{
"cell_type": "markdown",
"source": [
"Preview all countries:"
],
"metadata": {}
},
{
"cell_type": "code",
"execution_count": 10,
"source": [
"alt_maps = dict()\n",
"\n",
"def get_gdf(country):\n",
" country_alias = country_name_aliases.get(country, country)\n",
" if country in alt_maps:\n",
" gdf = alt_maps[country]\n",
" else:\n",
" gdf = df[df[\"admin\"].str.lower() == country_alias]\n",
" return gdf.copy()\n",
"\n",
"def plot_all_countries():\n",
" plt.figure(figsize=(20, 20))\n",
"\n",
" for i, country in enumerate(countries):\n",
" # create subplot axes in a 3x3 grid\n",
" ax = plt.subplot(len(countries) // 5, 6, i + 1) # nrows, ncols, axes position\n",
" get_gdf(country).plot(ax=ax)\n",
" ax.set_title(country)\n",
" ax.set_aspect('equal', adjustable='datalim')\n",
" \n",
" plt.tight_layout()\n",
" plt.show()\n",
"\n",
"plot_all_countries()"
],
"outputs": [
{
"output_type": "display_data",
"data": {
"text/plain": [
"<Figure size 1440x1440 with 33 Axes>"
],
"image/png": "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
},
"metadata": {
"needs_background": "light"
}
}
],
"metadata": {
"scrolled": false
}
},
{
"cell_type": "markdown",
"source": [
"### Handle countries with flying islands\n",
"\n",
"#### USA"
],
"metadata": {}
},
{
"cell_type": "markdown",
"source": [
"For countries with flying islands, we need to move the islands closer to the mainland."
],
"metadata": {}
},
{
"cell_type": "code",
"execution_count": 11,
"source": [
"usa = df[df['adm0_a3'] == 'USA']\n",
"usa.plot()"
],
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"<AxesSubplot:>"
]
},
"metadata": {},
"execution_count": 11
},
{
"output_type": "display_data",
"data": {
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
],
"image/png": "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
},
"metadata": {
"needs_background": "light"
}
}
],
"metadata": {}
},
{
"cell_type": "code",
"execution_count": 12,
"source": [
"def reposition(df, idx, xoff=None, yoff=None, xscale=None, yscale=None, simplify=None):\n",
" \n",
" def move_and_scale(series):\n",
" if xoff or yoff:\n",
" series = shapely.affinity.translate(series, xoff or 0, yoff or 0)\n",
" if xscale or yscale:\n",
" series = shapely.affinity.scale(series, xscale or 1, yscale or 1)\n",
" if simplify:\n",
" series = series.simplify(simplify, preserve_topology=False)\n",
" return series\n",
" \n",
" df.loc[idx, 'geometry'] = df.loc[idx, 'geometry'].apply(move_and_scale)\n",
"\n",
"\n",
"usa_copy = usa.copy()\n",
"reposition(usa_copy, usa.name == 'Hawaii', 51, 5.5)\n",
"reposition(usa_copy, usa.name == 'Alaska', 35, -34, 0.35, 0.35)\n",
"\n",
"usa_copy.plot(figsize=(8,8))"
],
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"<AxesSubplot:>"
]
},
"metadata": {},
"execution_count": 12
},
{
"output_type": "display_data",
"data": {
"text/plain": [
"<Figure size 576x576 with 1 Axes>"
],
"image/png": "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
},
"metadata": {
"needs_background": "light"
}
}
],
"metadata": {}
},
{
"cell_type": "markdown",
"source": [
"#### China\n",
"\n",
"China claims sovereign over Taiwan. For disputed territories, we respect each country and give them what they want.\n",
"\n",
"In addition, Hong Kong and Macau should also be included in a China map."
],
"metadata": {}
},
{
"cell_type": "code",
"execution_count": 13,
"source": [
"# Chinese Special Administrative Regions\n",
"china_sars = df_admin0_10m.loc[\n",
" df_admin0_10m.name_en.isin(['Taiwan', 'Hong Kong', 'Macau']),\n",
" [x for x in df_admin0_10m.columns if x in df.columns]\n",
"]\n",
"china_sars = china_sars.merge(pd.DataFrame(\n",
" data={ \n",
" \"name_en\": [\"Taiwan\", \"Hong Kong\", \"Macau\"],\n",
" \"name_zh\": [\"中国台湾\", \"香港特别行政区\", \"澳门特别行政区\"],\n",
" \"iso_3166_2\": [\"CN-71\", \"CN-91\", \"CN-92\"],\n",
" },\n",
"), on=\"name_en\", how=\"left\")\n",
"china_sars"
],
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
" featurecla scalerank labelrank sov_a3 type \\\n",
"0 Admin-0 country 0 4 CH1 Country \n",
"1 Admin-0 country 0 3 TWN Sovereign country \n",
"2 Admin-0 country 0 4 CH1 Country \n",
"\n",
" admin adm0_a3 gu_a3 name abbrev ... name_pl \\\n",
"0 Hong Kong S.A.R. HKG HKG Hong Kong H.K. ... Hongkong \n",
"1 Taiwan TWN TWN Taiwan Taiwan ... Republika Chińska \n",
"2 Macao S.A.R MAC MAC Macao Mac. ... Makau \n",
"\n",
" name_pt name_ru name_sv name_tr name_vi \\\n",
"0 Hong Kong Гонконг Hongkong Hong Kong Hồng Kông \n",
"1 Taiwan Китайская Республика Taiwan Çin Cumhuriyeti Đài Loan \n",
"2 Macau Макао Macao Makao Ma Cao \n",
"\n",
" name_zh_x geometry name_zh_y \\\n",
"0 香港 MULTIPOLYGON (((114.22983 22.55581, 114.23471 ... 香港特别行政区 \n",
"1 中華民國 MULTIPOLYGON (((121.90577 24.95010, 121.83473 ... 中国台湾 \n",
"2 澳門 MULTIPOLYGON (((113.55860 22.16303, 113.56943 ... 澳门特别行政区 \n",
"\n",
" iso_3166_2 \n",
"0 CN-91 \n",
"1 CN-71 \n",
"2 CN-92 \n",
"\n",
"[3 rows x 47 columns]"
],
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>featurecla</th>\n",
" <th>scalerank</th>\n",
" <th>labelrank</th>\n",
" <th>sov_a3</th>\n",
" <th>type</th>\n",
" <th>admin</th>\n",
" <th>adm0_a3</th>\n",
" <th>gu_a3</th>\n",
" <th>name</th>\n",
" <th>abbrev</th>\n",
" <th>...</th>\n",
" <th>name_pl</th>\n",
" <th>name_pt</th>\n",
" <th>name_ru</th>\n",
" <th>name_sv</th>\n",
" <th>name_tr</th>\n",
" <th>name_vi</th>\n",
" <th>name_zh_x</th>\n",
" <th>geometry</th>\n",
" <th>name_zh_y</th>\n",
" <th>iso_3166_2</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>Admin-0 country</td>\n",
" <td>0</td>\n",
" <td>4</td>\n",
" <td>CH1</td>\n",
" <td>Country</td>\n",
" <td>Hong Kong S.A.R.</td>\n",
" <td>HKG</td>\n",
" <td>HKG</td>\n",
" <td>Hong Kong</td>\n",
" <td>H.K.</td>\n",
" <td>...</td>\n",
" <td>Hongkong</td>\n",
" <td>Hong Kong</td>\n",
" <td>Гонконг</td>\n",
" <td>Hongkong</td>\n",
" <td>Hong Kong</td>\n",
" <td>Hồng Kông</td>\n",
" <td>香港</td>\n",
" <td>MULTIPOLYGON (((114.22983 22.55581, 114.23471 ...</td>\n",
" <td>香港特别行政区</td>\n",
" <td>CN-91</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>Admin-0 country</td>\n",
" <td>0</td>\n",
" <td>3</td>\n",
" <td>TWN</td>\n",
" <td>Sovereign country</td>\n",
" <td>Taiwan</td>\n",
" <td>TWN</td>\n",
" <td>TWN</td>\n",
" <td>Taiwan</td>\n",
" <td>Taiwan</td>\n",
" <td>...</td>\n",
" <td>Republika Chińska</td>\n",
" <td>Taiwan</td>\n",
" <td>Китайская Республика</td>\n",
" <td>Taiwan</td>\n",
" <td>Çin Cumhuriyeti</td>\n",
" <td>Đài Loan</td>\n",
" <td>中華民國</td>\n",
" <td>MULTIPOLYGON (((121.90577 24.95010, 121.83473 ...</td>\n",
" <td>中国台湾</td>\n",
" <td>CN-71</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>Admin-0 country</td>\n",
" <td>0</td>\n",
" <td>4</td>\n",
" <td>CH1</td>\n",
" <td>Country</td>\n",
" <td>Macao S.A.R</td>\n",
" <td>MAC</td>\n",
" <td>MAC</td>\n",
" <td>Macao</td>\n",
" <td>Mac.</td>\n",
" <td>...</td>\n",
" <td>Makau</td>\n",
" <td>Macau</td>\n",
" <td>Макао</td>\n",
" <td>Macao</td>\n",
" <td>Makao</td>\n",
" <td>Ma Cao</td>\n",
" <td>澳門</td>\n",
" <td>MULTIPOLYGON (((113.55860 22.16303, 113.56943 ...</td>\n",
" <td>澳门特别行政区</td>\n",
" <td>CN-92</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>3 rows × 47 columns</p>\n",
"</div>"
]
},
"metadata": {},
"execution_count": 13
}
],
"metadata": {}
},
{
"cell_type": "code",
"execution_count": 14,
"source": [
"china = df[df.admin == \"China\"]\n",
"china_copy = china.append(china_sars)\n",
"china_copy[\"name_zh\"] = china_copy[\"name_zh\"].combine_first(china_copy[\"name_zh_y\"])\n",
"china_copy = china_copy.drop([\"name_zh_x\", \"name_zh_y\"], axis=1)\n",
"china_copy.plot(figsize=(12, 12))"
],
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"<AxesSubplot:>"
]
},
"metadata": {},
"execution_count": 14
},
{
"output_type": "display_data",
"data": {
"text/plain": [
"<Figure size 864x864 with 1 Axes>"
],
"image/png": "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
},
"metadata": {
"needs_background": "light"
}
}
],
"metadata": {
"scrolled": false
}
},
{
"cell_type": "markdown",
"source": [
"Note [ISO-3166-2:CN](https://en.wikipedia.org/wiki/ISO_3166-2:CN) has updated subdivisions to use letters instead of numbers (e.g. `CN-91` -> `CN-HK`). We kept the numeric code for backward compatibility."
],
"metadata": {}
},
{
"cell_type": "markdown",
"source": [
"#### Portugal"
],
"metadata": {}
},
{
"cell_type": "code",
"execution_count": 15,
"source": [
"portugal = df[df.admin == 'Portugal']\n",
"portugal.plot()"
],
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"<AxesSubplot:>"
]
},
"metadata": {},
"execution_count": 15
},
{
"output_type": "display_data",
"data": {
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
],
"image/png": "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
},
"metadata": {
"needs_background": "light"
}
}
],
"metadata": {}
},
{
"cell_type": "code",
"execution_count": 16,
"source": [
"portugal_copy = portugal.copy()\n",
"reposition(portugal_copy, portugal.name == 'Azores', 11, 0)\n",
"reposition(portugal_copy, portugal.name == 'Madeira', 6, 2, simplify=0.015)\n",
"portugal_copy.plot(figsize=(8, 8))"
],
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"<AxesSubplot:>"
]
},
"metadata": {},
"execution_count": 16
},
{
"output_type": "display_data",
"data": {
"text/plain": [
"<Figure size 576x576 with 1 Axes>"
],
"image/png": "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
},
"metadata": {
"needs_background": "light"
}
}
],
"metadata": {}
},
{
"cell_type": "markdown",
"source": [
"#### Spain"
],
"metadata": {}
},
{
"cell_type": "code",
"execution_count": 17,
"source": [
"spain = df[df.admin == 'Spain']\n",
"spain.plot()"
],
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"<AxesSubplot:>"
]
},
"metadata": {},
"execution_count": 17
},
{
"output_type": "display_data",
"data": {
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
],
"image/png": "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
},
"metadata": {
"needs_background": "light"
}
}
],
"metadata": {}
},
{
"cell_type": "code",
"execution_count": 18,
"source": [
"spain_copy = spain.copy()\n",
"reposition(spain_copy, spain.name.isin(['Las Palmas', 'Santa Cruz de Tenerife']), 3, 7, 1, 1)\n",
"spain_copy.plot(figsize=(8, 8))"
],
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"<AxesSubplot:>"
]
},
"metadata": {},
"execution_count": 18
},
{
"output_type": "display_data",
"data": {
"text/plain": [
"<Figure size 576x576 with 1 Axes>"
],
"image/png": "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
},
"metadata": {
"needs_background": "light"
}
}
],
"metadata": {}
},
{
"cell_type": "markdown",
"source": [
"#### Russia"
],
"metadata": {}
},
{
"cell_type": "code",
"execution_count": 19,
"source": [
"russia = df[df.admin == 'Russia']\n",
"russia.plot()"
],
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"<AxesSubplot:>"
]
},
"metadata": {},
"execution_count": 19
},
{
"output_type": "display_data",
"data": {
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
],
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAXAAAABuCAYAAAA+skhgAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8rg+JYAAAACXBIWXMAAAsTAAALEwEAmpwYAAAwMklEQVR4nO29d3xc1Z33/z7Tq0Yz6r1Y7t2WjQGHskBCIAFCgE0nCZv2hCd5NpvdzS7Ppu1vQ7JJNmXTHtgUIEvqppACIUDo4N5xt7rVZzSa3u75/XFHY8mqtiVLA+f9esmeOXPv3O9cjT733O/5FiGlRKFQKBT5h2G+DVAoFArF+aEEXKFQKPIUJeAKhUKRpygBVygUijxFCbhCoVDkKaaLebDi4mJZX19/MQ+pUCgUec+uXbsGpJQlZ49fVAGvr69n586dF/OQCoVCkfcIIdomGlcuFIVCochTlIArFApFnjIjARdC/K0Q4pAQ4qAQ4idCCJsQokEIsU0IcUII8TMhhGWujVUoFOPJaJIj3cM8duA0XYEoAOF4iiM9w6Qy2jxbp5hLpvWBCyGqgI8BK6SUMSHEz4G3ATcAX5NS/lQI8T3gLuC7c2qtQvEapS8Ux201caQnRIXHTrnHRkaTvHCin+N9YfzhBE3FLhKpDH/Yf5oan4NIIsO9O47wusXFXL2sdEbHkVKyuz3AykoPNrNx0u1O9IWxmgwYDYKf7+xgV1sAo0Fwzw3LWVzmnq2PrZiGmS5imgC7ECIFOIBu4K+Ad2RffwD4LErAFYpZpW0wwtNH+zEaBN1DMcxGAxvrvaQyGt3BKGaDoLHEicNiwmA0sKM1wIHTQWxmI+tqClle4abQMfObYyEEG+t8027XVOpiKJrkG08e50cvtjJSUml9jZePlboQQpzvR1acA9MKuJSySwjxFaAdiAGPA7uAISllOrtZJ1A10f5CiA8CHwSora2dDZsVilcVmiYxGCYWvLoiJ+/e4mAgksAoBOF4GgmUFlgpdlmwmox0DcWoLLBTYDfRM5zg9uaaSd9vMqSU5yy6e9qH0DTJJ65dwo5WPz3BOH84cJq+UJxl5W7etaVOCfkcMxMXihe4GWgAhoBfANfP9ABSyvuA+wCam5tV6UOF4iymE1uDQVDqtgFQ5LKOe73G58g9rih0jHt9JoQSaQKRJHVFzhltL6Vka1MRq6sKaB2Mct9zpwjF9fncsd4w/3j9MgLRFA9va+P6VRXUFTkwG1XMxGwzExfKtUCLlLIfQAjxK+ByoFAIYcrOwquBrrkzU6FQzCUFNjMFNvOMtxdCYDYZKXIZKHbb2PV/r+P0UIwdrX66hmIsL3fzqf/Zz9PH+vneM6dYWVnAl966hvrimV0gFDNjJgLeDmwRQjjQXSjXADuBvwC3AT8F7gR+O1dGKhSKhYkQgmRaw2IyUF/szAn0/c+eIprM8K5L6nDZTCwpc1HksnCyL0yZx4bLelFzCF+1iJk0dBBCfA74ayAN7AH+Bt3n/VPAlx17l5QyMdX7NDc3S5WJqVC8OtA0XTsmcgGN+NTjqQy/2dNFmz/KVUtKWFvtwWZR4n2uCCF2SSmbzx6f0ZmUUn4G+MxZw6eAzbNgm0KhmGP6QnEOnR5mQ40Xj2PmrpKJONoTor7YgdV0JswwmdY4NRBmWXkBoM/MD50OctePdtIzHMdtM+GPJOn0R3j9ygrc9guzYa7JaBLjOS4EzwfqUqhQvMrQNEkyo2EyCE70h3nsYA/fefok6YzG9961kdevLL+g919aPjbOO53RSCTTuC1GApEENrOJx1/pYWdrgEA0CUAonuZnOzroHY7zzPFBDncPYxCCuiI7f/O6RprrfOccOXOhJNIZgrFUboF4NPkg3qAEXKF41TAUTfLogR4eO9TDM8f6sZuNCAGbG3zcc8NyblxTQfEEUSyTEU2myWgS9ySLm+mMxtHeEA++2Mbx3mHqihwUu2w89koPTouedHQ2Tx/tH/P8aG+Ik/0R/vXmVVzWVHxuH3gCEukMJoOBRw92c9+zp7jz0nqG4ymSaY0NdV5WVhbgyLpwrCYjpe4zdxGxZAa7ZfLkpYWIEnCFIs+JJNI8c6yff/nNQQYjSSwmA2/fXMst6yrZUOc97/C9rkBsTFZlOqORykjuf+4UTx7po3UgQjCWyr2+uyN4XsfpCyVwztKi5mA4SSqj8c0nj3OsN8zf/WIfbquJ168s56t/PsbWpmI+f/NKfrK9nSKnlU31PhpKnLisprwTb5jhIuZsoRYxFYrZ5yfb2/nMbw+RzGhUFdr58m1rLmg2G09lsJmNYxKM+odjPHG4ny88ejgX7z0bLCt386k3LuOqpTNL9Z8pO1v9fPlPR9naVIzXacFsFFR7Hayq8uCxmznRF+KXu7roDsZ446oKrl91YW6lueaCFjEVCsXC5ERfmIdeakMIeMPKMr56x7oLDtEzZUU7rUmGwgnsZiPhRIZWf2TWxNvrMPPl29ZQ4bFz/3OnuHRREVaTkUQ6M2Zx9FwJxVNoEprrffzsQ5fSHYxxeig2rjxAU6l+4ch3lIArFHlKTzDO3Q/v5khPiBUVBXzx1jUzEu94KkNGkzm3haZJ+sMJSlxWDAaByWjgaE+I/Z1DSAkdgSiheJp4Oo3DYiSazJy3zV6HmetXVXD31U38v2dPEo6nKHRYON4b5khPiFgyTW2Rk/IC25jF0ldOD/P7/ae5bWM1bpsJq8lAgX18jRe3zUw4ceYi47aaeHhbO199/BifefPKcQuw+Y4ScIUiD9E0yQ+e19PXr1teyr+8aQVe5/RFqxLpDD/Z3o7LauL25hoS6QydgRiVHjualCSSGv2hBN988jh/ONCd289oEFiMBmKp8xfvxaUuLmn0kc5Ibv72CxS5LBzNLnQ+fqiH08F4bttb1lVy45oKFpe6sZmNPHqwm+88fZLvPXMSm9lIZaGde29dxab6onHHGX0Ri6YyfOTKRezvCuKPJM/b9oWKEnCFIg/Z0ernvudaAPj0m1dQO8MaJg+82MoX/ngEgOdPDPCNt63nUFcQl9XEK93DSE2jzGOnud7LY4d6yGSTdTKaJKadv3gDdAfj/GJnJ4m0XqNcSkmR08JQLEV/eGwO4G/2nuY3e08DIAS5aoeahGgyg9NspMsfY1P95MfLaJIDnUHuf+4UVpORAruZQ6eDrKz0sLbGg8VowJTn9VmUgCsUecax3hBfePRI7vmqKs+M9/3Tod7cY4fFyPHeEC+d8lPstnKqL8yvdndS5LKyqcHH05+8ivf/aAfH+8KzYvdo1wbAYCRJfZGDwUiSqS4NE8VZhBJpbKOiRvqG45QWjI3nTqQz/HRHBy+f8ufGjnQPc8WSOB99eDdD0SQ3rK7gP+5Yh8WUn0KeN1bf/fBuvvKno8RTmVwKr0LxWqTQYWZTvZd1NbpwP5KdqU5FOJHm3kcPs6stAIBBwLu31HPPrw/ymz1dWIwGdrUH6ArGSaQ1vvr4MW797otctmi8i2I26Qvpvvdz5dRAhL3ZsMWeYJy3fOdFfrq9nX/61QE+/NAufr6jg3/45X76Q2Nn9m2DUf57Wxv+SBJN6iVxH3yplQ5/dFY+z0R0+KPsaQ/MyXvnTRjhQy+3UV1o53WLi/P+tkehuFDiqQzPHRvgs787hCYlH79mMW/bPHm9/aeO9vDRH+8d48O+emkJd21t5F3f3waA1WRgRWUBh7qCLK8oIJHWuGZ5Kd/+y8k5+QxVXjtVhXZO9IbxR8/dP200CN69pY5oMs3Pd3aOec1sFKQyM9e2xmInH7iikdaBCPs7dX+5y2Zia1Mx77u8HovRgM1sPK9s0R+/3Mba6kJWV8/8Tuls8j6M8N1b6ubbBIViwWAzG7luZRlXLSsho0mSaY2WgQgvnxrkbZtqxjVS2FxXNC493Oe04rGbMRoEGU2SSGvsaR9iSZmL/nCCQCTFcCw1xgc9W1R57WiaxvYW//QbT0JGk/zoxdYJXzsX8QZ9Rv9PvzowbnxXWwCLycBHr26acv9oMp3NfB0v8O+aQ+3KGwFXKPKdSCLNSycHOXg6yPsub8BzjgWdJiqwZDYaMBt1Qbe
},
"metadata": {
"needs_background": "light"
}
}
],
"metadata": {}
},
{
"cell_type": "markdown",
"source": [
"Russia looks off because of Chukchi runs across E180. We need to move the parts on the other side of the map to the right."
],
"metadata": {}
},
{
"cell_type": "code",
"execution_count": 20,
"source": [
"def shift_geom(geom, cutoff=0):\n",
" border = shapely.geometry.LineString([(cutoff,-90),(cutoff, 90)])\n",
" splitted_geom = shapely.ops.split(geom, border)\n",
" moved_geom = []\n",
"\n",
" for item in splitted_geom:\n",
" minx, miny, maxx, maxy = item.bounds\n",
" if minx < cutoff:\n",
" moved_geom.append(shapely.affinity.translate(item, xoff=cutoff + 360))\n",
" else:\n",
" moved_geom.append(item)\n",
"\n",
" # got `moved_geom` as the moved geometry \n",
" return shapely.ops.unary_union(moved_geom)\n",
"\n",
"russia_copy = russia.copy()\n",
"russia_copy.loc[\n",
" russia.name == 'Chukchi Autonomous Okrug', 'geometry'\n",
"] = russia_copy.loc[\n",
" russia.name == 'Chukchi Autonomous Okrug', 'geometry'\n",
"].apply(shift_geom)\n",
"\n",
"russia_copy = russia_copy\n",
"\n",
"russia_copy.plot(figsize=(20, 20))"
],
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"<AxesSubplot:>"
]
},
"metadata": {},
"execution_count": 20
},
{
"output_type": "display_data",
"data": {
"text/plain": [
"<Figure size 1440x1440 with 1 Axes>"
],
"image/png": "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
},
"metadata": {
"needs_background": "light"
}
}
],
"metadata": {}
},
{
"cell_type": "markdown",
"source": [
"#### France"
],
"metadata": {}
},
{
"cell_type": "code",
"execution_count": 21,
"source": [
"france = df[df.admin == 'France']\n",
"france.plot()"
],
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"<AxesSubplot:>"
]
},
"metadata": {},
"execution_count": 21
},
{
"output_type": "display_data",
"data": {
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
],
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAXsAAAD0CAYAAAB6r4ayAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8rg+JYAAAACXBIWXMAAAsTAAALEwEAmpwYAAAZ1ElEQVR4nO3de3Bc5Znn8e/TrbutqyXbsmVbMjZ2zGBuQpg4IRNgAglsTFLZrKlJ1plh15ssk2V2spXhsn/sTE1qyc5UEqaS2R1XIOOtIQsUE8cMEyDmkplAwEbGXHwBW/gu32Td763ufvaPPhCNLduou+WWdH6fKkp93nPU7/P6oJ9evX1Ot7k7IiIyvUVyXYCIiEw8hb2ISAgo7EVEQkBhLyISAgp7EZEQyMt1AaNVV1d7fX19rssQEZlStm/fftrda853zKQK+/r6epqbm3NdhojIlGJmhy50jJZxRERCQGEvIhICCnsRkRBQ2IuIhIDCXkQkBBT2IiIhoLAXEQkBhb2ISAhk5aYqMzsI9AIJIO7ujWZWBTwO1AMHgS+7e2c2+hOZ7F4/2MHTbx/jwOl+Nny1kcK8CGaW67IkxLI5s/+0u1/p7o3B9r3AC+6+FHgh2BYJhZ9uPczG3xyitXOQb/z9dr72k9d570RvrsuSEJvIZZw1wMbg8UbgjgnsS2TSGIzFOd03zDWLKqgsKeDto92c7h3izg2vcsePXqZ3aISjnQO5LlNCJlvvjePAL83Mgb919w3AHHc/Huw/AcwZ6xvNbD2wHmDhwoVZKkdk4nT0xwCoKM4nEkktzfQNx9m0o5Xmgx28+n47DdUlHOkYpHMghuHUV8+gY2CEWKKf//r4mxzrGuJ/fvFyVtaVa3lHLopshf0n3L3VzGYDW8zs3dE73d2DXwRnCX4xbABobGzUB+LKpPfLXSe4f9M7/J+vXMPc8iJqy4vZsvskz7xznJM9Q1SWFFCUF+VU7zCFeREK8qKMJJLkRWBFbSk7W7s50TPMd/5pNwuqSlhQWULCna+sWsScsqJcD0+mqayEvbu3Bl9PmdkmoAk4aWa17n7czGqBU9noSyTX/t21C3j45QM8+My77D/dD0BRXoRlc0t5vy21XVtewCeWzMKA4YRjwPK5ZWw7mLpGoaIkn/b+GNsOdrJqcRVvH+3mH986xg2X1lBWnM+yOaWsWjyLmtLCHI1SppuMw97MZgARd+8NHn8G+HPgKWAd8GDwdXOmfYlcDO7OztYe3m7tIpl0fv7mMeZVFPPtW5ax/3Q/iWSSeRXFHOkY4PrFVRzrHuJUzzAH2wf45JJZ9McSDMScoZEEs2bm8+uWdgCuWVjBktkzKMyL0N4X+/AFs2NdQ5QW5jG7tIhX32+nvX+YBVUzuK6hKnf/CDLtZGNmPwfYFKw75gE/dfdnzex14Akzuws4BHw5C32JTLj+4TiPNx9m845j9A7HqZpRwK5jqZn37NJCSgqidA+OsLy2lONdQwyPJFg2t5SCaIR4Et443EV+1PjEkmrcIWJwbX0VsXiSllOpmf81iyrYcbiL1Utm0TMYp6C0kMGROBUl+QzE4nz7lmXM1pKOZFHGYe/u+4ErxmhvB27K9PlFLraZRfl88eo6tu7voNYgkXA6+mPMqyhiTlkRO4IwH44lOdg+QFNDFdsOdABw/eIqmuqrKMgzXmk5jZNa4jnWNcjRrkGaGqrIMyMSMfIixist7dywtJqheIKkp/oC4+OXzMrpv4FMP5Pqk6pEJourF1ay5U8+hbuz53gPz+48we7jPbT3DbN8bil7T/YSjRoVJfmc7h3m45fMIpZIEosn2X28l8oZ+Vw2r5zC/AjuMDiSwMzYcbiTeeVFHOoY5Iq6csqL83m55TTVMwtZXDOD8uJ8KmcU6AodyTqFvch5mBlLZpfynz41g3jCefjl/fzklYNEDLoHR+geGKEgGiFq0By8+Lp6ySxi8ST50Qi/eb+dsuI8EgmnP5agvqoECy7XfOtoNzcsraapvorXD3aQdOex9dezZPbMXA5ZpimFvcgFFORFKMhLvZz6havm80pLOz1DI7R29NNYX8nrBzupLClg6eyZzJpZwLYDHYwknMvnlwFQUVxAeXE+J3oGqS4tZPvhTlbUljEUT/B+Wx/RSITFNTP56X9cpatvZMLojdBExqGhZib337acipJ8CgvycU/dGlKUH2HfqT5aTvVx+bwyLp9fRnF+lNWXzOJwxwDvtHbT2RcjnnTcoaWtj+qZhZQV5dM7NMJ/v+1jbD3QnuPRyXRmH/zPOhk0NjZ6c3NzrssQuaDD7f089Pxe3m7toaw4n5KCCMMjTkGesXV/B7PLimjtGmT2zAJmlxVRXBBNXXWTZ1SWFBBLJHltfwcRg9WXVHOkc4D2/hi/+C+fZEFVSa6HJ1OMmW0f9b5kY9Iyjkga6ipLiEZTs/nrGqr49b525pUXUVtRzEjSKS/OZ2FVCYV5EX61tw2A4oIoJflR8qIR9p/q44ZLq4nFkwzEEswuK6KmtJCheCLHI5PpSss4ImmIRIyIwe0ra4klkiyunkEskWT7oU5WL5nF7uM9vLq/naF4gmvrK/nkkllcPq+cFbWl5EWMpoYqTnYP8dr+DgZHEhzrHOT1g538/auHcj00maY0sxdJ06v7O+gaGAGc5XPLONCeumFq97EemuorKcqP8i/7TlNXWUzVjALaeofoG4qzdE4p753so2dohCvqytl5rIfrF8/i2oZK7rn50twOSqYtzexF0rSgsoT+4Tjdg3GSSefy+eU0NVRRW17ItoOdDI0kWFlXTmffMN2DIxzvHmbFvHLeONzF3LJCugZG6B2Ks7CyhL0ne9l1rIeDwS8MkWxT2IukoWsgxsstp8mLGNfVV9IzFOed1m6S7hTn53FdQxUF0SitnYP0jySpKS1k2ZxSDFg5v5zSwtQxdZXFqRuz+oZJOjy38wSvvt/OQCye6yHKNKOwF0nD1uDtEYbiSY51D2E4BVHD3MEgP2q8/H7q7RIWzSrBHcqK8kg67DzWzVAiydBIgvb+GCe6B7lk9kxmlxby8Mv7eeSVAxTmRXM7QJl2tGYvMk4d/TGe23mCa+srGUk4I4kElSUFnOgdpmcowaneIZLuXL+4isGRJD2DMbYf6mROWSHrb1hMU0Mlv9rbRklBHjsPdjCzKI/jPcMMxhI8tPYqbls5L9dDlGlIYS8yThXF+dz4sdn84Pl97G/ro66yiIOnB6ivnsHxriEWzZpB79AIJ3qGOXC6n/yo8T/+zQruvG7hhzP2/3bLcgBeff80L77bBuZ84co6VswrG7PP7sERyovzL9oYZfpR2IuMUyRi3L5yHrevnMe7J3poOdnHr/edprw4n6bFVbyw5yS/aTnNouoZVM3Ip613mI9fUj3m0sz1l1Rz/SXV5+wrmXRe29/OP+9t477PfWwihyXTnMJeJAPL55axfG4Zt1/x26WXmz82h56hETa/eYzugRhzgjto07H5rVb+6rm9tPUOc+9nl+vdMCVtCnuRCVBWlM9XVy3K+HnmV5TQMzTC7y6ryUJVEma6GkdkErt8fjmLZpXQ1FClWb1kRDN7kUmsuCDKpv+8mkRy8rxhoUxNWZvZm1nUzHaY2dPBdoOZbTWzFjN73MwKstWXSJjkRyMU5eu6e8lMNpdx7gH2jNr+LvB9d18CdAJ3ZbEvEREZh6yEvZnVAbcBPw62DbgReDI4ZCNwRzb6EhGR8cvWzP4HwLeBZLA9C+hy9w/e4OMoMH+sbzSz9WbWbGbNbW1tWSpHRERGyzjszex24JS7b0/n+919g7s3untjTY0uLxMRmQjZuBpnNfB5M/scUASUAQ8BFWaWF8zu64DWLPQlIiJpyHhm7+73uXudu9cDa4EX3f33gZeALwWHrQM2Z9qXiIikZyJvqvpT4E/MrIXUGv7DE9iXiIicR1ZvqnL3XwG/Ch7vB5qy+fwiIpIevV2CiEgIKOxFREJAYS8iEgIKexGREFDYi4iEgMJeRCQEFPYiIiGgsBcRCQGFvYhICCjsRURCQGEvIhICCnsRkRBQ2IuIhIDCXkQkBBT2IiIhoLAXEQk
},
"metadata": {
"needs_background": "light"
}
}
],
"metadata": {}
},
{
"cell_type": "markdown",
"source": [
"Ignore all the oversea islands"
],
"metadata": {}
},
{
"cell_type": "code",
"execution_count": 22,
"source": [
"def apply_bounds(df, northwest, southeast):\n",
" x1, y1 = northwest\n",
" x2, y2 = southeast\n",
" boundry = shapely.geometry.Polygon([(x1, y1),(x1, y2), (x2, y2), (x2, y1)])\n",
" df = df.copy()\n",
" return df[df.geometry.apply(lambda x: boundry.contains(x))]\n",
"\n",
"france_copy = apply_bounds(france, (-20, 60), (20, 20))\n",
"france_copy.plot(figsize=(8, 8))"
],
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"<AxesSubplot:>"
]
},
"metadata": {},
"execution_count": 22
},
{
"output_type": "display_data",
"data": {
"text/plain": [
"<Figure size 576x576 with 1 Axes>"
],
"image/png": "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
},
"metadata": {
"needs_background": "light"
}
}
],
"metadata": {}
},
{
"cell_type": "markdown",
"source": [
"#### Netherlands"
],
"metadata": {}
},
{
"cell_type": "code",
"execution_count": 23,
"source": [
"netherlands = df[df.admin == 'Netherlands']\n",
"netherlands.plot()"
],
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"<AxesSubplot:>"
]
},
"metadata": {},
"execution_count": 23
},
{
"output_type": "display_data",
"data": {
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
],
"image/png": "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
},
"metadata": {
"needs_background": "light"
}
}
],
"metadata": {}
},
{
"cell_type": "code",
"execution_count": 24,
"source": [
"netherlands_copy = apply_bounds(netherlands, (-20, 60), (20, 20))\n",
"netherlands_copy.plot(figsize=(8, 8))"
],
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"<AxesSubplot:>"
]
},
"metadata": {},
"execution_count": 24
},
{
"output_type": "display_data",
"data": {
"text/plain": [
"<Figure size 576x576 with 1 Axes>"
],
"image/png": "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
},
"metadata": {
"needs_background": "light"
}
}
],
"metadata": {}
},
{
"cell_type": "markdown",
"source": [
"#### UK"
],
"metadata": {}
},
{
"cell_type": "code",
"execution_count": 25,
"source": [
"uk = df[df.admin == 'United Kingdom']\n",
"uk.plot()"
],
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"<AxesSubplot:>"
]
},
"metadata": {},
"execution_count": 25
},
{
"output_type": "display_data",
"data": {
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
],
"image/png": "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
},
"metadata": {
"needs_background": "light"
}
}
],
"metadata": {}
},
{
"cell_type": "code",
"execution_count": 26,
"source": [
"uk_copy = apply_bounds(uk, (-10, 60), (20, 20))\n",
"uk_copy.plot(figsize=(8, 8))"
],
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"<AxesSubplot:>"
]
},
"metadata": {},
"execution_count": 26
},
{
"output_type": "display_data",
"data": {
"text/plain": [
"<Figure size 576x576 with 1 Axes>"
],
"image/png": "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
},
"metadata": {
"needs_background": "light"
}
}
],
"metadata": {}
},
{
"cell_type": "markdown",
"source": [
"## Output GeoJSON"
],
"metadata": {}
},
{
"cell_type": "code",
"execution_count": 27,
"source": [
"alt_maps = {\n",
" \"china\": china_copy,\n",
" \"usa\": usa_copy,\n",
" \"france\": france_copy,\n",
" \"netherlands\": netherlands_copy,\n",
" \"uk\": uk_copy,\n",
" \"russia\": russia_copy,\n",
" \"spain\": spain_copy,\n",
" \"portugal\": portugal_copy,\n",
"}"
],
"outputs": [],
"metadata": {}
},
{
"cell_type": "code",
"execution_count": 28,
"source": [
"plot_all_countries()"
],
"outputs": [
{
"output_type": "display_data",
"data": {
"text/plain": [
"<Figure size 1440x1440 with 33 Axes>"
],
"image/png": "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
},
"metadata": {
"needs_background": "light"
}
}
],
"metadata": {}
},
{
"cell_type": "code",
"execution_count": 29,
"source": [
"simplify_factors = {\n",
" \"uk\": 0.005,\n",
"}\n",
"useful_columns = [\"ISO\", \"NAME_1\", \"geometry\"]\n",
"\n",
"def get_simplify_factor_by_size(gdf):\n",
" xmin, ymin, xmax, ymax = shapely.ops.unary_union(gdf[\"geometry\"]).bounds\n",
" size = (xmax - xmin) * (ymax - ymin)\n",
" print(\"Size\", round(size, 3), end=\"\\t\")\n",
" if size > 1000: return 0.03\n",
" if size > 300: return 0.02\n",
" if size > 100: return 0.01\n",
" return 0\n",
" \n",
"def simplify_if_needed(country, gdf):\n",
" \"\"\"Simplify the maps based on country size\"\"\"\n",
" country_alias = country_name_aliases.get(country, country)\n",
" if country_alias in df_50m[\"admin\"].str.lower().unique():\n",
" return\n",
" \n",
" factor = simplify_factors.get(country) or get_simplify_factor_by_size(gdf)\n",
" \n",
" if factor:\n",
" gdf[\"geometry\"] = gdf.simplify(factor)\n",
"\n",
"def save_geojson(country):\n",
" gdf = get_gdf(country)\n",
" print(country, end=\"\\t\")\n",
" \n",
" # For backward compatibility\n",
" gdf[\"ISO\"] = gdf[\"iso_3166_2\"]\n",
" gdf[\"NAME_1\"] = gdf[\"name\"]\n",
" \n",
" simplify_if_needed(country, gdf)\n",
" \n",
" print(f'Saving geojson for {country}...')\n",
" gdf[useful_columns].to_file(f\"../src/countries/{country}.geojson\", driver=\"GeoJSON\")\n",
"\n",
"for country in countries:\n",
" save_geojson(country)\n",
" \n",
"print(\"Done. \")"
],
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"canada\tSaving geojson for canada...\n",
"switzerland\tSize 8.935\tSaving geojson for switzerland...\n",
"myanmar\tSize 168.709\tSaving geojson for myanmar...\n",
"uruguay\tSize 25.985\tSaving geojson for uruguay...\n",
"uk\tSaving geojson for uk...\n",
"india\tSize 840.038\tSaving geojson for india...\n",
"egypt\tSize 117.982\tSaving geojson for egypt...\n",
"brazil\tSaving geojson for brazil...\n",
"portugal\tSize 105.727\tSaving geojson for portugal...\n",
"spain\tSize 178.488\tSaving geojson for spain...\n",
"timorleste\tSize 4.486\tSaving geojson for timorleste...\n",
"syria\tSize 33.348\tSaving geojson for syria...\n",
"italy\tSize 138.162\tSaving geojson for italy...\n",
"japan\tSize 661.569\tSaving geojson for japan...\n",
"ukraine\tSize 128.988\tSaving geojson for ukraine...\n",
"zambia\tSize 115.483\tSaving geojson for zambia...\n",
"iran\tSize 284.014\tSaving geojson for iran...\n",
"thailand\tSize 122.959\tSaving geojson for thailand...\n",
"bulgaria\tSize 18.715\tSaving geojson for bulgaria...\n",
"morocco\tSize 231.84\tSaving geojson for morocco...\n",
"russia\tSize 6969.988\tSaving geojson for russia...\n",
"belgium\tSize 7.709\tSaving geojson for belgium...\n",
"germany\tSize 71.47\tSaving geojson for germany...\n",
"france\tSize 142.834\tSaving geojson for france...\n",
"netherlands\tSize 10.818\tSaving geojson for netherlands...\n",
"usa\tSaving geojson for usa...\n",
"liechtenstein\tSize 0.029\tSaving geojson for liechtenstein...\n",
"singapore\tSize 0.067\tSaving geojson for singapore...\n",
"china\tSize 2311.875\tSaving geojson for china...\n",
"korea\tSize 34.227\tSaving geojson for korea...\n",
"slovenia\tSize 4.537\tSaving geojson for slovenia...\n",
"indonesia\tSize 773.715\tSaving geojson for indonesia...\n",
"malaysia\tSize 127.7\tSaving geojson for malaysia...\n",
"Done. \n"
]
}
],
"metadata": {
"scrolled": false
}
}
],
"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.8.8"
}
},
"nbformat": 4,
"nbformat_minor": 4
}