{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Modify the RGI6 regions files for RGI7 " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**List of changes from RGI6 to RGI7**: \n", "- The southern boundary of region 12 (Caucasus and Middle East) has been shifted south by 2° (from 32°N to 30°N) to encompass a cluster of glaciers which were previously unassigned.\n", "- The region boxes for region 01 (Alaska) used to encompass some islands in the Bering Sea East of Kamtchatka. This subregion contains no glaciers (and probably hasn't for a long time) and is now removed. \n", "- The data type of the `rgi_code` attribute in the first-order region file is now `str` (was `int`). The `rgi_code` now has a leading zero, for example `02` instead of `2`. \n", "- Region 19 has been renamed to \"*Subantarctic and Antarctic Islands*\" (was: \"*Antarctic and Subantarctic*\")\n", "- The polygon of RGI region 19 has been updated to remove antarctic mainland. Potentially, a new region (`20`, \"*Antarctic Mainland*\") might be used in the future if glaciers are inventorized there.\n", "- All abbreviations in the second-order regions file have been replaced by their full name (e.g. \"East Central\" instead of \"EC\")\n", "- The first-order and second-order region files now have a field called `long_code` which contains a string representing the full region name, using the lowercase with underscores format (e.g. `02_western_canada_usa`). This field is used to name the corresponding RGI shapefiles.\n", "- The subregion `05-11` (Greenland Ice Sheet) has been removed.\n", "- The `WGMS_CODE` column has been deleted from all files.\n", "- The `RGI_CODE` column is now called `o1region` (first order files) and `o2region` (second-order files)" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "# go down from rgi7_scripts/workflow/preprocessing\n", "data_dir = '../../../rgi7_data/'" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "import os\n", "import numpy as np\n", "import pandas as pd\n", "import shapely.geometry as shpg\n", "import geopandas as gpd\n", "from utils import mkdir\n", "import shutil\n", "from shapely.validation import make_valid" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Regions " ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'/home/www/fmaussion/misc/rgi7_data/00_rgi70_regions'" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "out_dir = os.path.abspath(os.path.join(data_dir, '00_rgi70_regions'))\n", "mkdir(out_dir)" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
FULL_NAMERGI_CODELONG_CODE
0Alaska0101_alaska
1Western Canada and USA0202_western_canada_usa
2Arctic Canada North0303_arctic_canada_north
3Arctic Canada South0404_arctic_canada_south
4Greenland Periphery0505_greenland_periphery
5Iceland0606_iceland
6Svalbard and Jan Mayen0707_svalbard_jan_mayen
7Scandinavia0808_scandinavia
8Russian Arctic0909_russian_arctic
9North Asia1010_north_asia
10Central Europe1111_central_europe
11Caucasus and Middle East1212_caucasus_middle_east
12Central Asia1313_central_asia
13South Asia West1414_south_asia_west
14South Asia East1515_south_asia_east
15Low Latitudes1616_low_latitudes
16Southern Andes1717_southern_andes
17New Zealand1818_new_zealand
18Subantarctic and Antarctic Islands1919_subantarctic_antarctic_islands
19Antarctic Mainland2020_antarctic_mainland
\n", "
" ], "text/plain": [ " FULL_NAME RGI_CODE \\\n", "0 Alaska 01 \n", "1 Western Canada and USA 02 \n", "2 Arctic Canada North 03 \n", "3 Arctic Canada South 04 \n", "4 Greenland Periphery 05 \n", "5 Iceland 06 \n", "6 Svalbard and Jan Mayen 07 \n", "7 Scandinavia 08 \n", "8 Russian Arctic 09 \n", "9 North Asia 10 \n", "10 Central Europe 11 \n", "11 Caucasus and Middle East 12 \n", "12 Central Asia 13 \n", "13 South Asia West 14 \n", "14 South Asia East 15 \n", "15 Low Latitudes 16 \n", "16 Southern Andes 17 \n", "17 New Zealand 18 \n", "18 Subantarctic and Antarctic Islands 19 \n", "19 Antarctic Mainland 20 \n", "\n", " LONG_CODE \n", "0 01_alaska \n", "1 02_western_canada_usa \n", "2 03_arctic_canada_north \n", "3 04_arctic_canada_south \n", "4 05_greenland_periphery \n", "5 06_iceland \n", "6 07_svalbard_jan_mayen \n", "7 08_scandinavia \n", "8 09_russian_arctic \n", "9 10_north_asia \n", "10 11_central_europe \n", "11 12_caucasus_middle_east \n", "12 13_central_asia \n", "13 14_south_asia_west \n", "14 15_south_asia_east \n", "15 16_low_latitudes \n", "16 17_southern_andes \n", "17 18_new_zealand \n", "18 19_subantarctic_antarctic_islands \n", "19 20_antarctic_mainland " ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Read the new names\n", "df_ref = pd.read_csv(os.path.join(out_dir, '00_rgi70_rgi_region_names.csv'), dtype=str)\n", "df_ref" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [], "source": [ "# Read the RGI region files\n", "rgi_dir = os.path.join(data_dir, 'l0_RGIv6')\n", "rgi_reg = gpd.read_file('zip://' + os.path.join(data_dir, 'l0_RGIv6', '00_rgi60_regions.zip', '00_rgi60_O1Regions.shp'))" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [], "source": [ "# Create a new region 20 based on the subregion outline\n", "rgi_subreg = gpd.read_file('zip://' + os.path.join(data_dir, 'l0_RGIv6', '00_rgi60_regions.zip', '00_rgi60_O2Regions.shp'))" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "rgi_subreg.loc[rgi_subreg['RGI_CODE'] == '19-31'].plot();" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [], "source": [ "aa_geom = rgi_subreg.loc[rgi_subreg['RGI_CODE'] == '19-31'].iloc[0].geometry" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [], "source": [ "suba_geom = rgi_reg.iloc[-1].geometry.difference(aa_geom)" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "2" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "len(suba_geom.geoms)" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "data": { "image/svg+xml": [ "" ], "text/plain": [ "" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "suba_geom.geoms[1]" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "True" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "suba_geom = suba_geom.geoms[0]\n", "suba_geom.is_valid" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "data": { "image/svg+xml": [ "" ], "text/plain": [ "" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "suba_geom" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [], "source": [ "rgi_reg.loc[20, 'geometry'] = suba_geom" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [ { "data": { "image/svg+xml": [ "" ], "text/plain": [ "" ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" } ], "source": [ "aa_geom" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [], "source": [ "rgi_reg = pd.concat([rgi_reg, gpd.GeoDataFrame([aa_geom], columns=['geometry'], crs=rgi_reg.crs)], ignore_index=True)" ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
FULL_NAMERGI_CODEWGMS_CODEgeometry
0Alaska1.0ALAPOLYGON ((-133.00000 54.50000, -134.00000 54.5...
1Alaska1.0ALAPOLYGON ((180.00000 50.00000, 179.00000 50.000...
2Western Canada and USA2.0WNAPOLYGON ((-133.00000 54.50000, -132.00000 54.5...
3Arctic Canada, North3.0ACNPOLYGON ((-125.00000 74.00000, -125.00000 75.0...
4Arctic Canada, South4.0ACSPOLYGON ((-90.00000 74.00000, -89.00000 74.000...
5Greenland Periphery5.0GRLPOLYGON ((-75.00000 77.00000, -74.73000 77.510...
6Iceland6.0ISLPOLYGON ((-26.00000 59.00000, -26.00000 60.000...
7Svalbard and Jan Mayen7.0SJMPOLYGON ((-10.00000 70.00000, -10.00000 71.000...
8Scandinavia8.0SCAPOLYGON ((4.00000 70.00000, 4.00000 71.00000, ...
9Russian Arctic9.0RUAPOLYGON ((35.00000 70.00000, 35.00000 71.00000...
10Asia, North10.0ASNPOLYGON ((-180.00000 78.00000, -179.00000 78.0...
11Asia, North10.0ASNPOLYGON ((128.00000 46.00000, 127.00000 46.000...
12Central Europe11.0CEUPOLYGON ((-6.00000 40.00000, -6.00000 41.00000...
13Caucasus and Middle East12.0CAUPOLYGON ((32.00000 31.00000, 32.00000 32.00000...
14Asia, Central13.0ASCPOLYGON ((80.00000 46.00000, 81.00000 46.00000...
15Asia, South West14.0ASWPOLYGON ((75.40000 26.00000, 75.00000 26.00000...
16Asia, South East15.0ASEPOLYGON ((75.40000 26.00000, 75.40000 27.00000...
17Low Latitudes16.0TRPPOLYGON ((-100.00000 -25.00000, -100.00000 -24...
18Southern Andes17.0SANPOLYGON ((-62.00000 -45.50000, -62.00000 -46.0...
19New Zealand18.0NZLPOLYGON ((179.00000 -49.00000, 178.00000 -49.0...
20Antarctic and Subantarctic19.0ANTPOLYGON ((-179.00000 -45.50000, -178.00000 -45...
21NaNNaNNaNPOLYGON ((131.80027 -66.21825, 131.89393 -66.2...
\n", "
" ], "text/plain": [ " FULL_NAME RGI_CODE WGMS_CODE \\\n", "0 Alaska 1.0 ALA \n", "1 Alaska 1.0 ALA \n", "2 Western Canada and USA 2.0 WNA \n", "3 Arctic Canada, North 3.0 ACN \n", "4 Arctic Canada, South 4.0 ACS \n", "5 Greenland Periphery 5.0 GRL \n", "6 Iceland 6.0 ISL \n", "7 Svalbard and Jan Mayen 7.0 SJM \n", "8 Scandinavia 8.0 SCA \n", "9 Russian Arctic 9.0 RUA \n", "10 Asia, North 10.0 ASN \n", "11 Asia, North 10.0 ASN \n", "12 Central Europe 11.0 CEU \n", "13 Caucasus and Middle East 12.0 CAU \n", "14 Asia, Central 13.0 ASC \n", "15 Asia, South West 14.0 ASW \n", "16 Asia, South East 15.0 ASE \n", "17 Low Latitudes 16.0 TRP \n", "18 Southern Andes 17.0 SAN \n", "19 New Zealand 18.0 NZL \n", "20 Antarctic and Subantarctic 19.0 ANT \n", "21 NaN NaN NaN \n", "\n", " geometry \n", "0 POLYGON ((-133.00000 54.50000, -134.00000 54.5... \n", "1 POLYGON ((180.00000 50.00000, 179.00000 50.000... \n", "2 POLYGON ((-133.00000 54.50000, -132.00000 54.5... \n", "3 POLYGON ((-125.00000 74.00000, -125.00000 75.0... \n", "4 POLYGON ((-90.00000 74.00000, -89.00000 74.000... \n", "5 POLYGON ((-75.00000 77.00000, -74.73000 77.510... \n", "6 POLYGON ((-26.00000 59.00000, -26.00000 60.000... \n", "7 POLYGON ((-10.00000 70.00000, -10.00000 71.000... \n", "8 POLYGON ((4.00000 70.00000, 4.00000 71.00000, ... \n", "9 POLYGON ((35.00000 70.00000, 35.00000 71.00000... \n", "10 POLYGON ((-180.00000 78.00000, -179.00000 78.0... \n", "11 POLYGON ((128.00000 46.00000, 127.00000 46.000... \n", "12 POLYGON ((-6.00000 40.00000, -6.00000 41.00000... \n", "13 POLYGON ((32.00000 31.00000, 32.00000 32.00000... \n", "14 POLYGON ((80.00000 46.00000, 81.00000 46.00000... \n", "15 POLYGON ((75.40000 26.00000, 75.00000 26.00000... \n", "16 POLYGON ((75.40000 26.00000, 75.40000 27.00000... \n", "17 POLYGON ((-100.00000 -25.00000, -100.00000 -24... \n", "18 POLYGON ((-62.00000 -45.50000, -62.00000 -46.0... \n", "19 POLYGON ((179.00000 -49.00000, 178.00000 -49.0... \n", "20 POLYGON ((-179.00000 -45.50000, -178.00000 -45... \n", "21 POLYGON ((131.80027 -66.21825, 131.89393 -66.2... " ] }, "execution_count": 17, "metadata": {}, "output_type": "execute_result" } ], "source": [ "rgi_reg" ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "2" ] }, "execution_count": 18, "metadata": {}, "output_type": "execute_result" } ], "source": [ "(~ rgi_reg.is_valid).sum()" ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
FULL_NAMERGI_CODEWGMS_CODEgeometry
17Low Latitudes16.0TRPPOLYGON ((-100.00000 -25.00000, -100.00000 -24...
21NaNNaNNaNPOLYGON ((131.80027 -66.21825, 131.89393 -66.2...
\n", "
" ], "text/plain": [ " FULL_NAME RGI_CODE WGMS_CODE \\\n", "17 Low Latitudes 16.0 TRP \n", "21 NaN NaN NaN \n", "\n", " geometry \n", "17 POLYGON ((-100.00000 -25.00000, -100.00000 -24... \n", "21 POLYGON ((131.80027 -66.21825, 131.89393 -66.2... " ] }, "execution_count": 19, "metadata": {}, "output_type": "execute_result" } ], "source": [ "rgi_reg.loc[~ rgi_reg.is_valid]" ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Success : Low Latitudes\n", "\n", "\n" ] } ], "source": [ "for i, s in rgi_reg.loc[~ rgi_reg.is_valid].iterrows():\n", " corr = make_valid(s.geometry)\n", " if type(corr) == shpg.Polygon:\n", " print(f'Success : {s.FULL_NAME}')\n", " rgi_reg.loc[i, 'geometry'] = corr\n", " else:\n", " for g in corr.geoms:\n", " print(type(g))" ] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
FULL_NAMERGI_CODEWGMS_CODEgeometry
21NaNNaNNaNPOLYGON ((131.80027 -66.21825, 131.89393 -66.2...
\n", "
" ], "text/plain": [ " FULL_NAME RGI_CODE WGMS_CODE \\\n", "21 NaN NaN NaN \n", "\n", " geometry \n", "21 POLYGON ((131.80027 -66.21825, 131.89393 -66.2... " ] }, "execution_count": 21, "metadata": {}, "output_type": "execute_result" } ], "source": [ "rgi_reg.loc[~ rgi_reg.is_valid]" ] }, { "cell_type": "code", "execution_count": 22, "metadata": {}, "outputs": [], "source": [ "corr = make_valid(rgi_reg.loc[~ rgi_reg.is_valid].iloc[0].geometry)" ] }, { "cell_type": "code", "execution_count": 23, "metadata": {}, "outputs": [ { "data": { "image/svg+xml": [ "" ], "text/plain": [ "" ] }, "execution_count": 23, "metadata": {}, "output_type": "execute_result" } ], "source": [ "corr.geoms[0]" ] }, { "cell_type": "code", "execution_count": 24, "metadata": {}, "outputs": [ { "data": { "image/svg+xml": [ "" ], "text/plain": [ "" ] }, "execution_count": 24, "metadata": {}, "output_type": "execute_result" } ], "source": [ "corr.geoms[1]" ] }, { "cell_type": "code", "execution_count": 25, "metadata": {}, "outputs": [], "source": [ "rgi_reg.loc[21, 'geometry'] = corr.geoms[0]\n", "rgi_reg.loc[21, 'RGI_CODE'] = 20\n", "rgi_reg['RGI_CODE'] = rgi_reg['RGI_CODE'].astype(int)\n", "rgi_reg.loc[21, 'FULL_NAME'] = 'Antarctic Mainland'\n", "rgi_reg.loc[20, 'FULL_NAME'] = 'Subantarctic and Antarctic Islands'" ] }, { "cell_type": "code", "execution_count": 26, "metadata": {}, "outputs": [], "source": [ "# Remove the useless Alaska box in the Eastern hemisphere\n", "rgi_reg = rgi_reg.drop(1).reset_index()\n", "del rgi_reg['index']" ] }, { "cell_type": "code", "execution_count": 27, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
FULL_NAMERGI_CODEWGMS_CODEgeometry
0Alaska1ALAPOLYGON ((-133.00000 54.50000, -134.00000 54.5...
1Western Canada and USA2WNAPOLYGON ((-133.00000 54.50000, -132.00000 54.5...
2Arctic Canada, North3ACNPOLYGON ((-125.00000 74.00000, -125.00000 75.0...
3Arctic Canada, South4ACSPOLYGON ((-90.00000 74.00000, -89.00000 74.000...
4Greenland Periphery5GRLPOLYGON ((-75.00000 77.00000, -74.73000 77.510...
5Iceland6ISLPOLYGON ((-26.00000 59.00000, -26.00000 60.000...
6Svalbard and Jan Mayen7SJMPOLYGON ((-10.00000 70.00000, -10.00000 71.000...
7Scandinavia8SCAPOLYGON ((4.00000 70.00000, 4.00000 71.00000, ...
8Russian Arctic9RUAPOLYGON ((35.00000 70.00000, 35.00000 71.00000...
9Asia, North10ASNPOLYGON ((-180.00000 78.00000, -179.00000 78.0...
10Asia, North10ASNPOLYGON ((128.00000 46.00000, 127.00000 46.000...
11Central Europe11CEUPOLYGON ((-6.00000 40.00000, -6.00000 41.00000...
12Caucasus and Middle East12CAUPOLYGON ((32.00000 31.00000, 32.00000 32.00000...
13Asia, Central13ASCPOLYGON ((80.00000 46.00000, 81.00000 46.00000...
14Asia, South West14ASWPOLYGON ((75.40000 26.00000, 75.00000 26.00000...
15Asia, South East15ASEPOLYGON ((75.40000 26.00000, 75.40000 27.00000...
16Low Latitudes16TRPPOLYGON ((-100.00000 -24.00000, -100.00000 -23...
17Southern Andes17SANPOLYGON ((-62.00000 -45.50000, -62.00000 -46.0...
18New Zealand18NZLPOLYGON ((179.00000 -49.00000, 178.00000 -49.0...
19Subantarctic and Antarctic Islands19ANTPOLYGON ((-179.00000 -45.50000, -178.00000 -45...
20Antarctic Mainland20NaNPOLYGON ((131.99251 -66.18084, 132.10675 -66.1...
\n", "
" ], "text/plain": [ " FULL_NAME RGI_CODE WGMS_CODE \\\n", "0 Alaska 1 ALA \n", "1 Western Canada and USA 2 WNA \n", "2 Arctic Canada, North 3 ACN \n", "3 Arctic Canada, South 4 ACS \n", "4 Greenland Periphery 5 GRL \n", "5 Iceland 6 ISL \n", "6 Svalbard and Jan Mayen 7 SJM \n", "7 Scandinavia 8 SCA \n", "8 Russian Arctic 9 RUA \n", "9 Asia, North 10 ASN \n", "10 Asia, North 10 ASN \n", "11 Central Europe 11 CEU \n", "12 Caucasus and Middle East 12 CAU \n", "13 Asia, Central 13 ASC \n", "14 Asia, South West 14 ASW \n", "15 Asia, South East 15 ASE \n", "16 Low Latitudes 16 TRP \n", "17 Southern Andes 17 SAN \n", "18 New Zealand 18 NZL \n", "19 Subantarctic and Antarctic Islands 19 ANT \n", "20 Antarctic Mainland 20 NaN \n", "\n", " geometry \n", "0 POLYGON ((-133.00000 54.50000, -134.00000 54.5... \n", "1 POLYGON ((-133.00000 54.50000, -132.00000 54.5... \n", "2 POLYGON ((-125.00000 74.00000, -125.00000 75.0... \n", "3 POLYGON ((-90.00000 74.00000, -89.00000 74.000... \n", "4 POLYGON ((-75.00000 77.00000, -74.73000 77.510... \n", "5 POLYGON ((-26.00000 59.00000, -26.00000 60.000... \n", "6 POLYGON ((-10.00000 70.00000, -10.00000 71.000... \n", "7 POLYGON ((4.00000 70.00000, 4.00000 71.00000, ... \n", "8 POLYGON ((35.00000 70.00000, 35.00000 71.00000... \n", "9 POLYGON ((-180.00000 78.00000, -179.00000 78.0... \n", "10 POLYGON ((128.00000 46.00000, 127.00000 46.000... \n", "11 POLYGON ((-6.00000 40.00000, -6.00000 41.00000... \n", "12 POLYGON ((32.00000 31.00000, 32.00000 32.00000... \n", "13 POLYGON ((80.00000 46.00000, 81.00000 46.00000... \n", "14 POLYGON ((75.40000 26.00000, 75.00000 26.00000... \n", "15 POLYGON ((75.40000 26.00000, 75.40000 27.00000... \n", "16 POLYGON ((-100.00000 -24.00000, -100.00000 -23... \n", "17 POLYGON ((-62.00000 -45.50000, -62.00000 -46.0... \n", "18 POLYGON ((179.00000 -49.00000, 178.00000 -49.0... \n", "19 POLYGON ((-179.00000 -45.50000, -178.00000 -45... \n", "20 POLYGON ((131.99251 -66.18084, 132.10675 -66.1... " ] }, "execution_count": 27, "metadata": {}, "output_type": "execute_result" } ], "source": [ "rgi_reg" ] }, { "cell_type": "code", "execution_count": 29, "metadata": {}, "outputs": [], "source": [ "# Rename things that need renaming\n", "rgi_reg['RGI_CODE'] = [f'{int(i):02d}' for i in rgi_reg['RGI_CODE']]" ] }, { "cell_type": "code", "execution_count": 30, "metadata": {}, "outputs": [], "source": [ "rgi_reg = rgi_reg.rename({'WGMS_CODE':'LONG_CODE'}, axis=1)\n", "rgi_reg['FULL_NAME'] = [df_ref.loc[df_ref.RGI_CODE == i, 'FULL_NAME'].values[0] for i in rgi_reg['RGI_CODE']]\n", "rgi_reg['LONG_CODE'] = [df_ref.loc[df_ref.RGI_CODE == i, 'LONG_CODE'].values[0] for i in rgi_reg['RGI_CODE']]" ] }, { "cell_type": "code", "execution_count": 31, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(32.0, 31.0, 54.0, 45.0)" ] }, "execution_count": 31, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Select the RGI 12 polygon\n", "poly = rgi_reg.loc[rgi_reg.RGI_CODE == '12'].iloc[0].geometry\n", "poly.bounds" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let's go down to 30° South instead:" ] }, { "cell_type": "code", "execution_count": 32, "metadata": {}, "outputs": [], "source": [ "x, y = poly.exterior.xy\n", "ny = np.where(np.isclose(y, 31), 30, y)\n", "new_poly = shpg.Polygon(np.array((x, ny)).T)\n", "rgi_reg.loc[rgi_reg.RGI_CODE == '12', 'geometry'] = new_poly" ] }, { "cell_type": "code", "execution_count": 33, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
FULL_NAMERGI_CODELONG_CODEgeometry
0Alaska0101_alaskaPOLYGON ((-133.00000 54.50000, -134.00000 54.5...
1Western Canada and USA0202_western_canada_usaPOLYGON ((-133.00000 54.50000, -132.00000 54.5...
2Arctic Canada North0303_arctic_canada_northPOLYGON ((-125.00000 74.00000, -125.00000 75.0...
3Arctic Canada South0404_arctic_canada_southPOLYGON ((-90.00000 74.00000, -89.00000 74.000...
4Greenland Periphery0505_greenland_peripheryPOLYGON ((-75.00000 77.00000, -74.73000 77.510...
5Iceland0606_icelandPOLYGON ((-26.00000 59.00000, -26.00000 60.000...
6Svalbard and Jan Mayen0707_svalbard_jan_mayenPOLYGON ((-10.00000 70.00000, -10.00000 71.000...
7Scandinavia0808_scandinaviaPOLYGON ((4.00000 70.00000, 4.00000 71.00000, ...
8Russian Arctic0909_russian_arcticPOLYGON ((35.00000 70.00000, 35.00000 71.00000...
9North Asia1010_north_asiaPOLYGON ((-180.00000 78.00000, -179.00000 78.0...
10North Asia1010_north_asiaPOLYGON ((128.00000 46.00000, 127.00000 46.000...
11Central Europe1111_central_europePOLYGON ((-6.00000 40.00000, -6.00000 41.00000...
12Caucasus and Middle East1212_caucasus_middle_eastPOLYGON ((32.00000 30.00000, 32.00000 32.00000...
13Central Asia1313_central_asiaPOLYGON ((80.00000 46.00000, 81.00000 46.00000...
14South Asia West1414_south_asia_westPOLYGON ((75.40000 26.00000, 75.00000 26.00000...
15South Asia East1515_south_asia_eastPOLYGON ((75.40000 26.00000, 75.40000 27.00000...
16Low Latitudes1616_low_latitudesPOLYGON ((-100.00000 -24.00000, -100.00000 -23...
17Southern Andes1717_southern_andesPOLYGON ((-62.00000 -45.50000, -62.00000 -46.0...
18New Zealand1818_new_zealandPOLYGON ((179.00000 -49.00000, 178.00000 -49.0...
19Subantarctic and Antarctic Islands1919_subantarctic_antarctic_islandsPOLYGON ((-179.00000 -45.50000, -178.00000 -45...
20Antarctic Mainland2020_antarctic_mainlandPOLYGON ((131.99251 -66.18084, 132.10675 -66.1...
\n", "
" ], "text/plain": [ " FULL_NAME RGI_CODE \\\n", "0 Alaska 01 \n", "1 Western Canada and USA 02 \n", "2 Arctic Canada North 03 \n", "3 Arctic Canada South 04 \n", "4 Greenland Periphery 05 \n", "5 Iceland 06 \n", "6 Svalbard and Jan Mayen 07 \n", "7 Scandinavia 08 \n", "8 Russian Arctic 09 \n", "9 North Asia 10 \n", "10 North Asia 10 \n", "11 Central Europe 11 \n", "12 Caucasus and Middle East 12 \n", "13 Central Asia 13 \n", "14 South Asia West 14 \n", "15 South Asia East 15 \n", "16 Low Latitudes 16 \n", "17 Southern Andes 17 \n", "18 New Zealand 18 \n", "19 Subantarctic and Antarctic Islands 19 \n", "20 Antarctic Mainland 20 \n", "\n", " LONG_CODE \\\n", "0 01_alaska \n", "1 02_western_canada_usa \n", "2 03_arctic_canada_north \n", "3 04_arctic_canada_south \n", "4 05_greenland_periphery \n", "5 06_iceland \n", "6 07_svalbard_jan_mayen \n", "7 08_scandinavia \n", "8 09_russian_arctic \n", "9 10_north_asia \n", "10 10_north_asia \n", "11 11_central_europe \n", "12 12_caucasus_middle_east \n", "13 13_central_asia \n", "14 14_south_asia_west \n", "15 15_south_asia_east \n", "16 16_low_latitudes \n", "17 17_southern_andes \n", "18 18_new_zealand \n", "19 19_subantarctic_antarctic_islands \n", "20 20_antarctic_mainland \n", "\n", " geometry \n", "0 POLYGON ((-133.00000 54.50000, -134.00000 54.5... \n", "1 POLYGON ((-133.00000 54.50000, -132.00000 54.5... \n", "2 POLYGON ((-125.00000 74.00000, -125.00000 75.0... \n", "3 POLYGON ((-90.00000 74.00000, -89.00000 74.000... \n", "4 POLYGON ((-75.00000 77.00000, -74.73000 77.510... \n", "5 POLYGON ((-26.00000 59.00000, -26.00000 60.000... \n", "6 POLYGON ((-10.00000 70.00000, -10.00000 71.000... \n", "7 POLYGON ((4.00000 70.00000, 4.00000 71.00000, ... \n", "8 POLYGON ((35.00000 70.00000, 35.00000 71.00000... \n", "9 POLYGON ((-180.00000 78.00000, -179.00000 78.0... \n", "10 POLYGON ((128.00000 46.00000, 127.00000 46.000... \n", "11 POLYGON ((-6.00000 40.00000, -6.00000 41.00000... \n", "12 POLYGON ((32.00000 30.00000, 32.00000 32.00000... \n", "13 POLYGON ((80.00000 46.00000, 81.00000 46.00000... \n", "14 POLYGON ((75.40000 26.00000, 75.00000 26.00000... \n", "15 POLYGON ((75.40000 26.00000, 75.40000 27.00000... \n", "16 POLYGON ((-100.00000 -24.00000, -100.00000 -23... \n", "17 POLYGON ((-62.00000 -45.50000, -62.00000 -46.0... \n", "18 POLYGON ((179.00000 -49.00000, 178.00000 -49.0... \n", "19 POLYGON ((-179.00000 -45.50000, -178.00000 -45... \n", "20 POLYGON ((131.99251 -66.18084, 132.10675 -66.1... " ] }, "execution_count": 33, "metadata": {}, "output_type": "execute_result" } ], "source": [ "rgi_reg" ] }, { "cell_type": "code", "execution_count": 34, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0" ] }, "execution_count": 34, "metadata": {}, "output_type": "execute_result" } ], "source": [ "(~ rgi_reg.is_valid).sum()" ] }, { "cell_type": "code", "execution_count": 35, "metadata": {}, "outputs": [], "source": [ "# Remove RGI 20\n", "# rgi_reg = rgi_reg.iloc[:-1]" ] }, { "cell_type": "code", "execution_count": 36, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
o1regionfull_namelong_codegeometry
001Alaska01_alaskaPOLYGON ((-133.00000 54.50000, -134.00000 54.5...
102Western Canada and USA02_western_canada_usaPOLYGON ((-133.00000 54.50000, -132.00000 54.5...
203Arctic Canada North03_arctic_canada_northPOLYGON ((-125.00000 74.00000, -125.00000 75.0...
304Arctic Canada South04_arctic_canada_southPOLYGON ((-90.00000 74.00000, -89.00000 74.000...
405Greenland Periphery05_greenland_peripheryPOLYGON ((-75.00000 77.00000, -74.73000 77.510...
506Iceland06_icelandPOLYGON ((-26.00000 59.00000, -26.00000 60.000...
607Svalbard and Jan Mayen07_svalbard_jan_mayenPOLYGON ((-10.00000 70.00000, -10.00000 71.000...
708Scandinavia08_scandinaviaPOLYGON ((4.00000 70.00000, 4.00000 71.00000, ...
809Russian Arctic09_russian_arcticPOLYGON ((35.00000 70.00000, 35.00000 71.00000...
910North Asia10_north_asiaPOLYGON ((-180.00000 78.00000, -179.00000 78.0...
1010North Asia10_north_asiaPOLYGON ((128.00000 46.00000, 127.00000 46.000...
1111Central Europe11_central_europePOLYGON ((-6.00000 40.00000, -6.00000 41.00000...
1212Caucasus and Middle East12_caucasus_middle_eastPOLYGON ((32.00000 30.00000, 32.00000 32.00000...
1313Central Asia13_central_asiaPOLYGON ((80.00000 46.00000, 81.00000 46.00000...
1414South Asia West14_south_asia_westPOLYGON ((75.40000 26.00000, 75.00000 26.00000...
1515South Asia East15_south_asia_eastPOLYGON ((75.40000 26.00000, 75.40000 27.00000...
1616Low Latitudes16_low_latitudesPOLYGON ((-100.00000 -24.00000, -100.00000 -23...
1717Southern Andes17_southern_andesPOLYGON ((-62.00000 -45.50000, -62.00000 -46.0...
1818New Zealand18_new_zealandPOLYGON ((179.00000 -49.00000, 178.00000 -49.0...
1919Subantarctic and Antarctic Islands19_subantarctic_antarctic_islandsPOLYGON ((-179.00000 -45.50000, -178.00000 -45...
2020Antarctic Mainland20_antarctic_mainlandPOLYGON ((131.99251 -66.18084, 132.10675 -66.1...
\n", "
" ], "text/plain": [ " o1region full_name \\\n", "0 01 Alaska \n", "1 02 Western Canada and USA \n", "2 03 Arctic Canada North \n", "3 04 Arctic Canada South \n", "4 05 Greenland Periphery \n", "5 06 Iceland \n", "6 07 Svalbard and Jan Mayen \n", "7 08 Scandinavia \n", "8 09 Russian Arctic \n", "9 10 North Asia \n", "10 10 North Asia \n", "11 11 Central Europe \n", "12 12 Caucasus and Middle East \n", "13 13 Central Asia \n", "14 14 South Asia West \n", "15 15 South Asia East \n", "16 16 Low Latitudes \n", "17 17 Southern Andes \n", "18 18 New Zealand \n", "19 19 Subantarctic and Antarctic Islands \n", "20 20 Antarctic Mainland \n", "\n", " long_code \\\n", "0 01_alaska \n", "1 02_western_canada_usa \n", "2 03_arctic_canada_north \n", "3 04_arctic_canada_south \n", "4 05_greenland_periphery \n", "5 06_iceland \n", "6 07_svalbard_jan_mayen \n", "7 08_scandinavia \n", "8 09_russian_arctic \n", "9 10_north_asia \n", "10 10_north_asia \n", "11 11_central_europe \n", "12 12_caucasus_middle_east \n", "13 13_central_asia \n", "14 14_south_asia_west \n", "15 15_south_asia_east \n", "16 16_low_latitudes \n", "17 17_southern_andes \n", "18 18_new_zealand \n", "19 19_subantarctic_antarctic_islands \n", "20 20_antarctic_mainland \n", "\n", " geometry \n", "0 POLYGON ((-133.00000 54.50000, -134.00000 54.5... \n", "1 POLYGON ((-133.00000 54.50000, -132.00000 54.5... \n", "2 POLYGON ((-125.00000 74.00000, -125.00000 75.0... \n", "3 POLYGON ((-90.00000 74.00000, -89.00000 74.000... \n", "4 POLYGON ((-75.00000 77.00000, -74.73000 77.510... \n", "5 POLYGON ((-26.00000 59.00000, -26.00000 60.000... \n", "6 POLYGON ((-10.00000 70.00000, -10.00000 71.000... \n", "7 POLYGON ((4.00000 70.00000, 4.00000 71.00000, ... \n", "8 POLYGON ((35.00000 70.00000, 35.00000 71.00000... \n", "9 POLYGON ((-180.00000 78.00000, -179.00000 78.0... \n", "10 POLYGON ((128.00000 46.00000, 127.00000 46.000... \n", "11 POLYGON ((-6.00000 40.00000, -6.00000 41.00000... \n", "12 POLYGON ((32.00000 30.00000, 32.00000 32.00000... \n", "13 POLYGON ((80.00000 46.00000, 81.00000 46.00000... \n", "14 POLYGON ((75.40000 26.00000, 75.00000 26.00000... \n", "15 POLYGON ((75.40000 26.00000, 75.40000 27.00000... \n", "16 POLYGON ((-100.00000 -24.00000, -100.00000 -23... \n", "17 POLYGON ((-62.00000 -45.50000, -62.00000 -46.0... \n", "18 POLYGON ((179.00000 -49.00000, 178.00000 -49.0... \n", "19 POLYGON ((-179.00000 -45.50000, -178.00000 -45... \n", "20 POLYGON ((131.99251 -66.18084, 132.10675 -66.1... " ] }, "execution_count": 36, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Remame columns\n", "names = [s.lower() for s in rgi_reg.columns]\n", "names[1] = 'o1region'\n", "rgi_reg.columns = names\n", "rgi_reg = rgi_reg[['o1region', 'full_name', 'long_code', 'geometry']]\n", "rgi_reg" ] }, { "cell_type": "code", "execution_count": 37, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "| o1region | full_name | long_code |\n", "|-----------:|:-----------------------------------|:----------------------------------|\n", "| 01 | Alaska | 01_alaska |\n", "| 02 | Western Canada and USA | 02_western_canada_usa |\n", "| 03 | Arctic Canada North | 03_arctic_canada_north |\n", "| 04 | Arctic Canada South | 04_arctic_canada_south |\n", "| 05 | Greenland Periphery | 05_greenland_periphery |\n", "| 06 | Iceland | 06_iceland |\n", "| 07 | Svalbard and Jan Mayen | 07_svalbard_jan_mayen |\n", "| 08 | Scandinavia | 08_scandinavia |\n", "| 09 | Russian Arctic | 09_russian_arctic |\n", "| 10 | North Asia | 10_north_asia |\n", "| 10 | North Asia | 10_north_asia |\n", "| 11 | Central Europe | 11_central_europe |\n", "| 12 | Caucasus and Middle East | 12_caucasus_middle_east |\n", "| 13 | Central Asia | 13_central_asia |\n", "| 14 | South Asia West | 14_south_asia_west |\n", "| 15 | South Asia East | 15_south_asia_east |\n", "| 16 | Low Latitudes | 16_low_latitudes |\n", "| 17 | Southern Andes | 17_southern_andes |\n", "| 18 | New Zealand | 18_new_zealand |\n", "| 19 | Subantarctic and Antarctic Islands | 19_subantarctic_antarctic_islands |\n", "| 20 | Antarctic Mainland | 20_antarctic_mainland |\n" ] } ], "source": [ "print(rgi_reg.set_index('o1region')[['full_name', 'long_code']].to_markdown())" ] }, { "cell_type": "code", "execution_count": 38, "metadata": {}, "outputs": [], "source": [ "rgi_reg.crs = 'EPSG:4326'" ] }, { "cell_type": "code", "execution_count": 39, "metadata": {}, "outputs": [], "source": [ "out_file_dir = os.path.join(out_dir, '00_rgi70_O1Regions')\n", "rgi_reg.to_file(out_file_dir)" ] }, { "cell_type": "code", "execution_count": 40, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'/home/www/fmaussion/misc/rgi7_data/00_rgi70_regions/00_rgi70_O1Regions.zip'" ] }, "execution_count": 40, "metadata": {}, "output_type": "execute_result" } ], "source": [ "shutil.make_archive(f'{out_dir}/00_rgi70_O1Regions', 'zip', out_file_dir)" ] }, { "cell_type": "code", "execution_count": 41, "metadata": {}, "outputs": [], "source": [ "# Check\n", "rgi_reg = gpd.read_file(out_file_dir)\n", "assert rgi_reg.o1region.dtype == 'O'" ] }, { "cell_type": "code", "execution_count": 42, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "{'geometry': 'Polygon',\n", " 'properties': OrderedDict([('o1region', 'str'),\n", " ('full_name', 'str'),\n", " ('long_code', 'str')])}" ] }, "execution_count": 42, "metadata": {}, "output_type": "execute_result" } ], "source": [ "gpd.io.file.infer_schema(rgi_reg)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Subregions " ] }, { "cell_type": "code", "execution_count": 43, "metadata": {}, "outputs": [], "source": [ "rgi_reg = gpd.read_file('zip://' + os.path.join(data_dir, 'l0_RGIv6', '00_rgi60_regions.zip', '00_rgi60_O2Regions.shp'))" ] }, { "cell_type": "code", "execution_count": 44, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
FULL_NAMERGI_CODELONG_CODE
0North Alaska01-01NaN
1Alaska Range (Wrangell/Kilbuck)01-02NaN
2Alaska Peninsula (Aleutians)01-03NaN
3Alaska Peninsula (Aleutians)01-03NaN
4West Chugach Mountains (Talkeetna)01-04NaN
............
88Northeast Antarctic Peninsula 7I219-21NaN
89Southeast Antarctic Peninsula 7I319-22NaN
90Ronne-Filchner Ice Shelf 7J19-23NaN
91West Queen Maud Land 7K19-24NaN
92Antarctic Mainland20-01NaN
\n", "

93 rows × 3 columns

\n", "
" ], "text/plain": [ " FULL_NAME RGI_CODE LONG_CODE\n", "0 North Alaska 01-01 NaN\n", "1 Alaska Range (Wrangell/Kilbuck) 01-02 NaN\n", "2 Alaska Peninsula (Aleutians) 01-03 NaN\n", "3 Alaska Peninsula (Aleutians) 01-03 NaN\n", "4 West Chugach Mountains (Talkeetna) 01-04 NaN\n", ".. ... ... ...\n", "88 Northeast Antarctic Peninsula 7I2 19-21 NaN\n", "89 Southeast Antarctic Peninsula 7I3 19-22 NaN\n", "90 Ronne-Filchner Ice Shelf 7J 19-23 NaN\n", "91 West Queen Maud Land 7K 19-24 NaN\n", "92 Antarctic Mainland 20-01 NaN\n", "\n", "[93 rows x 3 columns]" ] }, "execution_count": 44, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Read the new names\n", "df_ref = pd.read_csv(os.path.join(out_dir, '00_rgi70_rgi_subregion_names.csv'), dtype=str)\n", "df_ref" ] }, { "cell_type": "code", "execution_count": 45, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "91" ] }, "execution_count": 45, "metadata": {}, "output_type": "execute_result" } ], "source": [ "len(rgi_reg.RGI_CODE.unique())" ] }, { "cell_type": "code", "execution_count": 46, "metadata": {}, "outputs": [], "source": [ "# Create a long code\n", "long = []\n", "for s in df_ref['FULL_NAME']:\n", " s = s.replace('(', '').replace(')', '').replace('/', '_').replace('-', '_')\n", " s = '_'.join([so.lower() for so in s.split(' ')])\n", " long.append(s.replace('__', '_').replace('__', '_'))\n", "df_ref['LONG_CODE'] = long" ] }, { "cell_type": "code", "execution_count": 47, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(34.0, 32.0, 53.0, 42.0)" ] }, "execution_count": 47, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Move RGI12 a bit south\n", "poly = rgi_reg.loc[rgi_reg.RGI_CODE == '12-02'].iloc[0].geometry\n", "poly.bounds" ] }, { "cell_type": "code", "execution_count": 48, "metadata": {}, "outputs": [], "source": [ "x, y = poly.exterior.xy\n", "ny = np.where(np.isclose(y, 32), 30, y)\n", "new_poly = shpg.Polygon(np.array((x, ny)).T)\n", "rgi_reg.loc[rgi_reg.RGI_CODE == '12-02', 'geometry'] = new_poly" ] }, { "cell_type": "code", "execution_count": 49, "metadata": {}, "outputs": [], "source": [ "# Remove the useless Alaska box in the Eastern hemisphere\n", "rgi_reg = rgi_reg.drop(3).reset_index()\n", "del rgi_reg['index']" ] }, { "cell_type": "code", "execution_count": 50, "metadata": {}, "outputs": [], "source": [ "# Rename things that need renaming\n", "rgi_reg.loc[91, 'RGI_CODE'] = '20-01'\n", "rgi_reg.loc[91, 'FULL_NAME'] = 'Antarctic Mainland'\n", "rgi_reg = rgi_reg.rename({'WGMS_CODE':'LONG_CODE'}, axis=1)\n", "rgi_reg['FULL_NAME'] = [df_ref.loc[df_ref.RGI_CODE == i, 'FULL_NAME'].values[0] for i in rgi_reg['RGI_CODE']]\n", "rgi_reg['LONG_CODE'] = [i + '_' + df_ref.loc[df_ref.RGI_CODE == i, 'LONG_CODE'].values[0] for i in rgi_reg['RGI_CODE']]" ] }, { "cell_type": "code", "execution_count": 51, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "3" ] }, "execution_count": 51, "metadata": {}, "output_type": "execute_result" } ], "source": [ "(~ rgi_reg.is_valid).sum()" ] }, { "cell_type": "code", "execution_count": 52, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Success : North Coast Ranges\n", "Success : Marie Byrd Land 7F\n", "Not good : Antarctic Mainland\n", "\n", "\n" ] } ], "source": [ "for i, s in rgi_reg.loc[~ rgi_reg.is_valid].iterrows():\n", " corr = make_valid(s.geometry)\n", " if type(corr) == shpg.Polygon:\n", " print(f'Success : {s.FULL_NAME}')\n", " rgi_reg.loc[i, 'geometry'] = corr\n", " else:\n", " print(f'Not good : {s.FULL_NAME}')\n", " for g in corr.geoms:\n", " print(type(g))" ] }, { "cell_type": "code", "execution_count": 53, "metadata": {}, "outputs": [ { "data": { "image/svg+xml": [ "" ], "text/plain": [ "" ] }, "execution_count": 53, "metadata": {}, "output_type": "execute_result" } ], "source": [ "corr.geoms[0]" ] }, { "cell_type": "code", "execution_count": 54, "metadata": {}, "outputs": [ { "data": { "image/svg+xml": [ "" ], "text/plain": [ "" ] }, "execution_count": 54, "metadata": {}, "output_type": "execute_result" } ], "source": [ "corr.geoms[1]" ] }, { "cell_type": "code", "execution_count": 55, "metadata": {}, "outputs": [], "source": [ "rgi_reg.loc[i, 'geometry'] = corr.geoms[0]" ] }, { "cell_type": "code", "execution_count": 56, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0" ] }, "execution_count": 56, "metadata": {}, "output_type": "execute_result" } ], "source": [ "(~ rgi_reg.is_valid).sum()" ] }, { "cell_type": "code", "execution_count": 57, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
FULL_NAMERGI_CODELONG_CODEgeometry
0North Alaska01-0101-01_north_alaskaPOLYGON ((-169.00000 64.00000, -169.00000 65.0...
1Alaska Range (Wrangell/Kilbuck)01-0201-02_alaska_range_wrangell_kilbuckPOLYGON ((-144.40436 61.48531, -144.48100 61.5...
2Alaska Peninsula (Aleutians)01-0301-03_alaska_peninsula_aleutiansPOLYGON ((-180.00000 57.00000, -179.00000 57.0...
3West Chugach Mountains (Talkeetna)01-0401-04_west_chugach_mountains_talkeetnaPOLYGON ((-151.32973 58.74602, -151.57953 58.8...
4Saint Elias Mountains01-0501-05_saint_elias_mountainsPOLYGON ((-144.25108 61.44018, -144.07510 61.3...
...............
87Northeast Antarctic Peninsula 7I219-2119-21_northeast_antarctic_peninsula_7i2POLYGON ((-62.41123 -69.50624, -62.41913 -69.5...
88Southeast Antarctic Peninsula 7I319-2219-22_southeast_antarctic_peninsula_7i3POLYGON ((-50.00000 -74.80000, -51.00000 -74.8...
89Ronne-Filchner Ice Shelf 7J19-2319-23_ronne_filchner_ice_shelf_7jPOLYGON ((-42.00000 -74.80000, -41.00000 -74.8...
90West Queen Maud Land 7K19-2419-24_west_queen_maud_land_7kPOLYGON ((-10.30000 -69.40000, -10.00000 -69.4...
91Antarctic Mainland20-0120-01_antarctic_mainlandPOLYGON ((131.99251 -66.18084, 132.10675 -66.1...
\n", "

92 rows × 4 columns

\n", "
" ], "text/plain": [ " FULL_NAME RGI_CODE \\\n", "0 North Alaska 01-01 \n", "1 Alaska Range (Wrangell/Kilbuck) 01-02 \n", "2 Alaska Peninsula (Aleutians) 01-03 \n", "3 West Chugach Mountains (Talkeetna) 01-04 \n", "4 Saint Elias Mountains 01-05 \n", ".. ... ... \n", "87 Northeast Antarctic Peninsula 7I2 19-21 \n", "88 Southeast Antarctic Peninsula 7I3 19-22 \n", "89 Ronne-Filchner Ice Shelf 7J 19-23 \n", "90 West Queen Maud Land 7K 19-24 \n", "91 Antarctic Mainland 20-01 \n", "\n", " LONG_CODE \\\n", "0 01-01_north_alaska \n", "1 01-02_alaska_range_wrangell_kilbuck \n", "2 01-03_alaska_peninsula_aleutians \n", "3 01-04_west_chugach_mountains_talkeetna \n", "4 01-05_saint_elias_mountains \n", ".. ... \n", "87 19-21_northeast_antarctic_peninsula_7i2 \n", "88 19-22_southeast_antarctic_peninsula_7i3 \n", "89 19-23_ronne_filchner_ice_shelf_7j \n", "90 19-24_west_queen_maud_land_7k \n", "91 20-01_antarctic_mainland \n", "\n", " geometry \n", "0 POLYGON ((-169.00000 64.00000, -169.00000 65.0... \n", "1 POLYGON ((-144.40436 61.48531, -144.48100 61.5... \n", "2 POLYGON ((-180.00000 57.00000, -179.00000 57.0... \n", "3 POLYGON ((-151.32973 58.74602, -151.57953 58.8... \n", "4 POLYGON ((-144.25108 61.44018, -144.07510 61.3... \n", ".. ... \n", "87 POLYGON ((-62.41123 -69.50624, -62.41913 -69.5... \n", "88 POLYGON ((-50.00000 -74.80000, -51.00000 -74.8... \n", "89 POLYGON ((-42.00000 -74.80000, -41.00000 -74.8... \n", "90 POLYGON ((-10.30000 -69.40000, -10.00000 -69.4... \n", "91 POLYGON ((131.99251 -66.18084, 132.10675 -66.1... \n", "\n", "[92 rows x 4 columns]" ] }, "execution_count": 57, "metadata": {}, "output_type": "execute_result" } ], "source": [ "rgi_reg" ] }, { "cell_type": "code", "execution_count": 58, "metadata": {}, "outputs": [], "source": [ "# Remove RGI 20\n", "# rgi_reg = rgi_reg.iloc[:-1]" ] }, { "cell_type": "code", "execution_count": 59, "metadata": {}, "outputs": [], "source": [ "# Remove Greenland icesheet\n", "rgi_reg = rgi_reg.loc[rgi_reg.RGI_CODE != '05-11'].copy()" ] }, { "cell_type": "code", "execution_count": 60, "metadata": {}, "outputs": [], "source": [ "# Add o1region for help\n", "rgi_reg['o1Region'] = [s.split('-')[0] for s in rgi_reg.RGI_CODE]" ] }, { "cell_type": "code", "execution_count": 61, "metadata": {}, "outputs": [], "source": [ "# order \n", "rgi_reg = rgi_reg[['o1Region', 'RGI_CODE', 'FULL_NAME', 'LONG_CODE', 'geometry']]" ] }, { "cell_type": "code", "execution_count": 62, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
o1regiono2regionfull_namelong_codegeometry
00101-01North Alaska01-01_north_alaskaPOLYGON ((-169.00000 64.00000, -169.00000 65.0...
10101-02Alaska Range (Wrangell/Kilbuck)01-02_alaska_range_wrangell_kilbuckPOLYGON ((-144.40436 61.48531, -144.48100 61.5...
20101-03Alaska Peninsula (Aleutians)01-03_alaska_peninsula_aleutiansPOLYGON ((-180.00000 57.00000, -179.00000 57.0...
30101-04West Chugach Mountains (Talkeetna)01-04_west_chugach_mountains_talkeetnaPOLYGON ((-151.32973 58.74602, -151.57953 58.8...
40101-05Saint Elias Mountains01-05_saint_elias_mountainsPOLYGON ((-144.25108 61.44018, -144.07510 61.3...
..................
871919-21Northeast Antarctic Peninsula 7I219-21_northeast_antarctic_peninsula_7i2POLYGON ((-62.41123 -69.50624, -62.41913 -69.5...
881919-22Southeast Antarctic Peninsula 7I319-22_southeast_antarctic_peninsula_7i3POLYGON ((-50.00000 -74.80000, -51.00000 -74.8...
891919-23Ronne-Filchner Ice Shelf 7J19-23_ronne_filchner_ice_shelf_7jPOLYGON ((-42.00000 -74.80000, -41.00000 -74.8...
901919-24West Queen Maud Land 7K19-24_west_queen_maud_land_7kPOLYGON ((-10.30000 -69.40000, -10.00000 -69.4...
912020-01Antarctic Mainland20-01_antarctic_mainlandPOLYGON ((131.99251 -66.18084, 132.10675 -66.1...
\n", "

91 rows × 5 columns

\n", "
" ], "text/plain": [ " o1region o2region full_name \\\n", "0 01 01-01 North Alaska \n", "1 01 01-02 Alaska Range (Wrangell/Kilbuck) \n", "2 01 01-03 Alaska Peninsula (Aleutians) \n", "3 01 01-04 West Chugach Mountains (Talkeetna) \n", "4 01 01-05 Saint Elias Mountains \n", ".. ... ... ... \n", "87 19 19-21 Northeast Antarctic Peninsula 7I2 \n", "88 19 19-22 Southeast Antarctic Peninsula 7I3 \n", "89 19 19-23 Ronne-Filchner Ice Shelf 7J \n", "90 19 19-24 West Queen Maud Land 7K \n", "91 20 20-01 Antarctic Mainland \n", "\n", " long_code \\\n", "0 01-01_north_alaska \n", "1 01-02_alaska_range_wrangell_kilbuck \n", "2 01-03_alaska_peninsula_aleutians \n", "3 01-04_west_chugach_mountains_talkeetna \n", "4 01-05_saint_elias_mountains \n", ".. ... \n", "87 19-21_northeast_antarctic_peninsula_7i2 \n", "88 19-22_southeast_antarctic_peninsula_7i3 \n", "89 19-23_ronne_filchner_ice_shelf_7j \n", "90 19-24_west_queen_maud_land_7k \n", "91 20-01_antarctic_mainland \n", "\n", " geometry \n", "0 POLYGON ((-169.00000 64.00000, -169.00000 65.0... \n", "1 POLYGON ((-144.40436 61.48531, -144.48100 61.5... \n", "2 POLYGON ((-180.00000 57.00000, -179.00000 57.0... \n", "3 POLYGON ((-151.32973 58.74602, -151.57953 58.8... \n", "4 POLYGON ((-144.25108 61.44018, -144.07510 61.3... \n", ".. ... \n", "87 POLYGON ((-62.41123 -69.50624, -62.41913 -69.5... \n", "88 POLYGON ((-50.00000 -74.80000, -51.00000 -74.8... \n", "89 POLYGON ((-42.00000 -74.80000, -41.00000 -74.8... \n", "90 POLYGON ((-10.30000 -69.40000, -10.00000 -69.4... \n", "91 POLYGON ((131.99251 -66.18084, 132.10675 -66.1... \n", "\n", "[91 rows x 5 columns]" ] }, "execution_count": 62, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Remame things\n", "names = [s.lower() for s in rgi_reg.columns]\n", "names[1] = 'o2region'\n", "rgi_reg.columns = names\n", "rgi_reg" ] }, { "cell_type": "code", "execution_count": 63, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "90" ] }, "execution_count": 63, "metadata": {}, "output_type": "execute_result" } ], "source": [ "len(rgi_reg.o2region.unique())" ] }, { "cell_type": "code", "execution_count": 64, "metadata": {}, "outputs": [], "source": [ "rgi_reg.crs = 'EPSG:4326'" ] }, { "cell_type": "code", "execution_count": 65, "metadata": {}, "outputs": [], "source": [ "out_file_dir = os.path.join(out_dir, '00_rgi70_O2Regions')\n", "rgi_reg.to_file(out_file_dir)" ] }, { "cell_type": "code", "execution_count": 66, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'/home/www/fmaussion/misc/rgi7_data/00_rgi70_regions/00_rgi70_O2Regions.zip'" ] }, "execution_count": 66, "metadata": {}, "output_type": "execute_result" } ], "source": [ "shutil.make_archive(f'{out_dir}/00_rgi70_O2Regions', 'zip', out_file_dir)" ] }, { "cell_type": "code", "execution_count": 67, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "| o2region | full_name | long_code |\n", "|:-----------|:-----------------------------------------|:---------------------------------------------|\n", "| 01-01 | North Alaska | 01-01_north_alaska |\n", "| 01-02 | Alaska Range (Wrangell/Kilbuck) | 01-02_alaska_range_wrangell_kilbuck |\n", "| 01-03 | Alaska Peninsula (Aleutians) | 01-03_alaska_peninsula_aleutians |\n", "| 01-04 | West Chugach Mountains (Talkeetna) | 01-04_west_chugach_mountains_talkeetna |\n", "| 01-05 | Saint Elias Mountains | 01-05_saint_elias_mountains |\n", "| 01-06 | North Coast Ranges | 01-06_north_coast_ranges |\n", "| 02-01 | Mackenzie and Selwyn Mountains | 02-01_mackenzie_and_selwyn_mountains |\n", "| 02-02 | South Coast Ranges | 02-02_south_coast_ranges |\n", "| 02-03 | North Rocky Mountains | 02-03_north_rocky_mountains |\n", "| 02-04 | Cascade Range and Sierra Nevada | 02-04_cascade_range_and_sierra_nevada |\n", "| 02-05 | South Rocky Mountains | 02-05_south_rocky_mountains |\n", "| 03-01 | North Ellesmere Island | 03-01_north_ellesmere_island |\n", "| 03-02 | Axel Heiberg and Meighen Is | 03-02_axel_heiberg_and_meighen_is |\n", "| 03-03 | North Central Ellesmere Island | 03-03_north_central_ellesmere_island |\n", "| 03-04 | South Central Ellesmere Island | 03-04_south_central_ellesmere_island |\n", "| 03-05 | South Ellesmere Island (Northwest Devon) | 03-05_south_ellesmere_island_northwest_devon |\n", "| 03-06 | Devon Island | 03-06_devon_island |\n", "| 03-07 | Melville Island | 03-07_melville_island |\n", "| 04-01 | Bylot Island | 04-01_bylot_island |\n", "| 04-02 | West Baffin Island | 04-02_west_baffin_island |\n", "| 04-03 | North Baffin Island | 04-03_north_baffin_island |\n", "| 04-04 | Northeast Baffin Island | 04-04_northeast_baffin_island |\n", "| 04-05 | East Central Baffin Island | 04-05_east_central_baffin_island |\n", "| 04-06 | South East Baffin Island | 04-06_south_east_baffin_island |\n", "| 04-07 | Cumberland Sound | 04-07_cumberland_sound |\n", "| 04-08 | Frobisher Bay | 04-08_frobisher_bay |\n", "| 04-09 | Labrador | 04-09_labrador |\n", "| 05-01 | Greenland Periphery | 05-01_greenland_periphery |\n", "| 06-01 | Iceland | 06-01_iceland |\n", "| 07-01 | Svalbard | 07-01_svalbard |\n", "| 07-02 | Jan Mayen | 07-02_jan_mayen |\n", "| 08-01 | North Scandinavia | 08-01_north_scandinavia |\n", "| 08-02 | Southwest Scandinavia | 08-02_southwest_scandinavia |\n", "| 08-03 | Southeast Scandinavia | 08-03_southeast_scandinavia |\n", "| 09-01 | Franz Josef Land | 09-01_franz_josef_land |\n", "| 09-02 | Novaya Zemlya | 09-02_novaya_zemlya |\n", "| 09-03 | Severnaya Zemlya | 09-03_severnaya_zemlya |\n", "| 10-01 | Ural Mountains | 10-01_ural_mountains |\n", "| 10-02 | Central Siberia | 10-02_central_siberia |\n", "| 10-03 | Cherskiy/Suntar Khayata Ranges | 10-03_cherskiy_suntar_khayata_ranges |\n", "| 10-04 | Altay and Sayan | 10-04_altay_and_sayan |\n", "| 10-05 | Northeast Russia | 10-05_northeast_russia |\n", "| 10-06 | East Chukotka | 10-06_east_chukotka |\n", "| 10-07 | Japan | 10-07_japan |\n", "| 11-01 | Alps | 11-01_alps |\n", "| 11-02 | Southeast Europe | 11-02_southeast_europe |\n", "| 12-01 | Caucasus and Middle East | 12-01_caucasus_and_middle_east |\n", "| 12-02 | Middle East | 12-02_middle_east |\n", "| 13-01 | Hissar Alay | 13-01_hissar_alay |\n", "| 13-02 | Pamir (Safed Khirs / West Tarim) | 13-02_pamir_safed_khirs_west_tarim |\n", "| 13-03 | West Tien Shan | 13-03_west_tien_shan |\n", "| 13-04 | East Tien Shan (Dzhungaria) | 13-04_east_tien_shan_dzhungaria |\n", "| 13-05 | West Kun Lun | 13-05_west_kun_lun |\n", "| 13-06 | East Kun Lun (Altyn Tagh) | 13-06_east_kun_lun_altyn_tagh |\n", "| 13-07 | Qilian Shan | 13-07_qilian_shan |\n", "| 13-08 | Inner Tibet | 13-08_inner_tibet |\n", "| 13-09 | Southeast Tibet | 13-09_southeast_tibet |\n", "| 14-01 | Hindu Kush | 14-01_hindu_kush |\n", "| 14-02 | Karakoram | 14-02_karakoram |\n", "| 14-03 | West Himalaya | 14-03_west_himalaya |\n", "| 15-01 | Central Himalaya | 15-01_central_himalaya |\n", "| 15-02 | East Himalaya | 15-02_east_himalaya |\n", "| 15-03 | Hengduan Shan | 15-03_hengduan_shan |\n", "| 16-01 | Low-latitude Andes | 16-01_low_latitude_andes |\n", "| 16-02 | Mexico | 16-02_mexico |\n", "| 16-03 | East Africa | 16-03_east_africa |\n", "| 16-04 | New Guinea | 16-04_new_guinea |\n", "| 17-01 | Patagonia | 17-01_patagonia |\n", "| 17-02 | Central Andes | 17-02_central_andes |\n", "| 18-01 | New Zealand | 18-01_new_zealand |\n", "| 19-01 | Subantarctic (Pacific) | 19-01_subantarctic_pacific |\n", "| 19-02 | South Shetlands and South Orkney | 19-02_south_shetlands_and_south_orkney |\n", "| 19-03 | Subantarctic (Atlantic) | 19-03_subantarctic_atlantic |\n", "| 19-04 | Subantarctic (Indian) | 19-04_subantarctic_indian |\n", "| 19-05 | Balleny Islands | 19-05_balleny_islands |\n", "| 19-11 | East Queen Maud Land 7A | 19-11_east_queen_maud_land_7a |\n", "| 19-12 | Amery Ice Shelf 7B | 19-12_amery_ice_shelf_7b |\n", "| 19-13 | Wilkes Land 7C | 19-13_wilkes_land_7c |\n", "| 19-14 | Victoria Land 7D | 19-14_victoria_land_7d |\n", "| 19-15 | Ross Ice Shelf 7E | 19-15_ross_ice_shelf_7e |\n", "| 19-15 | Ross Ice Shelf 7E | 19-15_ross_ice_shelf_7e |\n", "| 19-16 | Marie Byrd Land 7F | 19-16_marie_byrd_land_7f |\n", "| 19-17 | Pine Island Bay 7G | 19-17_pine_island_bay_7g |\n", "| 19-18 | Bellingshausen Sea 7H1 | 19-18_bellingshausen_sea_7h1 |\n", "| 19-19 | Alexander Island 7H2 | 19-19_alexander_island_7h2 |\n", "| 19-20 | West Antarctic Peninsula 7I1 | 19-20_west_antarctic_peninsula_7i1 |\n", "| 19-21 | Northeast Antarctic Peninsula 7I2 | 19-21_northeast_antarctic_peninsula_7i2 |\n", "| 19-22 | Southeast Antarctic Peninsula 7I3 | 19-22_southeast_antarctic_peninsula_7i3 |\n", "| 19-23 | Ronne-Filchner Ice Shelf 7J | 19-23_ronne_filchner_ice_shelf_7j |\n", "| 19-24 | West Queen Maud Land 7K | 19-24_west_queen_maud_land_7k |\n", "| 20-01 | Antarctic Mainland | 20-01_antarctic_mainland |\n" ] } ], "source": [ "print(rgi_reg.set_index('o2region')[['full_name', 'long_code']].to_markdown())" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.10.8" } }, "nbformat": 4, "nbformat_minor": 4 }