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

1914 lines
2.9 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 matplotlib\n",
"```"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Download Data\n",
"\n",
"Download datasets (_Admin 0 - Countries_ in [1:10](https://www.naturalearthdata.com/downloads/10m-cultural-vectors/), and _Admin 1 States, Provinces_ in 1:10 and [1:50](https://www.naturalearthdata.com/downloads/50m-cultural-vectors/)) from Natural Earch Data:"
]
},
{
"cell_type": "code",
"execution_count": 35,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Skip ne_10m_admin_0_countries.zip because it already exists\n",
"Skip ne_10m_admin_1_states_provinces.zip because it already exists\n",
"Skip ne_50m_admin_1_states_provinces.zip because it already exists\n",
"Done. \n"
]
}
],
"source": [
"import os\n",
"import requests\n",
"\n",
"data_dir = os.path.expanduser(\"~/Downloads\")\n",
"if not os.path.exists(data_dir):\n",
" os.mkdir(data_dir)\n",
"\n",
"def download_files(skip_existing=True):\n",
" for url in [\n",
" \"https://www.naturalearthdata.com/http//www.naturalearthdata.com/download/10m/cultural/ne_10m_admin_0_countries.zip\",\n",
" \"https://www.naturalearthdata.com/http//www.naturalearthdata.com/download/10m/cultural/ne_10m_admin_1_states_provinces.zip\",\n",
" \"https://www.naturalearthdata.com/http//www.naturalearthdata.com/download/50m/cultural/ne_50m_admin_1_states_provinces.zip\"\n",
" ]:\n",
" file_name = url.split('/')[-1]\n",
" full_file_name = f'{data_dir}/{file_name}'\n",
" with requests.get(\n",
" url,\n",
" headers={\n",
" \"accept-encoding\": \"gzip, deflate, br\",\n",
" \"user-agent\": \"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36\"\n",
" },\n",
" stream=True,\n",
" ) as res:\n",
" file_size = int(res.headers['content-length'])\n",
" if res.status_code != 200:\n",
" print(\"Error downloading files. Please open the URL to download them from browser manually.\")\n",
" break\n",
" if (\n",
" skip_existing and\n",
" os.path.exists(full_file_name) and\n",
" file_size == os.path.getsize(full_file_name)\n",
" ):\n",
" print(f\"Skip {file_name} because it already exists\")\n",
" continue\n",
" print(f\"Downloading {file_name}... \\r\", end=\"\")\n",
" with open(full_file_name, \"wb\") as fh:\n",
" fh.write(res.content)\n",
" print(\"Done. \")\n",
"\n",
"download_files(skip_existing=True)"
]
},
{
"cell_type": "code",
"execution_count": 36,
"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(f\"{data_dir}/ne_10m_admin_0_countries.zip\")\n",
"df_10m = gpd.read_file(f\"{data_dir}/ne_10m_admin_1_states_provinces.zip\")\n",
"df_50m = gpd.read_file(f\"{data_dir}/ne_50m_admin_1_states_provinces.zip\")"
]
},
{
"cell_type": "code",
"execution_count": 37,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Index(['featurecla', 'scalerank', 'adm1_code', 'diss_me', 'iso_3166_2',\n",
" 'wikipedia', 'iso_a2', 'adm0_sr', 'name', 'name_alt',\n",
" ...\n",
" 'FCLASS_ID', 'FCLASS_PL', 'FCLASS_GR', 'FCLASS_IT', 'FCLASS_NL',\n",
" 'FCLASS_SE', 'FCLASS_BD', 'FCLASS_UA', 'FCLASS_TLC', 'geometry'],\n",
" dtype='object', length=122)"
]
},
"execution_count": 37,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df_50m.columns"
]
},
{
"cell_type": "code",
"execution_count": 38,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Index(['featurecla', 'scalerank', 'labelrank', 'sovereignt', 'sov_a3',\n",
" 'adm0_dif', 'level', 'type', 'tlc', 'admin',\n",
" ...\n",
" 'fclass_tr', 'fclass_id', 'fclass_pl', 'fclass_gr', 'fclass_it',\n",
" 'fclass_nl', 'fclass_se', 'fclass_bd', 'fclass_ua', 'geometry'],\n",
" dtype='object', length=169)"
]
},
"execution_count": 38,
"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": 39,
"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>FCLASS_ID</th>\n",
" <th>FCLASS_PL</th>\n",
" <th>FCLASS_GR</th>\n",
" <th>FCLASS_IT</th>\n",
" <th>FCLASS_NL</th>\n",
" <th>FCLASS_SE</th>\n",
" <th>FCLASS_BD</th>\n",
" <th>FCLASS_UA</th>\n",
" <th>FCLASS_TLC</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>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</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>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</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>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>13</td>\n",
" </tr>\n",
" <tr>\n",
" <th>China</th>\n",
" <td>31</td>\n",
" <td>31</td>\n",
" <td>31</td>\n",
" <td>31</td>\n",
" <td>31</td>\n",
" <td>0</td>\n",
" <td>31</td>\n",
" <td>31</td>\n",
" <td>31</td>\n",
" <td>30</td>\n",
" <td>...</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>31</td>\n",
" </tr>\n",
" <tr>\n",
" <th>India</th>\n",
" <td>36</td>\n",
" <td>36</td>\n",
" <td>36</td>\n",
" <td>36</td>\n",
" <td>36</td>\n",
" <td>0</td>\n",
" <td>36</td>\n",
" <td>36</td>\n",
" <td>36</td>\n",
" <td>13</td>\n",
" <td>...</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>36</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Indonesia</th>\n",
" <td>33</td>\n",
" <td>33</td>\n",
" <td>33</td>\n",
" <td>33</td>\n",
" <td>33</td>\n",
" <td>0</td>\n",
" <td>33</td>\n",
" <td>33</td>\n",
" <td>33</td>\n",
" <td>30</td>\n",
" <td>...</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>33</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Russia</th>\n",
" <td>85</td>\n",
" <td>85</td>\n",
" <td>85</td>\n",
" <td>85</td>\n",
" <td>85</td>\n",
" <td>1</td>\n",
" <td>85</td>\n",
" <td>85</td>\n",
" <td>85</td>\n",
" <td>84</td>\n",
" <td>...</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>85</td>\n",
" </tr>\n",
" <tr>\n",
" <th>South Africa</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>9</td>\n",
" <td>...</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>9</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>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>51</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>9 rows × 121 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",
"China 31 31 31 31 \n",
"India 36 36 36 36 \n",
"Indonesia 33 33 33 33 \n",
"Russia 85 85 85 85 \n",
"South Africa 9 9 9 9 \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",
"China 31 0 31 31 31 \n",
"India 36 0 36 36 36 \n",
"Indonesia 33 0 33 33 33 \n",
"Russia 85 1 85 85 85 \n",
"South Africa 9 0 9 9 9 \n",
"United States of America 51 51 51 51 51 \n",
"\n",
" name_alt ... FCLASS_ID FCLASS_PL FCLASS_GR \\\n",
"admin ... \n",
"Australia 0 ... 0 0 0 \n",
"Brazil 13 ... 0 0 0 \n",
"Canada 9 ... 0 0 0 \n",
"China 30 ... 0 0 0 \n",
"India 13 ... 0 0 0 \n",
"Indonesia 30 ... 0 0 0 \n",
"Russia 84 ... 0 0 0 \n",
"South Africa 9 ... 0 0 0 \n",
"United States of America 51 ... 0 0 0 \n",
"\n",
" FCLASS_IT FCLASS_NL FCLASS_SE FCLASS_BD \\\n",
"admin \n",
"Australia 0 0 0 0 \n",
"Brazil 0 0 0 0 \n",
"Canada 0 0 0 0 \n",
"China 0 0 0 0 \n",
"India 0 0 0 0 \n",
"Indonesia 0 0 0 0 \n",
"Russia 0 0 0 0 \n",
"South Africa 0 0 0 0 \n",
"United States of America 0 0 0 0 \n",
"\n",
" FCLASS_UA FCLASS_TLC geometry \n",
"admin \n",
"Australia 0 0 9 \n",
"Brazil 0 0 27 \n",
"Canada 0 0 13 \n",
"China 0 0 31 \n",
"India 0 0 36 \n",
"Indonesia 0 0 33 \n",
"Russia 0 0 85 \n",
"South Africa 0 0 9 \n",
"United States of America 0 0 51 \n",
"\n",
"[9 rows x 121 columns]"
]
},
"execution_count": 39,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df_50m.groupby('admin').count()"
]
},
{
"cell_type": "code",
"execution_count": 40,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<AxesSubplot:>"
]
},
"execution_count": 40,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 2000x1000 with 1 Axes>"
]
},
"metadata": {},
"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": 41,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array(['Australia', 'Brazil', 'Canada', 'United States of America',\n",
" 'China', 'India', 'Indonesia', 'Russia', 'South Africa'],\n",
" dtype=object)"
]
},
"execution_count": 41,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df_50m['admin'].unique()"
]
},
{
"cell_type": "code",
"execution_count": 42,
"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": 43,
"metadata": {},
"outputs": [],
"source": [
"# Country names used in file names\n",
"countries = [\n",
" 'aland',\n",
" 'argentina',\n",
" 'australia',\n",
" 'belgium',\n",
" 'bolivia',\n",
" 'brazil',\n",
" 'bulgaria',\n",
2022-02-16 18:45:11 -05:00
" 'burundi',\n",
" 'canada',\n",
" 'chile',\n",
" 'china',\n",
" 'colombia',\n",
" 'costa rica',\n",
" 'cuba',\n",
" 'denmark',\n",
" 'dominican republic',\n",
" 'ecuador',\n",
" 'egypt',\n",
" 'el salvador',\n",
" 'estonia',\n",
2022-02-16 18:45:11 -05:00
" 'ethiopia',\n",
" 'france',\n",
" 'finland',\n",
" 'germany',\n",
" 'guatemala',\n",
" 'haiti',\n",
" 'honduras',\n",
" 'iceland',\n",
" 'india',\n",
" 'indonesia',\n",
" 'iran',\n",
" 'italy',\n",
" 'japan',\n",
2022-02-16 18:45:11 -05:00
" 'kenya',\n",
" 'korea',\n",
" 'latvia',\n",
" 'liechtenstein',\n",
" 'malaysia',\n",
" 'mexico',\n",
" 'morocco',\n",
" 'myanmar',\n",
" 'netherlands',\n",
" 'nicaragua',\n",
2022-02-16 18:45:11 -05:00
" 'nigeria',\n",
" 'norway',\n",
" 'panama',\n",
" 'paraguay',\n",
" 'portugal',\n",
" 'poland',\n",
" 'puerto rico',\n",
" 'russia',\n",
2022-02-16 18:45:11 -05:00
" 'rwanda',\n",
" 'saint barthelemy',\n",
" 'saint martin',\n",
" 'singapore',\n",
" 'slovenia',\n",
" 'spain',\n",
" 'sweden',\n",
" 'switzerland',\n",
" 'syria',\n",
2022-02-16 18:45:11 -05:00
" 'tanzania',\n",
" 'thailand',\n",
" 'timorleste',\n",
2022-02-16 18:45:11 -05:00
" 'uganda',\n",
" 'uk',\n",
" 'ukraine',\n",
" 'uruguay',\n",
" 'usa',\n",
" 'venezuela',\n",
" 'zambia',\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",
2022-02-16 18:45:11 -05:00
" \"tanzania\": \"united republic of tanzania\",\n",
"}\n",
"\n",
"# Make sure all country names are covered:\n",
"invalid_countries = [x for x in countries if country_name_aliases.get(x, x) not in df[\"admin\"].str.lower().unique()]\n",
"if invalid_countries:\n",
" print(f\"Following country names are not valid: {invalid_countries}\")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Preview all countries:"
]
},
{
"cell_type": "code",
"execution_count": 44,
"metadata": {
"scrolled": false
},
"outputs": [
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 2000x2000 with 69 Axes>"
]
},
"metadata": {},
"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": 45,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<AxesSubplot:>"
]
},
"execution_count": 45,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"usa = df[df['adm0_a3'] == 'USA']\n",
"usa.plot()"
]
},
{
"cell_type": "code",
"execution_count": 46,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<AxesSubplot:>"
]
},
"execution_count": 46,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 800x800 with 1 Axes>"
]
},
"metadata": {},
"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": 47,
"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_sv</th>\n",
" <th>name_tr</th>\n",
" <th>name_uk</th>\n",
" <th>name_ur</th>\n",
" <th>name_vi</th>\n",
" <th>name_zh_x</th>\n",
" <th>name_zht</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>ہانگ کانگ</td>\n",
" <td>Hồng Kông</td>\n",
" <td>香港</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>Taiwan</td>\n",
" <td>Çin Cumhuriyeti</td>\n",
" <td>Республіка Китай</td>\n",
" <td>تائیوان</td>\n",
" <td>Đài Loan</td>\n",
" <td>中华民国</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>Macao</td>\n",
" <td>Makao</td>\n",
" <td>Аоминь</td>\n",
" <td>مکاؤ</td>\n",
" <td>Ma Cao</td>\n",
" <td>澳门</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 × 51 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_sv \\\n",
"0 Hong Kong S.A.R. HKG HKG Hong Kong H.K. ... Hongkong \n",
"1 Taiwan TWN TWN Taiwan Taiwan ... Taiwan \n",
"2 Macao S.A.R MAC MAC Macao Mac. ... Macao \n",
"\n",
" name_tr name_uk name_ur name_vi name_zh_x \\\n",
"0 Hong Kong Гонконг ہانگ کانگ Hồng Kông 香港 \n",
"1 Çin Cumhuriyeti Республіка Китай تائیوان Đài Loan 中华民国 \n",
"2 Makao Аоминь مکاؤ Ma Cao 澳门 \n",
"\n",
" name_zht 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 51 columns]"
]
},
"execution_count": 47,
"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": 48,
"metadata": {
"scrolled": false
},
"outputs": [
2022-02-16 18:45:11 -05:00
{
"name": "stderr",
"output_type": "stream",
"text": [
"C:\\Users\\bryan\\AppData\\Local\\Temp\\ipykernel_31064\\3440732423.py:2: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.\n",
2022-02-16 18:45:11 -05:00
" china_copy = china.append(china_sars)\n"
]
},
{
"data": {
"text/plain": [
"<AxesSubplot:>"
]
},
"execution_count": 48,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAA9EAAALDCAYAAAASWYNXAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/NK7nSAAAACXBIWXMAAA9hAAAPYQGoP6dpAAEAAElEQVR4nOzdd5hkZZU/8O+tnFPn3D0550AWBERRDKCygDnHVdTVZdVV0FV3/a24RtR1xQCCKCAZyWlCT+7pyd3TOXdXzun+/uiZZno6Vb4Vvp/n4WGmq+reMzPdVffc97znCKIoiiAiIiIiIiKiBcmkDoCIiIiIiIioUDCJJiIiIiIiIkoQk2giIiIiIiKiBDGJJiIiIiIiIkoQk2giIiIiIiKiBDGJJiIiIiIiIkoQk2giIiIiIiKiBDGJJiIiIiIiIkqQQuoAzhePxzE4OAij0QhBEKQOh4iIiIiIiIqcKIrweDyora2FTDb/WnPeJdGDg4NoaGiQOgwiIiIiIiIqMX19faivr5/3OUkl0d/+9rdx++23T/va8uXLcfz4cQDA5Zdfjpdeemna45/85Cdx1113JXwOo9EIYDJ4k8mUTHhERERERERESXO73WhoaJjKR+eT9Er06tWr8eyzz75+AMX0Q3z84x/HHXfcMfV7nU6X1PHPlnCbTCYm0URERERERJQziWwpTjqJVigUqK6unvNxnU437+NEREREREREhSrp7tynTp1CbW0tFi1ahFtuuQW9vb3THr/nnntQXl6ONWvW4LbbboPf75/3eKFQCG63e9p/RERERERERPkoqZXo7du34+6778by5csxNDSE22+/HZdeeina29thNBpx8803o6mpCbW1tWhra8PXvvY1nDhxAg8++OCcx/z+978/Y581ERERERERUT4SRFEUU32x0+lEU1MTfvSjH+GjH/3ojMeff/55XHnllejo6MDixYtnPUYoFEIoFJr6/dkN3S6Xi3uiiYiIiIiIKOvcbjfMZnNCeWhaI64sFguWLVuGjo6OWR/fvn07AMybRKvVaqjV6nTCICIiIiIiIsqJpPdEn8vr9aKzsxM1NTWzPn7w4EEAmPNxIiIiIiIiokKS1Er0V77yFVx33XVoamrC4OAgvvWtb0Eul+Omm25CZ2cn7r33Xlx77bUoKytDW1sbbr31Vlx22WVYt25dtuInIiIiIiIiypmkkuj+/n7cdNNNmJiYQEVFBS655BLs2rULFRUVCAaDePbZZ/HjH/8YPp8PDQ0NuOGGG/CNb3wjW7ETERERERER5VRajcWyIZkN3URERERERETpSiYPTWtPNBEREREREVEpYRJNRERERERElCAm0UREREREREQJYhJNRERERERElCAm0UREREREREQJYhJNRERERERElCAm0UREREREREQJYhJNRERERERElCAm0UREREREREQJYhJNRERERERElCAm0UREREREREQJYhJNRERERERElCAm0UREREREREQJYhJNRERERERElCAm0UREREREREQJYhJNRERERERElCAm0UREREREREQJYhJNRERERERElCCF1AEQEREREVFmiaKIkyNePHd8BK+cHMeAMwCHP4zlVUasq7fAoFGgz+6HWiHD29bV4uIlZRAEQeqwiQqCIIqiKHUQ53K73TCbzXC5XDCZTFKHQ0REREQkuSFXAO0Dbpwa9eDUiBcapQzbW8qgVysQisbgDkThDkbQ7/Dj5IgXp0Y8cPgjCR9/Xb0Zt169DJcvq2AyTSUpmTyUSTQRERERUR4RRRE9E360dtmxu8uO1u4J9NkDOTn3pkYLPvWGxbh8eSVUCu78pNKRTB7Kcm4iIiIiIgnF4yI6xryTCXOXHa1dExhxhySJZX+vE5/44z5YdUpsa7EBAP7lmuVYUmmUJB6ifMQkmoiIiIgoy0RRxKsd4zg14sWYN4RRd+jM/4OIxkRYdEoc6nciEsuPIlGHP4Knj4wAmEys//api9BYppM4KqL8wCSaiIiIiChL4nERzxwbwU+eO4Ujg+55n1umV6HSpMaxIU+OokvMmCeEa378Mj5wYRO2NNvQVKZDS7keSjnLvak0cU80EREREVEW7OycwO2PHsHx4cSTYptehVhchCuQeFMwKTSX6fDVN6/AW9ZUo9fux9f+1oaTI16YtUpcvaoK12+qw4pqXstT4WBjMSIiIiIiCT10oB//8kAbovHkL7XX1ZnRNuDKQlSZt7TSgGhcRNe4b8Zjb11bg1uvXsr91FQQmEQTEREREUlAFEXc9dJp/OdTx9M6zrZmK1q7HRmKSjqCAFy6tAJvWVMNuSDguvW10KrkUodFNAO7cxMRERER5VgsLuKOR4/g9zt7MnC04pjVLIrAyyfH8PLJMQBA24AT333nWomjIkoPk2giIiIiojQ5/WF88f6DePHEWNrHWlplwP7ewl+Fno3Tn997vYkSwSSaiIiIiCgN7QMufOpP+9DvCKR9rCUVeox5QintpS4ET7YP49b7D2JplQHv3dKAcoNa6pCIksYkmoiIiIgoBZ5gBL95pQt3vdSJcDSe9vHW1ZtxcsSDYCT9Y+WrWFzEQwcGAADPHRvFvR/fDrWCe6SpsHC4GxERERFRknyhKN7841fwk+dOpZ1ACwC2t9hweMBV1An0+fb1OPD2n76GE0mMACPKB0yiiYiIiIiS9PzxUQw40y/frrdqsbjSgN1dduTXzJzcODHiwX+l2cmcKNeYRBMRERERJWlNnRm6c0Y16VVymLXKpI6xrcWKUU8IHaPeTIdXUK5bXyt1CERJ4Z5oIiIiIqIktZTrsfcbV+FwvwuNZTpUmzQQBAHhaBxt/U7832tdeOLw8Jyv39JkxZ5uR0muPp/P7gsjFhchlxXHWC8qfoIo5tePbjJDromIiIiI8tUn/7gXTx8ZmfPxReV6KOUynBjhnmCrTolvXbca79xYJ3UoVKKSyUNZzk1ERERElAVLK43zPn563IcTIx5sarSg3KBa8HjlBhW2t9iwocEMo6a4Ckod/gjufPYkAuGY1KEQLYhJNBERERFRhsXjIh7Y15fQc/f3OuH0h7G+3oxNjRZolbOPfKq1aLG7y46DfS5UmdRQyour/Llnwo9/+s0uDLuCUodCNC8m0UREREREGSYIgDsQTfj50ThwqN+F/b1OVJnUM1aaNzRY0Nbvmvp9x6gPGxosmQo3bxzqc+L3O7ulDoNoXkyiiYiIiIgyTBAErKs3p/Ta7gk/qkwaWHVKVJs1WF5lRO+Ef8bz9nQ7sK3FhkUVehRTT65nj45g1M3VaMpfTKKJiIiIiLLgu+9cA5UitcvtjlEvHP4Ihl1BnBjxwO4Pz/q81i47To/5oFHIsL7enPL58smpUS8O9jmlDoNoToX/U0ZERERElIeWVhmxvcWWk3P5I3GMeUMwqouj4Vj3hE/qEIjmxCSaiIiIiChL5moSlmlNNi2CkTgmfLOvWBea/3rqBI4Pu6UOg2hWTKKJiIiIiLIgHI3nrCy5zKCGvUgSaACIxkWcHPFKHQbRrJhEExERERFlwSOHBjHqCeXkXIcHXEVTyn1WG/dFU55iEk1ERERElGEH+5z43hPHcna+SEzEihpjzs6XC0+2DyMWF6UOg2gGJtFERERERBn0wolR3PTrXTkvr3bO0cG7UA04A7jzmZNSh0E0Q3HVfBARERERScQdjOBnz3fgt692SbKC2mv3QxAAsYgWb3/2QgfW1Jnw5jU1UodCNIVJNBERERFRGqKxOO7b04c7nzkpaXfslnIDjg97JDt/tnzpL4ewqdGKSpNG6lCIALCcm4iIiIgoZX12P97201fxjYfbJR8vZdQU5/qYPxzDH3f1SB0G0RQm0UREREREKTjc78K7frEjb1Z/D/e7UGfVSh1GVkRiRVSjTgWvOG9XERERERFlUceoFzf+eif84ZjUoUwJRuNQyWVQygXJks5NjRYEI3EYNAqEo3G09TuRie3hwUj+/D0TMYkmIiIiIkrSb14+nVcJ9Fld4z4srtCjc8yX83M3WLU4OeKBN/T630tLuR4KmYBTo960jv37nd1w+sO488YNEAQ
"text/plain": [
"<Figure size 1200x1200 with 1 Axes>"
]
},
"metadata": {},
"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": [
"#### Finland\n",
"\n",
"The Åland Islands (ISO country code AX) is an autonomous region of Finland, and carries the ISO-3166 code FI-01. "
]
},
{
"cell_type": "code",
"execution_count": 49,
"metadata": {},
"outputs": [],
"source": [
"finland_aland = df_admin0_10m.loc[\n",
" df_admin0_10m.name_en.isin(['Åland Islands']),\n",
" [x for x in df_admin0_10m.columns if x in df.columns]\n",
"]\n",
"finland_aland = finland_aland.merge(pd.DataFrame(\n",
" data={ \n",
" \"name_en\": [\"Åland Islands\"],\n",
" \"name_fi\": [\"Ahvenanmaan maakunta\"],\n",
" \"iso_3166_2\": [\"FI-01\"],\n",
" },\n",
"), on=\"name_en\", how=\"left\")\n"
]
},
{
"cell_type": "code",
"execution_count": 50,
"metadata": {},
"outputs": [
2022-02-16 18:45:11 -05:00
{
"name": "stderr",
"output_type": "stream",
"text": [
"C:\\Users\\bryan\\AppData\\Local\\Temp\\ipykernel_31064\\642512976.py:2: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.\n",
2022-02-16 18:45:11 -05:00
" finland_copy = finland.append(finland_aland)\n"
]
},
{
"data": {
"text/plain": [
"<AxesSubplot:>"
]
},
"execution_count": 50,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 1200x1200 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"finland = df[df.admin == \"Finland\"]\n",
"finland_copy = finland.append(finland_aland)\n",
"finland_copy[\"name_fi\"] = finland_copy[\"name_fi\"].combine_first(finland_copy[\"name_fi\"])\n",
"finland_copy = finland_copy.drop([\"name_fi\"], axis=1)\n",
"finland_copy.plot(figsize=(12, 12))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Norway\n",
"\n",
"Remove NO-X01~ (The uninhabited Bouvet Island) and move Svalbard closer to mainland"
]
},
{
"cell_type": "code",
"execution_count": 51,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<AxesSubplot:>"
]
},
"execution_count": 51,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"norway = df[df['adm0_a3'] == 'NOR']\n",
"norway.plot()"
]
},
{
"cell_type": "code",
"execution_count": 52,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<AxesSubplot:>"
]
},
"execution_count": 52,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"norway_copy = norway.copy()\n",
"norway_copy = norway_copy[norway_copy[\"iso_3166_2\"] != \"NO-X01~\"]\n",
"reposition(norway_copy, norway.name == 'Svalbard', -12, -8, 0.5, 0.5)\n",
"#reposition(norway_copy, norway.name == 'Nordland', 10, 0, 2, 2)\n",
"\n",
"norway_copy.plot()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Portugal"
]
},
{
"cell_type": "code",
"execution_count": 53,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<AxesSubplot:>"
]
},
"execution_count": 53,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"portugal = df[df.admin == 'Portugal']\n",
"portugal.plot()"
]
},
{
"cell_type": "code",
"execution_count": 54,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<AxesSubplot:>"
]
},
"execution_count": 54,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 800x800 with 1 Axes>"
]
},
"metadata": {},
"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": 55,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<AxesSubplot:>"
]
},
"execution_count": 55,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"spain = df[df.admin == 'Spain']\n",
"spain.plot()"
]
},
{
"cell_type": "code",
"execution_count": 56,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<AxesSubplot:>"
]
},
"execution_count": 56,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 800x800 with 1 Axes>"
]
},
"metadata": {},
"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": 57,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<AxesSubplot:>"
]
},
"execution_count": 57,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"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": 58,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"C:\\Users\\bryan\\AppData\\Local\\Temp\\ipykernel_31064\\127064943.py:6: ShapelyDeprecationWarning: Iteration over multi-part geometries is deprecated and will be removed in Shapely 2.0. Use the `geoms` property to access the constituent parts of a multi-part geometry.\n",
" for item in splitted_geom:\n"
]
},
{
"data": {
"text/plain": [
"<AxesSubplot:>"
]
},
"execution_count": 58,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAABj0AAAMyCAYAAAA2aQPiAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/NK7nSAAAACXBIWXMAAA9hAAAPYQGoP6dpAAEAAElEQVR4nOzddXhk5fUH8O+4zySZuMsmm9WsuwKLu7v9sBZaKC0tFCm0SCkUt0JxpzgLLLDCuls2nmzcfTTj9/dHlkDYZGMzmcj38zw82czc+94z7CaT3POec0SCIAggIiIiIiIiIiIiIiIa5cTBDoCIiIiIiIiIiIiIiMgfmPQgIiIiIiIiIiIiIqIxgUkPIiIiIiIiIiIiIiIaE5j0ICIiIiIiIiIiIiKiMYFJDyIiIiIiIiIiIiIiGhOY9CAiIiIiIiIiIiIiojGBSQ8iIiIiIiIiIiIiIhoTmPQgIiIiIiIiIiIiIqIxQRrsAH7N5/OhtrYWOp0OIpEo2OEQEREREREREREREVEQCYIAi8WC2NhYiMXHruUYcUmP2tpaJCQkBDsMIiIiIiIiIiIiIiIaQaqqqhAfH3/MY0Zc0kOn0wHoDF6v1wc5GiIiIiIiIiIiIiIiCiaz2YyEhISu/MGxjLikx08trfR6PZMeREREREREREREREQEAP0aicFB5kRERERERERERERENCYw6UFERERERERERERERGMCkx5ERERERERERERERDQmMOlBRERERERERERERERjApMeREREREREREREREQ0JjDpQUREREREREREREREYwKTHkRERERERERERERENCYw6UFERERERERERERERGMCkx5ERERERERERERERDQmMOlBRERERERERERERERjApMeREREREREREREREQ0JjDpQUREREREREREREREYwKTHkRERERERERERERENCYw6UFERERERERERERERGMCkx5ERERERERERERERDQmMOlBRERERERERERERERjApMeREREREREREREREQ0JjDpQUREREREREREREREYwKTHkRERERERERERERENCYw6UFERERERERERERERGMCkx5ERERERERERERERDQmMOlBRERERERERERERERjApMeREREREREREREREQ0JjDpQUREREREREREREREYwKTHkRERERERERERERENCYw6UFERERERERERERERGMCkx5ERERERERERERERDQmMOlBRERERERERERERERjApMeREREREREREREREQ0JjDpQUREREREREREREREYwKTHkRERERERERERERENCYw6UFERERERERERERERGOCNNgBEBER9cTl8eHrQ7U4WGWCzemBzeWBzek98ufOj3aXB1anB+FaBV66fDamxhmCHTYREREREREREQURkx5ERDQiPbu+GM+uL+n1eaVMjHCtAnGhaoRr5JgQqR3G6IiIiIiIiIiIaCRi0oOIiEakNrsL586KQ3yoGjEGJcK1Chi1coRrFAjXyaGWD89bmM8n4EB1O/aUt8Lq8MB6pNrE5fVBr5TCoJYjVC1DqFoOw5GPoWoZEsPUEIlEwxIjERERERERERF1YtKDiIhGpAfPnhbsEAAAPkFAtF6JOclhaDQ78O7OSuwsbYXL6zvmea9eNQfHT4oapiiJiIiIiIiIiAhg0oOIiOiYpBIxYkNUiA1RAQBOnhoDj9eHylY7atsdsLs86HB74XB7YXd5IQjA/NQwTInlfBEiIiIiIiIiouHGpAcREQXF4SYrPtpdBalEBJlEjIoWOwrqLWiyOPHQOVNx0pToYIfYK6lEjNQILVIjOEeEiIiIiIiIiGgkYdKDiIiGlc8n4NUtZfjXdwVwe4Uej7nlvX1YkGrE1DgDInUKROqUmByrR0q4ZpijJSIiIiIiIiKi0YRJDyIiGha17R3YVdaK/+2twtaSlmMe6/YK2FzcjM3FzV2PJRvVeOe6+YgPVR85xocOtxd6pSygcRMRERERERER0ejBpAcREQVUWbMNf/zoAPZVtvf7nGSjGreekI5QtRxhGjlC1XLEhajg8vrwwFe52FzcjJJGKwAgI0qLaxen4OJ5iQF6BURERERERERENFow6UFEREPm9Qm485NsFDVY0Gx1ITZEiZRwDULVcry9owJ2l3dA61W3dWB6fAjSfjUzQyES46Qp0YjWK1Hb3oGadgeUMjHqTA64PD7IpWJ/viwiIr/zeH1wenxQyyUQiUTBDoeIiIiIiGjMYdKDiIiGTCIWYVKMHv/bWw0AqGnvwO7yNsgkoqPmduiVUkTqlV2VGj3x+AQ89HU+Xrt6brfHRSIRFqQasSDV6P8XQUQUAPd9kYMvD9bC5elMdnh9nd8Ts+INeOv/5sOgYos+IiIiIiIif2LSg4hoFGi1uWDucCMhTA2JeGTuDL52SQomRGpRWG9BWqQGaRFaxIeqsaO0Ba9vLYPT48OitHBcMi8BBpUMOTVmfLKvGt8cqkOjxdm1jlYhxSlTo/GnkyYG8dX4n83pwdr8BuTXWdBodkAkEiHZqMaiCUbMSAgdsX+vRCPR+oIGPP5dEUwdbiikYsil4l98lHT9WaOQwqiVI1yjwIqJEUiP0g1bjF6fgNXZtXh7RwUE4ejnD1abcM4LW3FWVhxOmx6NCZHDFxsREREREdFYJhKEnn4NCx6z2QyDwQCTyQS9Xh/scIiIgsrscOPDXVV45Nt8+ARAp5TiP5fPxqIJ4cMei88noLDBgpRwDZQyiV/Xza4xoajegukJBqRH6iARi+D0eFHWbMPEKN2YaAFz6wf78cWB2h6fizEo8ZeTM3H2zLhhjopodHp7ezme21CCFqsLHl/fP8oqZWL8ZvkE3HpCekDi8fkEtNpdMHW4Udlqx76KNnx1sBblLfZ+nS+TiHDT8jTcvHKCX7+/EhERERERjRUDyRuw0oOIaATTyKUobbbhp3t6NyxNxYzEkKDE8vj3hXjhx8OQS8WYmxyKJRMisDQ9HJNj9BAPoUpBLBYhK96ArHgDRCIRLA433ttZide2lqHB7ER6pBZzksMwMyEEyydGIEqvHNR1ShqtWJ1diz3lbbC7POhw++Bwe9Hh8qLD3fnfpGgd3rluPnRK/7ababI48eXBnhMeAFBncuC2Dw+gzuTAb1ak+fXaRGPRFQuTccXCZAiCALPDg1abCy1WJ1psLrQe+a/Z6kSrzYWkMDWuWpQMo1bhl2sLgoB6swPZ1SZsP9yCvRVtKGm0osM9sNlFv+T2Cnh2fQnWFzTiy1uWsPKLiIiIiIhoCFjpQUQ0Clgc7q62LcHwxYEa3PrBgR6fC1XLsGhCOCJ1iq6e9a4j/3l8AtIiNJiREIIFqUaEauRHnb8mpx7/WJ0Hc4cb8WFqVLfaYXF6eryWWATcclw6bj0+vV83Bd1eH97YWo5P9lWjoN5yzGO1CikuW5CIO06cCKnEPwPRBUFAm92Nf39fiHd3VvZ5/Lkz4/DERTP8cm0iGro2mwvrCxqxNr8BxY1WONxemDrcsDh6/h7lD1csSMIdJ0+E3s/JVyIiIiIiotGMlR5ERGOMvysPBsLnE/CP1fm9Pt9md+Pr7Lpen1975FS5RIxTp0Xj8gVJmJ0U2tWyanlGBP5rUKKmvQP5deZjxyIAz6wrxoRILc7Miu1X/LOSQuAVBBQ3WNFgdqDO1IEGsxNurw+JYWokh2tw8pRonDItGmr5wN4WfT4Bqw/V4Ye8Bpg73LA43DA7POhwde74tjo9MHW4+71eXp0ZDreX7W1GuZwaE744UAOr0wur0wOb0wOrwwOtUooYgxKxISrEhiixINWIGIMq2OFSL/ZXtuHy/+6EzTX4Co7BeHtHBfLrzLj39MmYfqQCjoiIiIiIiPqPlR5ERCOA3eVBXq0Zh2pMOFRjQm6NGU1WJ0LUMmRE6uATBHh8AkJUMly5KBkzEkICHlOD2YEf8hpQ1GDBW9sr/Lp2ZrQOp06LwXGZkZgSq4fZ4cG6/AaUNFqRW2vGxqKmY56vV0rxyW8WDWkosSAI3W4mCoKA6rYO5NWZIZOIYFDJkGTUwKiRH3XT0enx4oe
"text/plain": [
"<Figure size 2000x2000 with 1 Axes>"
]
},
"metadata": {},
"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": 59,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<AxesSubplot:>"
]
},
"execution_count": 59,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"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": 60,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<AxesSubplot:>"
]
},
"execution_count": 60,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 800x800 with 1 Axes>"
]
},
"metadata": {},
"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": 61,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<AxesSubplot:>"
]
},
"execution_count": 61,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"netherlands = df[df.admin == 'Netherlands']\n",
"netherlands.plot()"
]
},
{
"cell_type": "code",
"execution_count": 62,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<AxesSubplot:>"
]
},
"execution_count": 62,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 800x800 with 1 Axes>"
]
},
"metadata": {},
"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": 63,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<AxesSubplot:>"
]
},
"execution_count": 63,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"uk = df[df.admin == 'United Kingdom']\n",
"uk.plot()"
]
},
{
"cell_type": "code",
"execution_count": 64,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<AxesSubplot:>"
]
},
"execution_count": 64,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAaYAAAKTCAYAAABSLqyAAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/NK7nSAAAACXBIWXMAAA9hAAAPYQGoP6dpAAEAAElEQVR4nOzdd3xb1dkH8N+92nt47x07HkkcJ86GEMLeu2GvAqWM0gKFtrxA4YX2LQXKKmWVUSCMsjdhZMdOnOmVeO+tvdd9/5CtWLYkS7Zsyfb5fj79fBrpSjoOzn10znnO81AMwzAgCIIgiChBR3oABEEQBDEaCUwEQRBEVCGBiSAIgogqJDARBEEQUYUEJoIgCCKqkMBEEARBRBUSmAiCIIiowo70AMZyuVzo7u6GRCIBRVGRHg5BEAQRBgzDQK/XIzk5GTQdeE4UdYGpu7sbaWlpkR4GQRAEMQ06OjqQmpoa8JqoC0wSiQSAe/BSqTTCoyEIgiDCQafTIS0tzXOPDyTqAtPI8p1UKiWBiSAIYo4JZouGJD8QBEEQUYUEJoIgCCKqkMBEEARBRBUSmAiCIIioQgITQRAEEVVIYCIIgiCiCglMBEEQRFQhgYkgCIKIKiQwEQRBEFGFBCaCIAgiqpDARBAEQUQVEpgIgiCIqEICE0EQBBFVSGAiCIIgogoJTARBEERUIYGJIAiCiCokMBEEQRBRhQQmgiAIIqqQwEQQBEFEFRKYCIIgiKhCAhNBEAQRVUhgIgiCIKIKCUwEQRBEVCGBiSAIgogqJDARBEEQUYUEJoKIYl8f6cFnh7ojPQyCmFEkMBFElOnWmGG2ObG/XY07Nx/EggRxpIdEEDOKHekBEAThbXvDAP727VEMGW04f0kKkuWCsLyvzeGCw+WCkEv+2RPRjcyYCCLKXLY8HTefkAOGAT4+0IUT/u8n3P7uAdT16IJ+D63Jjld3tKBXa/E89qdPjuCLQz3TMWSCCCsSmAgiCp2zOBk0BRQkSvDbUxagpkuLP39eG9Rr39rdivVP/AQ+h4ZcyMFT3x/D3R8cQk23DhqzbZpHThBTR+b0BBGFEmV8/O7UfJhtTmwqT8fFZam4492D+PxQN04pTACfw/L72oIkKVblxMDucOHyl/fgQIcGH9y8CssylTP4ExDE5JHARBBR6tcn5Xr+P4dF4/krSnHKk9swZLDi2jVZ2N+uxpJUOWia8lz3/r4O/N83RzFosGL7sUEIeSz8cl02CUrErEICE0HMEh0qM567vBSLUuVwuRj8+u39uHV9Dq5cmQGKotA6aMRfv67H7Rty0ThgwEVLU7GraQiXLEuN9NAJIiQkMBHELJETJwJFuWdHNE1BZbThwc9qcO7iFNT16vCbzQfx5/OKcdaiJBisDoh5bCxJk3teQxCzBQlMBBFl7E4X2DQ1LqCM/XOijI8LSlMgE3JQ3aXF81eUoizDvWQn5rF9voYgZgMSmAgiSjicLtz1/iF8cbgbD51ThIVJUtT16LA+Pw4ZMSLPdVtq+/DcT41oGzLhlhNzALiz+BKk/EgNnSDCigQmgogSBzs0+Hy4/NCDn9UAAOIlPJy8MN7rukWpMqQrhTjYoYHd6QKfwyJBiZhTyDkmgogQrcmOHq0ZRqsDALAwSYqsWJHXNWUZCqQqhF6PxUv5ePzCElAU8OgXdZ7HdzYOYvXjP6CqTQ2L3Tn9PwBBTBMyYyKIGcQwDD6s6sTTWxrQpTEDACgKOK0wEX+/dDHevnEFHv2yFj/U9cPqcCFGzPX5PiIeG5/cugY58cfr6K3OicE5i5Nxz4eH8P7NqwKedSKIaEYCE0HMoBd+bsLfvj3q9RjDAN/U9KLhOT1oisINa7Pw7KalsNidEPH8/xNdnCb3+jNFUTitOBH/2dOGj/d3QcxnY1N5+nT8GAQxrchSHkHMEK3Zjhe3Nvl9vmnAiIZ+A97b1wGGYQIGpbGsDidufmsf1EYbchMk+N+v6nCkSwurgyzpEbMPCUwEMUM0Jhv0FseE19V06/DKjhaYbBNfO6Kp3wiFkIuTFybg4rJUxIi4aOw3oEttnsqQCSIiKIZhmEgPYjSdTgeZTAatVgupVBrp4RBE2OgtdpQ89F3Q128oiMer1ywL+SzSkMEKmYADNot87ySiRyj3drLHRBAzJNgAIxdysCo7BhcunVwpoRgxb1KvI4hoQQITQcyQr45490Jama1EdZcOBqv3kt1vT1mAq1dlzuDICCK6kLk+QcyQrUcHPP8/ScbHuYtTcEFpitc1Gxcm4PLydDAMg6O9es/jUbbiThDTisyYCGKGxEuPL7EtSJDg8hXpeGNXq+exldlK/OMXS8Bm0Xji26N4/udG3H5SLpoHjVCbbHjpqmUhZeoRxGxFkh8IYoZ8V9OLm96qAgDEirnYed8GrHzsB6hNds81bJpCnISHnlEt0UcsTJLis9vW4IWfmvDZoS7cuj4XF5WRlhbE7BDKvZ0s5RHEDDmlMAFrc2MBAGtyY7G/TeMVlADA4WJ8BiUAqO/VYdmjW/DUlmNIkgmwIluJN3e34sOqzmkfO0HMJLIuQBAzhKIoPLOpFF8c7sYVKzLwfW1fwOtPKUzANasyceWrFQDcFSK0ZjsuLE3BYxeW4KxntqNpwIhkGR8Xk5kTMYeQwEQQM8Rid4LPoT0Zd6XpclCUO+CMyI4V4d7TC7AwSYIkmQBcNo2TC+LxQ32/55p9bWqoTTYUJcvQNGAEl00WPoi5hewxEcQ001vsePDTGnxd3QsRj4WXrl6GpekKAMA31b3Y16pCVpwIRqsDN52QM+71Nd1anP3sDoz9l7okTY4NBfE4d3EyMsdUJSeIaBPKvZ0EJoKYZvf99zA27+3w/JnPoXFBaSpuXZ+DNKUwwCuPe7uiDU99fwyDBhsAICtWhG9+sw48NqkgTswOJDARRJRwuRgUPfgtzD76I2XHifDF7Wsh5Aa3om53urD16AC+renFlSszxlUXJ4hoRgITQUSRTrUJrYMmTxLDaJvK0/D4hYsiMCqCmFmkVh5BRJFUhRB8DgsCDmvczOnnowMwWh3k4CxBjELSeQhiBsSKebjntPxxj2tMdry2o2Xc4warA//Z04ZfvrkPpzy5Fec9vzNgLyeCmEtIYCKIGXL92iz8/vQCr8fW5cUiPWZ8AoTaaIOEz8b6/Dg09BtwtFcHIZckOhDzAwlMBDGDNpWngc9x/7O7fEU67tyYhz3NQ9jwxM9QG22e69KUQuTEifGXr+oBABctTSUVx4l5gwQmgphBciEXt52UixVZSjT1G/DIF7UQctl4+hdLoBBxva4tTpHhgqXu6uOuqEpRIojpRXZcCWKG3bYhD7dtyAvqWtdw0qzVMT7dnCDmKjJjIogotn5BPLgsGnU9+okvJog5gsyYCCKKbSxMwGvXLgePQ75DEvMHCUwEEeXW5sVGeggEMaPI1zCCIAgiqpDARBAzwGRzYEBvjfQwCGJWIIGJIKaZwerAhS/swu8+OOR5jGEYdKpN2N+uht3piuDoCCL6kD0mgphmA3orjvXp0TZkwlPfH4PKaMPWYwNoV5kAAMUpUjx6fglSFQJ0qEyo69EjQcrD+vx4sGgqwqMniJlHqosTUaN5wACKopChFIKeRTdkhmHQr7eiXWWCUsRFTpx43DUfH+jEHz+uhskW/Hmkg/9zCuRC7sQXEsQsQKqLE7OO3enChf/cBY3JDgmfjZIUGUqGKx8UJErBMAwoKrqCVa/Wghe3NuHTg11Qm+wAACGXhZ2/3wCFiIvmAQP2talxckE8LihNhdMF3D1qOS+QExfEkaBEzFskMBFRoXnACM3wzV1vcWBX0xB2NQ3h1R0tePvGFShNV+DpLUdx75giqOHkdDFoGzIi28eMZ6xPD3bhgU+qobM4vB432Zw4+9kdYNGUZ6mOy6KxKicGjf2GoMdyw9qs0AZPEHMICUxEVOjSmHw+7nAx+KamFzRN4YWfmyATcHDD2iywWfSo15qxo2EA2XFilKbJvZ4LxccHuvDYV3X4+Z71EHHZ4/Z3XC4G+9rUeGlbM7bU9QX4Wcxef7Y5Xdh6bCDocWTHibA8Uxn
"text/plain": [
"<Figure size 800x800 with 1 Axes>"
]
},
"metadata": {},
"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": 65,
"metadata": {},
"outputs": [],
"source": [
"alt_maps = {\n",
" \"finland\": finland_copy,\n",
" \"china\": china_copy,\n",
" \"usa\": usa_copy,\n",
" \"france\": france_copy,\n",
" \"netherlands\": netherlands_copy,\n",
" \"norway\": norway_copy,\n",
" \"uk\": uk_copy,\n",
" \"russia\": russia_copy,\n",
" \"spain\": spain_copy,\n",
" \"portugal\": portugal_copy,\n",
"}"
]
},
{
"cell_type": "code",
"execution_count": 66,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 2000x2000 with 69 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plot_all_countries()"
]
},
{
"cell_type": "code",
"execution_count": 67,
"metadata": {
"scrolled": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"aland\tSize 0.913\tSaving geojson for aland...\n",
"argentina\tSize 662.347\tSaving geojson for argentina...\n",
"australia\tSaving geojson for australia...\n",
"belgium\tSize 7.709\tSaving geojson for belgium...\n",
"bolivia\tSize 161.264\tSaving geojson for bolivia...\n",
"brazil\tSaving geojson for brazil...\n",
"bulgaria\tSize 18.715\tSaving geojson for bulgaria...\n",
2022-02-16 18:45:11 -05:00
"burundi\tSize 3.99\tSaving geojson for burundi...\n",
"canada\tSaving geojson for canada...\n",
"chile\tSize 1652.977\tSaving geojson for chile...\n",
"china\tSaving geojson for china...\n",
"colombia\tSize 264.526\tSaving geojson for colombia...\n",
"costa rica\tSize 25.939\tSaving geojson for costa rica...\n",
"cuba\tSize 37.185\tSaving geojson for cuba...\n",
"denmark\tSize 22.461\tSaving geojson for denmark...\n",
"dominican republic\tSize 8.806\tSaving geojson for dominican republic...\n",
"ecuador\tSize 112.048\tSaving geojson for ecuador...\n",
"egypt\tSize 117.982\tSaving geojson for egypt...\n",
"el salvador\tSize 3.116\tSaving geojson for el salvador...\n",
"estonia\tSize 13.694\tSaving geojson for estonia...\n",
2022-02-16 18:45:11 -05:00
"ethiopia\tSize 172.021\tSaving geojson for ethiopia...\n",
"france\tSize 142.834\tSaving geojson for france...\n",
"finland\tSize 112.354\tSaving geojson for finland...\n",
"germany\tSize 71.47\tSaving geojson for germany...\n",
"guatemala\tSize 16.442\tSaving geojson for guatemala...\n",
"haiti\tSize 5.882\tSaving geojson for haiti...\n",
"honduras\tSize 27.669\tSaving geojson for honduras...\n",
"iceland\tSize 34.959\tSaving geojson for iceland...\n",
"india\tSaving geojson for india...\n",
"indonesia\tSaving geojson for indonesia...\n",
"iran\tSize 284.014\tSaving geojson for iran...\n",
"italy\tSize 138.162\tSaving geojson for italy...\n",
"japan\tSize 661.569\tSaving geojson for japan...\n",
2022-02-16 18:45:11 -05:00
"kenya\tSize 77.61\tSaving geojson for kenya...\n",
"korea\tSize 34.227\tSaving geojson for korea...\n",
"liechtenstein\tSize 0.029\tSaving geojson for liechtenstein...\n",
"malaysia\tSize 127.7\tSaving geojson for malaysia...\n",
"mexico\tSize 575.302\tSaving geojson for mexico...\n",
"morocco\tSize 231.84\tSaving geojson for morocco...\n",
"myanmar\tSize 168.709\tSaving geojson for myanmar...\n",
"netherlands\tSize 10.818\tSaving geojson for netherlands...\n",
"nicaragua\tSize 21.415\tSaving geojson for nicaragua...\n",
"nigeria\tSize 115.287\tSaving geojson for nigeria...\n",
"norway\tSize 530.052\tSaving geojson for norway...\n",
"panama\tSize 14.275\tSaving geojson for panama...\n",
"paraguay\tSize 69.763\tSaving geojson for paraguay...\n",
"portugal\tSize 105.727\tSaving geojson for portugal...\n",
"poland\tSize 58.556\tSaving geojson for poland...\n",
"puerto rico\tSize 1.616\tSaving geojson for puerto rico...\n",
"russia\tSaving geojson for russia...\n",
"rwanda\tSize 3.59\tSaving geojson for rwanda...\n",
"saint barthelemy\tSize 0.004\tSaving geojson for saint barthelemy...\n",
"saint martin\tSize 0.012\tSaving geojson for saint martin...\n",
"singapore\tSize 0.067\tSaving geojson for singapore...\n",
"slovenia\tSize 4.537\tSaving geojson for slovenia...\n",
"spain\tSize 178.488\tSaving geojson for spain...\n",
"sweden\tSize 178.774\tSaving geojson for sweden...\n",
"switzerland\tSize 8.935\tSaving geojson for switzerland...\n",
"syria\tSize 33.348\tSaving geojson for syria...\n",
2022-02-16 18:45:11 -05:00
"tanzania\tSize 119.579\tSaving geojson for tanzania...\n",
"thailand\tSize 122.959\tSaving geojson for thailand...\n",
"timorleste\tSize 4.486\tSaving geojson for timorleste...\n",
2022-02-16 18:45:11 -05:00
"uganda\tSize 31.083\tSaving geojson for uganda...\n",
"uk\tSaving geojson for uk...\n",
"ukraine\tSize 128.988\tSaving geojson for ukraine...\n",
"uruguay\tSize 25.985\tSaving geojson for uruguay...\n",
"usa\tSaving geojson for usa...\n",
"venezuela\tSize 204.361\tSaving geojson for venezuela...\n",
"zambia\tSize 115.483\tSaving geojson for zambia...\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. \")"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3.10.7 64-bit",
"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.7"
},
"vscode": {
"interpreter": {
"hash": "cfa538cd06c93e304ca575fcc7e49a96f6a8b18fe97e2a1aa2a1d32cf31b50ca"
}
}
},
"nbformat": 4,
"nbformat_minor": 4
}