{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## EASEPandas key features\n",
    "\n",
    "You can try out vgridpandas by using the cloud-computing platforms below without having to install anything on your computer:\n",
    "\n",
    "[![image](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/opengeoshub/vgridpandas/blob/main/docs/notebooks/09_ease.ipynb)\n",
    "[![image](https://mybinder.org/badge_logo.svg)](https://mybinder.org/v2/gh/opengeoshub/vgridpandas/HEAD?filepath=docs/notebooks/09_ease.ipynb)\n",
    "[![image](https://studiolab.sagemaker.aws/studiolab.svg)](https://studiolab.sagemaker.aws/import/github/opengeoshub/vgridpandas/blob/main/docs/notebooks/09_ease.ipynb)\n",
    "[![image](https://jupyterlite.rtfd.io/en/latest/_static/badge.svg)](https://jupyterlite.gishub.vn/lab/index.html?path=notebooks/vgridpandas/09_ease.ipynb)\n",
    "\n",
    "Full VgridPandas DGGS documentation is available at [vgridpandas document](https://vgridpandas.gishub.vn).\n",
    "\n",
    "To work with Vgrid in Python or CLI, use [vgrid](https://pypi.org/project/vgrid/) package. Full Vgrid DGGS documentation is available at [vgrid document](https://vgrid.gishub.vn).\n",
    "\n",
    "To work with Vgrid DGGS in QGIS, install the [Vgrid Plugin](https://plugins.qgis.org/plugins/vgridtools/).\n",
    "\n",
    "To visualize DGGS in Maplibre GL JS, try the [vgrid-maplibre](https://www.npmjs.com/package/vgrid-maplibre) library.\n",
    "\n",
    "For an interactive demo, visit the [Vgrid Homepage](https://vgrid.vn)."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Install vgridpandas\n",
    "Uncomment the following line to install [vgridpandas](https://pypi.org/project/vgridpandas/)."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "# %pip install vgridpandas"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "8e4ed5f8",
   "metadata": {},
   "source": [
    "### Import easepandas"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "acc5640f",
   "metadata": {},
   "outputs": [],
   "source": [
    "from vgridpandas import easepandas"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Latlon to EASE"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Pandas"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "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>lon</th>\n",
       "      <th>lat</th>\n",
       "      <th>housing_median_age</th>\n",
       "      <th>total_rooms</th>\n",
       "      <th>total_bedrooms</th>\n",
       "      <th>population</th>\n",
       "      <th>households</th>\n",
       "      <th>median_income</th>\n",
       "      <th>median_house_value</th>\n",
       "      <th>ocean_proximity</th>\n",
       "      <th>ease</th>\n",
       "      <th>ease_res</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>-122.23</td>\n",
       "      <td>37.88</td>\n",
       "      <td>41</td>\n",
       "      <td>880</td>\n",
       "      <td>129.0</td>\n",
       "      <td>322</td>\n",
       "      <td>126</td>\n",
       "      <td>8.3252</td>\n",
       "      <td>452600</td>\n",
       "      <td>NEAR BAY</td>\n",
       "      <td>L0.078154</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>-122.22</td>\n",
       "      <td>37.86</td>\n",
       "      <td>21</td>\n",
       "      <td>7099</td>\n",
       "      <td>1106.0</td>\n",
       "      <td>2401</td>\n",
       "      <td>1138</td>\n",
       "      <td>8.3014</td>\n",
       "      <td>358500</td>\n",
       "      <td>NEAR BAY</td>\n",
       "      <td>L0.078154</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>-122.24</td>\n",
       "      <td>37.85</td>\n",
       "      <td>52</td>\n",
       "      <td>1467</td>\n",
       "      <td>190.0</td>\n",
       "      <td>496</td>\n",
       "      <td>177</td>\n",
       "      <td>7.2574</td>\n",
       "      <td>352100</td>\n",
       "      <td>NEAR BAY</td>\n",
       "      <td>L0.078154</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>-122.25</td>\n",
       "      <td>37.85</td>\n",
       "      <td>52</td>\n",
       "      <td>1274</td>\n",
       "      <td>235.0</td>\n",
       "      <td>558</td>\n",
       "      <td>219</td>\n",
       "      <td>5.6431</td>\n",
       "      <td>341300</td>\n",
       "      <td>NEAR BAY</td>\n",
       "      <td>L0.078154</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>-122.25</td>\n",
       "      <td>37.85</td>\n",
       "      <td>52</td>\n",
       "      <td>1627</td>\n",
       "      <td>280.0</td>\n",
       "      <td>565</td>\n",
       "      <td>259</td>\n",
       "      <td>3.8462</td>\n",
       "      <td>342200</td>\n",
       "      <td>NEAR BAY</td>\n",
       "      <td>L0.078154</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>20635</th>\n",
       "      <td>-121.09</td>\n",
       "      <td>39.48</td>\n",
       "      <td>25</td>\n",
       "      <td>1665</td>\n",
       "      <td>374.0</td>\n",
       "      <td>845</td>\n",
       "      <td>330</td>\n",
       "      <td>1.5603</td>\n",
       "      <td>78100</td>\n",
       "      <td>INLAND</td>\n",
       "      <td>L0.073157</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>20636</th>\n",
       "      <td>-121.21</td>\n",
       "      <td>39.49</td>\n",
       "      <td>18</td>\n",
       "      <td>697</td>\n",
       "      <td>150.0</td>\n",
       "      <td>356</td>\n",
       "      <td>114</td>\n",
       "      <td>2.5568</td>\n",
       "      <td>77100</td>\n",
       "      <td>INLAND</td>\n",
       "      <td>L0.073157</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>20637</th>\n",
       "      <td>-121.22</td>\n",
       "      <td>39.43</td>\n",
       "      <td>17</td>\n",
       "      <td>2254</td>\n",
       "      <td>485.0</td>\n",
       "      <td>1007</td>\n",
       "      <td>433</td>\n",
       "      <td>1.7000</td>\n",
       "      <td>92300</td>\n",
       "      <td>INLAND</td>\n",
       "      <td>L0.073157</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>20638</th>\n",
       "      <td>-121.32</td>\n",
       "      <td>39.43</td>\n",
       "      <td>18</td>\n",
       "      <td>1860</td>\n",
       "      <td>409.0</td>\n",
       "      <td>741</td>\n",
       "      <td>349</td>\n",
       "      <td>1.8672</td>\n",
       "      <td>84700</td>\n",
       "      <td>INLAND</td>\n",
       "      <td>L0.073157</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>20639</th>\n",
       "      <td>-121.24</td>\n",
       "      <td>39.37</td>\n",
       "      <td>16</td>\n",
       "      <td>2785</td>\n",
       "      <td>616.0</td>\n",
       "      <td>1387</td>\n",
       "      <td>530</td>\n",
       "      <td>2.3886</td>\n",
       "      <td>89400</td>\n",
       "      <td>INLAND</td>\n",
       "      <td>L0.074157</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>20640 rows × 12 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "          lon    lat  housing_median_age  total_rooms  total_bedrooms  \\\n",
       "0     -122.23  37.88                  41          880           129.0   \n",
       "1     -122.22  37.86                  21         7099          1106.0   \n",
       "2     -122.24  37.85                  52         1467           190.0   \n",
       "3     -122.25  37.85                  52         1274           235.0   \n",
       "4     -122.25  37.85                  52         1627           280.0   \n",
       "...       ...    ...                 ...          ...             ...   \n",
       "20635 -121.09  39.48                  25         1665           374.0   \n",
       "20636 -121.21  39.49                  18          697           150.0   \n",
       "20637 -121.22  39.43                  17         2254           485.0   \n",
       "20638 -121.32  39.43                  18         1860           409.0   \n",
       "20639 -121.24  39.37                  16         2785           616.0   \n",
       "\n",
       "       population  households  median_income  median_house_value  \\\n",
       "0             322         126         8.3252              452600   \n",
       "1            2401        1138         8.3014              358500   \n",
       "2             496         177         7.2574              352100   \n",
       "3             558         219         5.6431              341300   \n",
       "4             565         259         3.8462              342200   \n",
       "...           ...         ...            ...                 ...   \n",
       "20635         845         330         1.5603               78100   \n",
       "20636         356         114         2.5568               77100   \n",
       "20637        1007         433         1.7000               92300   \n",
       "20638         741         349         1.8672               84700   \n",
       "20639        1387         530         2.3886               89400   \n",
       "\n",
       "      ocean_proximity       ease  ease_res  \n",
       "0            NEAR BAY  L0.078154         0  \n",
       "1            NEAR BAY  L0.078154         0  \n",
       "2            NEAR BAY  L0.078154         0  \n",
       "3            NEAR BAY  L0.078154         0  \n",
       "4            NEAR BAY  L0.078154         0  \n",
       "...               ...        ...       ...  \n",
       "20635          INLAND  L0.073157         0  \n",
       "20636          INLAND  L0.073157         0  \n",
       "20637          INLAND  L0.073157         0  \n",
       "20638          INLAND  L0.073157         0  \n",
       "20639          INLAND  L0.074157         0  \n",
       "\n",
       "[20640 rows x 12 columns]"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "import pandas as pd\n",
    "\n",
    "df = pd.read_csv('https://raw.githubusercontent.com/opengeoshub/vopendata/main/csv/housing.csv')\n",
    "resolution = 0\n",
    "df = df.ease.latlon2ease(resolution, lat_col='lat', lon_col='lon')\n",
    "df"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### GeoPandas"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "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>longitude</th>\n",
       "      <th>latitude</th>\n",
       "      <th>housing_median_age</th>\n",
       "      <th>total_rooms</th>\n",
       "      <th>total_bedrooms</th>\n",
       "      <th>population</th>\n",
       "      <th>households</th>\n",
       "      <th>median_income</th>\n",
       "      <th>median_house_value</th>\n",
       "      <th>ocean_proximity</th>\n",
       "      <th>geometry</th>\n",
       "      <th>ease</th>\n",
       "      <th>ease_res</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>-122.23</td>\n",
       "      <td>37.88</td>\n",
       "      <td>41.0</td>\n",
       "      <td>880.0</td>\n",
       "      <td>129.0</td>\n",
       "      <td>322.0</td>\n",
       "      <td>126.0</td>\n",
       "      <td>8.3252</td>\n",
       "      <td>452600.0</td>\n",
       "      <td>NEAR BAY</td>\n",
       "      <td>POINT (-122.23 37.88)</td>\n",
       "      <td>L0.078154</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>-122.22</td>\n",
       "      <td>37.86</td>\n",
       "      <td>21.0</td>\n",
       "      <td>7099.0</td>\n",
       "      <td>1106.0</td>\n",
       "      <td>2401.0</td>\n",
       "      <td>1138.0</td>\n",
       "      <td>8.3014</td>\n",
       "      <td>358500.0</td>\n",
       "      <td>NEAR BAY</td>\n",
       "      <td>POINT (-122.22 37.86)</td>\n",
       "      <td>L0.078154</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>-122.24</td>\n",
       "      <td>37.85</td>\n",
       "      <td>52.0</td>\n",
       "      <td>1467.0</td>\n",
       "      <td>190.0</td>\n",
       "      <td>496.0</td>\n",
       "      <td>177.0</td>\n",
       "      <td>7.2574</td>\n",
       "      <td>352100.0</td>\n",
       "      <td>NEAR BAY</td>\n",
       "      <td>POINT (-122.24 37.85)</td>\n",
       "      <td>L0.078154</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>-122.25</td>\n",
       "      <td>37.85</td>\n",
       "      <td>52.0</td>\n",
       "      <td>1274.0</td>\n",
       "      <td>235.0</td>\n",
       "      <td>558.0</td>\n",
       "      <td>219.0</td>\n",
       "      <td>5.6431</td>\n",
       "      <td>341300.0</td>\n",
       "      <td>NEAR BAY</td>\n",
       "      <td>POINT (-122.25 37.85)</td>\n",
       "      <td>L0.078154</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>-122.25</td>\n",
       "      <td>37.85</td>\n",
       "      <td>52.0</td>\n",
       "      <td>1627.0</td>\n",
       "      <td>280.0</td>\n",
       "      <td>565.0</td>\n",
       "      <td>259.0</td>\n",
       "      <td>3.8462</td>\n",
       "      <td>342200.0</td>\n",
       "      <td>NEAR BAY</td>\n",
       "      <td>POINT (-122.25 37.85)</td>\n",
       "      <td>L0.078154</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>20635</th>\n",
       "      <td>-121.09</td>\n",
       "      <td>39.48</td>\n",
       "      <td>25.0</td>\n",
       "      <td>1665.0</td>\n",
       "      <td>374.0</td>\n",
       "      <td>845.0</td>\n",
       "      <td>330.0</td>\n",
       "      <td>1.5603</td>\n",
       "      <td>78100.0</td>\n",
       "      <td>INLAND</td>\n",
       "      <td>POINT (-121.09 39.48)</td>\n",
       "      <td>L0.073157</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>20636</th>\n",
       "      <td>-121.21</td>\n",
       "      <td>39.49</td>\n",
       "      <td>18.0</td>\n",
       "      <td>697.0</td>\n",
       "      <td>150.0</td>\n",
       "      <td>356.0</td>\n",
       "      <td>114.0</td>\n",
       "      <td>2.5568</td>\n",
       "      <td>77100.0</td>\n",
       "      <td>INLAND</td>\n",
       "      <td>POINT (-121.21 39.49)</td>\n",
       "      <td>L0.073157</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>20637</th>\n",
       "      <td>-121.22</td>\n",
       "      <td>39.43</td>\n",
       "      <td>17.0</td>\n",
       "      <td>2254.0</td>\n",
       "      <td>485.0</td>\n",
       "      <td>1007.0</td>\n",
       "      <td>433.0</td>\n",
       "      <td>1.7000</td>\n",
       "      <td>92300.0</td>\n",
       "      <td>INLAND</td>\n",
       "      <td>POINT (-121.22 39.43)</td>\n",
       "      <td>L0.073157</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>20638</th>\n",
       "      <td>-121.32</td>\n",
       "      <td>39.43</td>\n",
       "      <td>18.0</td>\n",
       "      <td>1860.0</td>\n",
       "      <td>409.0</td>\n",
       "      <td>741.0</td>\n",
       "      <td>349.0</td>\n",
       "      <td>1.8672</td>\n",
       "      <td>84700.0</td>\n",
       "      <td>INLAND</td>\n",
       "      <td>POINT (-121.32 39.43)</td>\n",
       "      <td>L0.073157</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>20639</th>\n",
       "      <td>-121.24</td>\n",
       "      <td>39.37</td>\n",
       "      <td>16.0</td>\n",
       "      <td>2785.0</td>\n",
       "      <td>616.0</td>\n",
       "      <td>1387.0</td>\n",
       "      <td>530.0</td>\n",
       "      <td>2.3886</td>\n",
       "      <td>89400.0</td>\n",
       "      <td>INLAND</td>\n",
       "      <td>POINT (-121.24 39.37)</td>\n",
       "      <td>L0.074157</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>20640 rows × 13 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "       longitude  latitude  housing_median_age  total_rooms  total_bedrooms  \\\n",
       "0        -122.23     37.88                41.0        880.0           129.0   \n",
       "1        -122.22     37.86                21.0       7099.0          1106.0   \n",
       "2        -122.24     37.85                52.0       1467.0           190.0   \n",
       "3        -122.25     37.85                52.0       1274.0           235.0   \n",
       "4        -122.25     37.85                52.0       1627.0           280.0   \n",
       "...          ...       ...                 ...          ...             ...   \n",
       "20635    -121.09     39.48                25.0       1665.0           374.0   \n",
       "20636    -121.21     39.49                18.0        697.0           150.0   \n",
       "20637    -121.22     39.43                17.0       2254.0           485.0   \n",
       "20638    -121.32     39.43                18.0       1860.0           409.0   \n",
       "20639    -121.24     39.37                16.0       2785.0           616.0   \n",
       "\n",
       "       population  households  median_income  median_house_value  \\\n",
       "0           322.0       126.0         8.3252            452600.0   \n",
       "1          2401.0      1138.0         8.3014            358500.0   \n",
       "2           496.0       177.0         7.2574            352100.0   \n",
       "3           558.0       219.0         5.6431            341300.0   \n",
       "4           565.0       259.0         3.8462            342200.0   \n",
       "...           ...         ...            ...                 ...   \n",
       "20635       845.0       330.0         1.5603             78100.0   \n",
       "20636       356.0       114.0         2.5568             77100.0   \n",
       "20637      1007.0       433.0         1.7000             92300.0   \n",
       "20638       741.0       349.0         1.8672             84700.0   \n",
       "20639      1387.0       530.0         2.3886             89400.0   \n",
       "\n",
       "      ocean_proximity               geometry       ease  ease_res  \n",
       "0            NEAR BAY  POINT (-122.23 37.88)  L0.078154         0  \n",
       "1            NEAR BAY  POINT (-122.22 37.86)  L0.078154         0  \n",
       "2            NEAR BAY  POINT (-122.24 37.85)  L0.078154         0  \n",
       "3            NEAR BAY  POINT (-122.25 37.85)  L0.078154         0  \n",
       "4            NEAR BAY  POINT (-122.25 37.85)  L0.078154         0  \n",
       "...               ...                    ...        ...       ...  \n",
       "20635          INLAND  POINT (-121.09 39.48)  L0.073157         0  \n",
       "20636          INLAND  POINT (-121.21 39.49)  L0.073157         0  \n",
       "20637          INLAND  POINT (-121.22 39.43)  L0.073157         0  \n",
       "20638          INLAND  POINT (-121.32 39.43)  L0.073157         0  \n",
       "20639          INLAND  POINT (-121.24 39.37)  L0.074157         0  \n",
       "\n",
       "[20640 rows x 13 columns]"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "import geopandas as gpd\n",
    "\n",
    "df = gpd.read_file('https://raw.githubusercontent.com/opengeoshub/vopendata/main/shape/housing.geojson')\n",
    "resolution = 0\n",
    "df = df.ease.latlon2ease(resolution)\n",
    "df\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### EASE to geo"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<Axes: >"
      ]
     },
     "execution_count": 7,
     "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": [
    "df = df.ease.ease2geo(ease_col='ease')\n",
    "df.plot(edgecolor='white')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### (Multi)Polygon to EASE"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<Axes: >"
      ]
     },
     "execution_count": 11,
     "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": [
    "import geopandas as gpd\n",
    "\n",
    "gdf = gpd.read_file('https://raw.githubusercontent.com/opengeoshub/vopendata/main/shape/polygon2.geojson')\n",
    "resolution = 4\n",
    "gdf_polyfill = gdf.ease.polyfill(resolution, compact=True, predicate='intersect', explode=False)\n",
    "gdf_polyfill = gdf_polyfill.ease.ease2geo(ease_col='ease')\n",
    "gdf_polyfill.plot(edgecolor='white')\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### EASE binning"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Pandas"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<Axes: >"
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 640x480 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import pandas as pd\n",
    "\n",
    "resolution = 0\n",
    "df = pd.read_csv('https://raw.githubusercontent.com/opengeoshub/vopendata/main/csv/housing.csv')\n",
    "stats = 'max'\n",
    "numeric_col = 'median_house_value'\n",
    "df_bin = df.ease.easebin(resolution=resolution,\n",
    "                    lat_col='lat',\n",
    "                    lon_col='lon',\n",
    "                    stats=stats,\n",
    "                    numeric_col=numeric_col,\n",
    "                    # category_col='ocean_proximity',\n",
    "                    )\n",
    "df_bin.plot(\n",
    "    column=f'{numeric_col}_{stats}',\n",
    "    cmap='Spectral_r',\n",
    "    legend=True,\n",
    "    linewidth=0.2,\n",
    ")\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### GeoPandas"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<Axes: >"
      ]
     },
     "execution_count": 15,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 640x480 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import geopandas as gpd\n",
    "\n",
    "resolution = 0\n",
    "df = gpd.read_file('https://raw.githubusercontent.com/opengeoshub/vopendata/main/shape/housing.geojson')\n",
    "stats = 'max'\n",
    "numeric_col = 'median_house_value'\n",
    "df_bin = df.ease.easebin(resolution=resolution,\n",
    "                    stats=stats,\n",
    "                    numeric_col=numeric_col,\n",
    "                    # category_col='ocean_proximity',\n",
    "                    )\n",
    "df_bin.plot(\n",
    "    column=f'{numeric_col}_{stats}',\n",
    "    cmap='Spectral_r',\n",
    "    legend=True,\n",
    "    linewidth=0.2,\n",
    ")"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": ".venv",
   "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.13.11"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
