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

1532 lines
1.7 MiB
Plaintext
Raw Normal View History

{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Generate GeoJSON from Natural Earth Data"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Install Dependencies"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"```\n",
"pip install geopandas shapely\n",
"```"
]
},
{
"cell_type": "markdown",
"metadata": {},
"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."
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"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\"))"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [
{
"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')"
]
},
"execution_count": 2,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df_50m.columns"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"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')"
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df_admin0_10m.columns = df_admin0_10m.columns.str.lower()\n",
"df_admin0_10m.columns"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"data": {
"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>"
],
"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]"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df_50m.groupby('admin').count()"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<AxesSubplot:>"
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAA04AAAI/CAYAAABAqYlRAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/Z1A+gAAAACXBIWXMAAAsTAAALEwEAmpwYAACnKUlEQVR4nOzdd3hc1bk18HWm96beu3u3LBuDjek1oQcIEAhJIJWQ3O+GkN5uSE8gIYVQktACCb33YoNtWe5Vlqzey2hGmt7O94dk2bLaSJoqrd+TPJamnPOOGmfN3vvdgiiKICIiIiIiovFJ4l0AERERERFRomNwIiIiIiIimgSDExERERER0SQYnIiIiIiIiCbB4ERERERERDQJBiciIiIiIqJJyGJ5stTUVLGwsDCWpyQiIiIiIgrLzp07e0RRTBvrvpgGp8LCQlRVVcXylERERERERGERBKFxvPs4VY+IiIiIiGgSDE5ERERERESTYHAiIiIiIiKaBIMTERERERHRJBiciIiIiIiIJsHgRERERERENAkGJyIiIiIiokkwOBEREREREU2CwYmIiIiIiGgSDE5ERERERESTYHAiIiIiIiKaBIMTERERERHRJBiciIiIiIiIJsHgRERERERENAkGJyIiIiIiokkwOBEREREREU2CwYmIiIiIiGgSDE5ERERERESTYHAiIiIiIiKaBIMTERERERHRJBiciIiIiIiIJsHgRERERERENAkGJ6JpEkURHn8w3mUQERERUQwwOBFNkccfxD8+qscd/94Dt4/BiYiIiGgukMW7AKJkcrDNjjue3I1j3U4AwJaabqzMN2NVvgmr8s1YmmuETimDIAhxrpSIiIiIIonBiShM7x3pwlee2AXXSaNMfS4/3j3ShXePdA3flmtW44P/PQtSiQCr0we3P4gMvRIyKQd4iYiIiJIVgxPRJOq6Hbj3nRq8sKdt0scuyzXi/50/H1KJgAOtdtz00Hb0ufwwaeS49fQifOWsUkglHI0iIiIiSjYMTjSniKKIPpcfFq1iwscFQyI+qu3BU1XNeG1/O0LixMctStXi4VvWoChVC7vbj1+8dgR/31yH4NATbS4/Kuut+NrZo+tpsrrQPeCFCKClz4X9Lf1I0yuxIFOPkjQd+j2DwSvHpOYUQCIiIqI4EURxkivCCCovLxerqqpidj6i47r6PfjPzhY8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
"text/plain": [
"<Figure size 1440x720 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"df_50m[df_50m.adm0_a3 == 'USA'].plot(figsize=(20,10))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Use 1:50m geometry for some large countries:"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array(['Australia', 'Brazil', 'Canada', 'United States of America'],\n",
" dtype=object)"
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df_50m['admin'].unique()"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [],
"source": [
"import pandas as pd\n",
"\n",
"df = pd.concat([df_10m[~df_10m['admin'].isin(df_50m['admin'].unique())], df_50m])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Adjust the Maps\n",
"\n",
"<span style=\"color: red; font-size: 1.5em\">TO SUPPORT NEW COUNTRIES, ADD COUNTRY NAME BELOW</span>"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [],
"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",
"]\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",
"}"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Make sure all country names are covered:"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[]"
]
},
"execution_count": 9,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"[x for x in countries if country_name_aliases.get(x, x) not in df[\"admin\"].str.lower().unique()]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Preview all countries:"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {
"scrolled": false
},
"outputs": [
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 1440x1440 with 31 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"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()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Handle countries with flying islands\n",
"\n",
"#### USA"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"For countries with flying islands, we need to move the islands closer to the mainland."
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<AxesSubplot:>"
]
},
"execution_count": 11,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"usa = df[df['adm0_a3'] == 'USA']\n",
"usa.plot()"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<AxesSubplot:>"
]
},
"execution_count": 12,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 576x576 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"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))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"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."
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {},
"outputs": [
{
"data": {
"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>"
],
"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]"
]
},
"execution_count": 13,
"metadata": {},
"output_type": "execute_result"
}
],
"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"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {
"scrolled": false
},
"outputs": [
{
"data": {
"text/plain": [
"<AxesSubplot:>"
]
},
"execution_count": 14,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 864x864 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"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))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"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."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Portugal"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<AxesSubplot:>"
]
},
"execution_count": 15,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"portugal = df[df.admin == 'Portugal']\n",
"portugal.plot()"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<AxesSubplot:>"
]
},
"execution_count": 16,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 576x576 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"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))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Spain"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<AxesSubplot:>"
]
},
"execution_count": 17,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"spain = df[df.admin == 'Spain']\n",
"spain.plot()"
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<AxesSubplot:>"
]
},
"execution_count": 18,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 576x576 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"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))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Russia"
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<AxesSubplot:>"
]
},
"execution_count": 19,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"russia = df[df.admin == 'Russia']\n",
"russia.plot()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"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."
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<AxesSubplot:>"
]
},
"execution_count": 20,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAABH4AAAJKCAYAAABajoKYAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/Z1A+gAAAACXBIWXMAAAsTAAALEwEAmpwYAAEAAElEQVR4nOzddXyd9fn/8dd93HLi7mnSppq64sV1uI3BBmM+Zt/5fszHlI0x34ANhg53KQUq1F3SJG3c9bif+/dHSmhoksaTptfz8eDR5pxbPickp+d+35/PdSmqqiKEEEIIIYQQQgghph7NRA9ACCGEEEIIIYQQQowNCX6EEEIIIYQQQgghpigJfoQQQgghhBBCCCGmKAl+hBBCCCGEEEIIIaYoCX6EEEIIIYQQQgghpijdeJ4sKSlJzcvLG89TCiGEEEIIIYQQQkxp27dvb1NVNbmv58Y1+MnLy2Pbtm3jeUohhBBCCCGEEEKIKU1RlOr+npOlXkIIIYQQQgghhBBTlAQ/QgghhBBCCCGEEFOUBD9CCCGEEEIIIYQQU5QEP0IIIYQQQgghhBBTlAQ/QgghhBBCCCGEEFOUBD9CCCGEEEIIIYQQU5QEP0IIIYQQQgghhBBTlAQ/QgghhBBCCCGEEFOUBD9CCCGEEEIIIYQQU5QEP0IIIYQQQgghhBBTlAQ/QgghhBBCCCGEEFOUBD9CCCGEEEIIIYQQU5QEP0IIIYQQQgghhBBTlAQ/QgghhBBCCCGEEFOUBD9CCCGEEEIIIYQQU5QEP0IIIYQQQgghhBBTlAQ/QgghhBBCCCGEEFOUBD9CCCGEEEIIIYQQU5QEP0IIIYQQQgghhBBTlAQ/QgghhBBCCCGEEFOUBD9CCCGEEEIIIYQQU5QEP0IIIYQQQgghhBBTlAQ/QgghhBBCCCGEEFOUbqIHIIQQIxUMR3EHwrj8IVz+MC5/GHcgTEqMkVkZdvRaybiFEEIIIYQQpyYJfoQQJ63yZhfffXYvW6s6+3zeqNPw3jfPJtVuGueRCSGEEEIIIcTkIMGPEOKktamyg/RYM189N5lUu5E4i4EEq4F4i54Eq4FYsx7dCGf77KnrYn1FG95AhFZXgIw4MwlWPQadBoNOg16rIdFqZHlBAoqijNIrE0IIIYQQQojRIcGPEOKkdcvyXG5ZnkurK8Br+xo53OrmvFnT0GpGFsC4/CHKW9zEmfXMybBTkGyjvNnF41tqWVfeSps7QLsniEZRCEeiLMiJpzBlPskxxlF6ZUIIIYQQQggxOiT4EUJMei5/iHfLWtEdDXRe3ddErFnP/7t0FjqthhiTjrNmpJBiN4449AGIMemJRlXWHGyhKNXGWTNSWJATz4Kc+OO2VVVVZvoIIYQQQgghJi0JfoQQk1pNu5f/ba/l4U3VdPlCxBh1OP1hAKrbvcSa9ViNWmZnxHLj0pxRO+/ivAQW5yWccDsJfYQQQgghhBCTmQQ/QohJ6cmttZQ1u0iwGZieFsMDty0hP8lKnMXAhoo23i1rpd0dJKqqBMJRVFTeK29ld20XNR1eYow6LivJGFR4I4QQQgghhBBTlQQ/QogJ5Q2G+du7RyhrdpEWa2Jmmp1VRUnEWw08sbUWVyDca/t5WbEk2YzkJFj44eWziDHpAWhx+nnzYDOtrgBOX3dL91f3NVGSHYdeqyEQjvDWgRaq2j0kWA2k2o2cUZQ84uLPQpwqAuEIDm8IVyCM2x9GUWBuZqzMehNCCCGEmOQk+BFCTCiLQcf01Bie2VnH1qoOqtu9VLS6eedQC3qdhlXZiVwwO43FufEoisKeui66vEFqO338/q1yPn/WNBJtRlLsJm5elgt0X6BurexEr1WoavP0dPu6ZF46/lCE2g4vDl8IzRhdsIYjURq6/LgDYXITLViN8lYrRs++egd1nV6Mei1GnQaTXotJp8Wk1/Q8lmg1jHog8+LuRh7d3L3ksrLNg6rC5SUZ3HVuEdOSbaN6LiGEEEIIMXoUVVXH7WSLFy9Wt23bNm7nE0IMnicQ5qlttTy3q4GMOBM/uWIOibbR7VIVjkRpdPjJTrD0+byqqvhCEUJhFYc/SCAUJSfRgkGr4bV9Tbxb1sqRVg/xVj3L8hP55Ko8wlEVfR+zdlRVxR0I0+4O0u4JkptoIekEryca7V42FopGsR+dSTRUWyo7+Nwj22n3BHseW5ATxxUlGXxiRR6aUSg+LU5dLU4/p/1qLcFwtN9tDFoNv7u+hEvnZQz7PKqq4gqE0WkUtlV18sLuBv63va7f8926Mpevnjcdi0FCTiGEEEKIiaAoynZVVRf39Zx8QhNCAN3Bz+NbazHptdywJAe9bnSXQHmDYb75vz28vLeR0wqTKE6LoTDFxqrCJLLiLaiqSosrQJPTT6vLz546J3vquqhs8zA3M5Y5mbHMSIvh0nkZzMuOJcao4/89v5/HttQwNyuWpfkJrJyWxBlFSSiKgqIoxJj0xJj05CVZe41la1UHGyvaefNgE13eEL5gBG8wgi8UAeBXV8/juiXZw3qda0qbe4U+ADtruthZ00V9l4/vXTJreN9AIYAUu4k9d59PuydImytAh6c72Gxzd/8d4LaVeWTEmQd1PFVVqev0EY6q7K130Njlo6zZzZsHmnqKqJ9IMBLlH+sqeWZHPRu+fQ4mvXbYr08IIYQQQow+mfEjhAAgGI4SikTHbFlSuzvA2kOtGHUadtZ08dyuepJtRhQFtBqF+i4fXd4QAHaTjpLsOM4oSuZTp+XzwPpKnt9dT1mTm2AkikGr4RdXzaUg2cq7h1p5ansdXd4gt63K4xvnz+h3iUs0qvKv9ZU8u7OeA43OXs/FmvVcVpLOtYuymZc1cN0SfyjCuvI2nL4Q/nAEfyiKPxTB5Q/zyt5Gajq8fe63LD+Bxz69XGb9jFCLy0+LM0B9l492d5DkGCPpsSYy4szEW/RSc2aQtld38KVHd9Lg8I/aMQuSrTxy+7JBB09CCCGEEGJ0DDTjR4IfIU5RkajKS3saKG1yYTVosZv1FCbbaHUH2FXbxZfOKSLBahjVc36wlCsSVXl6ex0pdhO5CRae2l7H3noH26s7j9unMMXGqmmJrJiWRH2Xl5f3NLKjpguAgiQrl5aks3JaEuGISoPDRyAU4fSi5ONm+XxUIByh3R2kwxPE5Q+zICcOk16LLxjh9f1N2M06Ys0G5mbGYjg6+8nlD/HOoVb+tLaC0ibXkF67QafhpqU5fOfiYow6mRExXK/ta+Lz/91OtJ9/um4/LZ8fXCqzqgayu7aLV/Y2cqTNw5sHmsfkHFfMz+Bj8zNZkp+ATWpcCSGEEEKMOQl+hJiiNla08cvXSun0hkiPNXHmjGSmJdtodwdpcfk5e0YKJdlxPdu3OP1sqepgS2UH6yvaONLqQa9ViERVoirkJFhYkpfAnEw701NjWDktkUhUHVHnq9+/VcYLuxvwBML4ghE0GoVkm5HyFjfQPbtnblYsxekxFCTZSLYZaXb6aXT4aXL4eW1/E95g9xIsRYHZGXaW5CZwxYIMnt/ZwBsHmqnv8vU6Z0lWLM99YRWKohCNqvz7/Sp21XbR5g6QGmPivFmp2M163j/cTps7QJs7QKu7e+lMmztA4Jj6KacXJfGvW5dQ2uTkMw9vp3GIsyMy48xcMDuNz55ZQIrdNOzvo+j2uzcOUd7iJjnGSJLNSMoHf9qNJMcYSY0xyYyqAeyrd/Clx3ZS2eYBIMaoO65z3mjSahRWFCSSEWfixqU5LMiJH7NzCSGEEEKcyiT4EeIkp6oqTn+YzUfa2VHTRSQaxekL89KeBjzBCEk2A589cxqJNgM/fvEAnUeXTBWnxXDfjQuYnhrD9uoOHn6/mh01XVgMWlQVDjV/OGvl9tPysZv0lDY5CUVUKtvcmPRaQpEotyzPpSC5ux7PcEWjKuGjS63eK2slPc5EQZKV9DgzVW0ewhGVrVUddPlCdHmDdHlDFKfHsCw/gRZngBf3NJIZZ2ZJXjwXzknj3Jmp6LQa/KEI++odlDa5mJZsY3amHY2iYDPq8ATC/PjFAzy9o45wf1NETiDJZuTZz68kO8GCLxjhqe21/P2
"text/plain": [
"<Figure size 1440x1440 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"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))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### France"
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<AxesSubplot:>"
]
},
"execution_count": 21,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"france = df[df.admin == 'France']\n",
"france.plot()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Ignore all the oversea islands"
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<AxesSubplot:>"
]
},
"execution_count": 22,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 576x576 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"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))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Netherlands"
]
},
{
"cell_type": "code",
"execution_count": 23,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<AxesSubplot:>"
]
},
"execution_count": 23,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAXQAAAD0CAYAAACLpN0/AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/Z1A+gAAAACXBIWXMAAAsTAAALEwEAmpwYAAASdUlEQVR4nO3dfZBd9X3f8fcHPfIgQFQrVbbAshnZDbUH4Vkr7jB1Y/ADJR4eOkPGbUI1Y2ZEMqZ1Zpy42O60ZDzpENeYzDQJrXCYahK7LhmbQkmTWiHQjD0J9soWICIImMi2hKpdMAKBQELab//Yo3oj73LPLnu1V4f3a+bOOed3ztn7YZE+Ovfs7+5NVSFJOvmdMt8BJElzw0KXpI6w0CWpIyx0SeoIC12SOsJCl6SOaFXoSXYleSTJ9iQjzdhNSfY0Y9uTXN7fqJKk17JwBse+v6qeOW7s1qr6wlwGkiTNzkwK/XVbsWJFrV279kQ+pSSd9LZt2/ZMVQ31Oq5toRfwjSQF/Jeq2tyM35DkXwIjwCer6rnX+iJr165lZGSk5VNKkgCS/KDNcW1/KHpxVb0b+KfAx5O8D7gNOB9YD+wFbpkmyKYkI0lGxsbGWj6dJGmmWhV6VT3dLEeBu4ANVbWvqo5W1ThwO7BhmnM3V9VwVQ0PDfV8xSBJmqWehZ7k9CTLjq0DHwJ2JFk96bCrgR39iShJaqPNPfRVwF1Jjh3/lar60yR/kGQ9E/fXdwHX9yukJKm3noVeVU8BF04xfm1fEkmSZsV3ikpSR1joktQRFrokzaGq4vmXX+XI0fET/twn9J2iktQ1B155lX0vvMJpixfwrSef5W/2HWDJwlP4670HGD3wCv/h6nfxrjefRTOxpK8sdEmapUd2P8+6VWdw9mmLuep3v8Xu514G4B+uXsbChaewY88LXPE73+KLv3Ah/+zda/qex0KXpFnY/dxB9uw/yEuHjvBv797x/8scYOzFw7x8+Ah/7/TFDC1bzNP7X36NrzR3LHRJmoXH9h7g1//oYQ4cOsI/Ov8czlx6NosXnsL4eLHvhUOMHjgEh46yaOEp/OLPvuWEZLLQJWkW/uKJMQ4cOsK5y09l9IVDfH/sJVacsZhTEtYsP5VVZy3lvHNO460rTmf56YtPSCYLXZJmqKp48KkfA7DyzCVs+8F+Fi0I61Yu48j4ON/ZNfGLZ1eduZS3r1p2wnJZ6JI0Q3d9bw+nLV7AhrXnsP/gIf7J24fY+/zL/OVTz/Kms5Zy4Zqz2Pv8K/zPh55m/8HDfPCCVSckl4UuSS2Njxf3Pz7KjV97hMNHx7lwzVn87bMH+ZvRl7jo3LMAePr5V3j6+VcA+NjFa/n1D/+DE5bPQpeklr755DNct+UnH9Kz/+VXGT5vOY+PHuD5l48AMPyW5Zx92iKWLV3ERect59TFC05YPgtdklrYsWc/D+/ez4a1yymgCkZ+8BxHx4vTlyzkqWde4m1Dp/Mvfva8EzLnfCq+9V+Sevj6d3fzsf86whP7XuTi81cwduAQu597maFlSzh4+Cg/+vHEPPOq4vfu/z67nzs4Lzm9Qpek1/DSoSP80churlj/Jh7+0fP83DuG+NLG93D+0Ok8d/BVHnh8lN+9/0mSsPy0RTw5+iKLFszPtXKq6oQ92fDwcPkh0ZJORq+8epSDh49yzjRzync/d5Bbtz7BkkWn8JtXvXNOf3dLkm1VNdzrOG+5SFILSxctmLbMAVacsYRnXzrE+9YNnZBfxDUVC12S5sChV8e5YPWZvOnspfOWodU99CS7gAPAUeBIVQ0nOQf478BaJj5T9Beq6rn+xJSkwXbWaYv41GUnbs75VGZyhf7+qlo/6T7OjcB9VbUOuK/ZliTNk9dzy+VKYEuzvgW46nWnkSTNWttCL+AbSbYl2dSMraqqvQDNcmU/AkqS2mk7D/3iqno6yUpga5LH2j5B8w/AJoDzzjtvFhElSW20ukKvqqeb5ShwF7AB2JdkNUCzHJ3m3M1VNVxVw0NDQ3OTWpL0U3oWepLTkyw7tg58CNgB3ANsbA7bCNzdr5CSpN7a3HJZBdzVTJRfCHylqv40yXeAO5NcB/wQuKZ/MSVJvfQs9Kp6CrhwivFngUv7EUqSNHO+U1SSOsJCl6SOsNAlqSMsdEnqCAtdkjrCQpekjrDQJakjLHRJ6ggLXZI6wkKXpI6w0CWpIyx0SeoIC12SOsJCl6SOsNAlqSMsdEnqCAtdkjqidaEnWZDke0nubbZvSrInyfbmcXn/YkqSemnzmaLHfALYCZw5aezWqvrC3EaSJM1Gqyv0JGuAnwe+1N84kqTZanvL5beBTwHjx43fkOThJHckWT6nySRJM9Kz0JN8BBitqm3H7boNOB9YD+wFbpnm/E1JRpKMjI2Nvc64kqTptLlCvxi4Isku4KvAJUn+sKr2VdXRqhoHbgc2THVyVW2uquGqGh4aGpqz4JKkv6tnoVfVp6tqTVWtBT4K/HlV/VKS1ZMOuxrY0aeMkqQWZjLL5XifT7IeKGAXcP1cBJIkzc6MCr2qHgAeaNav7UMeSdIs+U5RSeoIC12SOsJCl6SOsNAlqSMsdEnqCAtdkjrCQpekjrDQJakjLHRJ6ggLXZI6wkKXpI6w0CWpIyx0SeoIC12SOsJCl6SOsNAlqSMsdEnqCAtdkjqidaEnWZDke0nubbbPSbI1yRPNcnn/YkqSepnJFfongJ2Ttm8E7quqdcB9zbYkaZ60KvQka4CfB740afhKYEuzvgW4ak6TSZJmpO0V+m8DnwLGJ42tqqq9AM1y5dxGkyTNRM9CT/IRYLSqts3mCZJsSjKSZGRsbGw2X0KS1EKbK/SLgSuS7AK+ClyS5A+BfUlWAzTL0alOrqrNVTVcVcNDQ0NzFFuSdLyehV5Vn66qNVW1Fvgo8OdV9UvAPcDG5rCNwN19SylJ6un1zEO/GfhgkieADzbbkqR5snAmB1fVA8ADzfqzwKVzH0mSNBu+U1SSOsJCl6SOsNAlqSMsdEnqCAtdkjrCQpekjrDQJakjLHRJ6ggLXZI6wkKXpI6w0CWpIyx0SeoIC12SOsJCl6SOsNAlqSMsdEnqCAtdkjqiZ6EnWZrk20keSvJokt9oxm9KsifJ9uZxef/jSpKm0+Yj6A4Bl1TVi0kWAd9M8ifNvlur6gv9iydJaqtnoVdVAS82m4uaR/UzlCRp5lrdQ0+yIMl2YBTYWlUPNrtuSPJwkjuSLO9XSElSb60KvaqOVtV6YA2wIck7gduA84H1wF7glqnOTbIpyUiSkbGxsTkJLUn6aTOa5VJV+4EHgMuqal9T9OPA7cCGac7ZXFXDVTU8NDT0evNKkqbRZpbLUJKzm/VTgQ8AjyVZPemwq4EdfUkoSWqlzSyX1cCWJAuY+Afgzqq6N8kfJFnPxA9IdwHX9y2lJKmnNrNcHgYummL82r4kkiTNiu8UlaSOsNAlqSMsdEnqCAtdkjrCQpekjrDQJakjLHRJ6ggLXZI6wkKXpI6w0CWpIyx0SeoIC12SOsJCl6SOsNAlqSMsdEnqCAtdkjrCQpekjrDQJakj2nxI9NIk307yUJJHk/xGM35Okq1JnmiWy/sfV5I0nTZX6IeAS6rqQmA9cFmS9wI3AvdV1TrgvmZbkjRPehZ6TXix2VzUPAq4EtjSjG8BrupHQElSO63uoSdZkGQ7MApsraoHgVVVtRegWa7sW0pJUk+tCr2qjlbVemANsCHJO9s+QZJNSUaSjIyNjc0ypiSplxnNcqmq/cADwGXAviSrAZrl6DTnbK6q4aoaHhoaen1pJUnTajPLZSjJ2c36qcAHgMeAe4CNzWEbgbv7lFGS1MLCFsesBrYkWcDEPwB3VtW9Sf4SuDPJdcAPgWv6mFOS1EPPQq+qh4GLphh/Fri0H6EkSTPnO0UlqSMsdEnqCAtdkjrCQpekjrDQJakjLHRJ6ggLXZI6wkKXpI6w0CWpIyx0SeoIC12SOsJCl6SOsNAlqSMsdEnqCAtdkjrCQpekjrDQJakj2nym6LlJ7k+yM8mjST7RjN+UZE+S7c3j8v7HlSRNp81nih4BPllV302yDNi
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"netherlands = df[df.admin == 'Netherlands']\n",
"netherlands.plot()"
]
},
{
"cell_type": "code",
"execution_count": 24,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<AxesSubplot:>"
]
},
"execution_count": 24,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 576x576 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"netherlands_copy = apply_bounds(netherlands, (-20, 60), (20, 20))\n",
"netherlands_copy.plot(figsize=(8, 8))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### UK"
]
},
{
"cell_type": "code",
"execution_count": 25,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<AxesSubplot:>"
]
},
"execution_count": 25,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"uk = df[df.admin == 'United Kingdom']\n",
"uk.plot()"
]
},
{
"cell_type": "code",
"execution_count": 26,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<AxesSubplot:>"
]
},
"execution_count": 26,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 576x576 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"uk_copy = apply_bounds(uk, (-10, 60), (20, 20))\n",
"uk_copy.plot(figsize=(8, 8))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Output GeoJSON"
]
},
{
"cell_type": "code",
"execution_count": 27,
"metadata": {},
"outputs": [],
"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",
"}"
]
},
{
"cell_type": "code",
"execution_count": 28,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 1440x1440 with 31 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"plot_all_countries()"
]
},
{
"cell_type": "code",
"execution_count": 29,
"metadata": {
"scrolled": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"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",
"Done. \n"
]
}
],
"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. \")"
]
}
],
"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
}