{ "cells": [ { "cell_type": "markdown", "metadata": { "editable": true, "slideshow": { "slide_type": "" }, "tags": [] }, "source": [ "## Using GeoJSON and GeoPandas data" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import geopandas as gpd\n", "\n", "import earthkit.data as ekd" ] }, { "cell_type": "raw", "metadata": { "editable": true, "raw_mimetype": "text/restructuredtext", "slideshow": { "slide_type": "" }, "tags": [] }, "source": [ "Load a **GeoJSON** object as a \"file\" source using :ref:`from_source() `. Default representation is a GeoPandas dataframe" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "editable": true, "slideshow": { "slide_type": "" }, "tags": [] }, "outputs": [ { "data": { "text/html": [ "

GeojsonReader(represented as a geopandas object):

\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
idNUTS_IDLEVL_CODECNTR_CODENAME_LATNNUTS_NAMEMOUNT_TYPEURBN_TYPECOAST_TYPEFIDgeometry
0FRFR0FRFranceFrance0.000FRMULTIPOLYGON (((9954236.116 -3059379.316, 9961...
1HRHR0HRHrvatskaHrvatska0.000HRMULTIPOLYGON (((4827385.889 2618351.326, 48483...
2HUHU0HUMagyarországMagyarország0.000HUPOLYGON ((5214660.069 2880853.832, 5216710.220...
3ALAL0ALShqipëriaShqipëria0.000ALPOLYGON ((5129579.170 2204098.752, 5148385.473...
4ATAT0ATÖsterreichÖsterreich0.000ATPOLYGON ((4742889.368 2876362.725, 4783217.798...
....................................
2005TRC21TRC213TRŞanlıurfaŞanlıurfa4.023TRC21POLYGON ((6904684.585 2120354.802, 6938677.828...
2006TRC22TRC223TRDiyarbakırDiyarbakır4.023TRC22POLYGON ((6989716.599 2273670.524, 6982786.486...
2007NO0B2NO0B23NOSvalbardSvalbard3.031NO0B2MULTIPOLYGON (((4754167.335 6382461.409, 47465...
2008NO0BNO0B2NOJan Mayen and SvalbardJan Mayen and SvalbardNaN00NO0BMULTIPOLYGON (((4754167.335 6382461.409, 47465...
2009NO0B1NO0B13NOJan MayenJan Mayen3.031NO0B1POLYGON ((3642785.362 5404637.884, 3624291.510...
\n", "

2010 rows × 11 columns

\n", "
" ], "text/plain": [ "GeojsonReader(NUTS_RG_20M_2021_3035.geojson)" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Test the geojson reader\n", "ekd.download_example_file(\"NUTS_RG_20M_2021_3035.geojson\")\n", "geojson_source = ekd.from_source(\"file\", \"NUTS_RG_20M_2021_3035.geojson\")\n", "geojson_source" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Iterating over geojson/geopandas objects iterates over rows (feature) instead of the pandas default (columns).\n", "This is more useful for geopandas." ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "id FR\n", "NUTS_ID FR\n", "LEVL_CODE 0\n", "CNTR_CODE FR\n", "NAME_LATN France\n", "NUTS_NAME France\n", "MOUNT_TYPE 0.0\n", "URBN_TYPE 0\n", "COAST_TYPE 0\n", "FID FR\n", "geometry MULTIPOLYGON (((9954236.1162 -3059379.3164, 99...\n", "Name: 0, dtype: object\n", "id HR\n", "NUTS_ID HR\n", "LEVL_CODE 0\n", "CNTR_CODE HR\n", "NAME_LATN Hrvatska\n", "NUTS_NAME Hrvatska\n", "MOUNT_TYPE 0.0\n", "URBN_TYPE 0\n", "COAST_TYPE 0\n", "FID HR\n", "geometry MULTIPOLYGON (((4827385.8894 2618351.326199999...\n", "Name: 1, dtype: object\n" ] } ], "source": [ "for thing in geojson_source[:2]:\n", " print(thing)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "It is also possible to create an earthkit-data object from an already instantiated geopandas dataframe" ] }, { "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", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
idNUTS_IDLEVL_CODECNTR_CODENAME_LATNNUTS_NAMEMOUNT_TYPEURBN_TYPECOAST_TYPEFIDgeometry
0FRFR0FRFranceFrance0.000FRMULTIPOLYGON (((9954236.116 -3059379.316, 9961...
1HRHR0HRHrvatskaHrvatska0.000HRMULTIPOLYGON (((4827385.889 2618351.326, 48483...
2HUHU0HUMagyarországMagyarország0.000HUPOLYGON ((5214660.069 2880853.832, 5216710.220...
3ALAL0ALShqipëriaShqipëria0.000ALPOLYGON ((5129579.170 2204098.752, 5148385.473...
4ATAT0ATÖsterreichÖsterreich0.000ATPOLYGON ((4742889.368 2876362.725, 4783217.798...
....................................
2005TRC21TRC213TRŞanlıurfaŞanlıurfa4.023TRC21POLYGON ((6904684.585 2120354.802, 6938677.828...
2006TRC22TRC223TRDiyarbakırDiyarbakır4.023TRC22POLYGON ((6989716.599 2273670.524, 6982786.486...
2007NO0B2NO0B23NOSvalbardSvalbard3.031NO0B2MULTIPOLYGON (((4754167.335 6382461.409, 47465...
2008NO0BNO0B2NOJan Mayen and SvalbardJan Mayen and SvalbardNaN00NO0BMULTIPOLYGON (((4754167.335 6382461.409, 47465...
2009NO0B1NO0B13NOJan MayenJan Mayen3.031NO0B1POLYGON ((3642785.362 5404637.884, 3624291.510...
\n", "

2010 rows × 11 columns

\n", "
" ], "text/plain": [ " id NUTS_ID LEVL_CODE CNTR_CODE NAME_LATN \\\n", "0 FR FR 0 FR France \n", "1 HR HR 0 HR Hrvatska \n", "2 HU HU 0 HU Magyarország \n", "3 AL AL 0 AL Shqipëria \n", "4 AT AT 0 AT Österreich \n", "... ... ... ... ... ... \n", "2005 TRC21 TRC21 3 TR Şanlıurfa \n", "2006 TRC22 TRC22 3 TR Diyarbakır \n", "2007 NO0B2 NO0B2 3 NO Svalbard \n", "2008 NO0B NO0B 2 NO Jan Mayen and Svalbard \n", "2009 NO0B1 NO0B1 3 NO Jan Mayen \n", "\n", " NUTS_NAME MOUNT_TYPE URBN_TYPE COAST_TYPE FID \\\n", "0 France 0.0 0 0 FR \n", "1 Hrvatska 0.0 0 0 HR \n", "2 Magyarország 0.0 0 0 HU \n", "3 Shqipëria 0.0 0 0 AL \n", "4 Österreich 0.0 0 0 AT \n", "... ... ... ... ... ... \n", "2005 Şanlıurfa 4.0 2 3 TRC21 \n", "2006 Diyarbakır 4.0 2 3 TRC22 \n", "2007 Svalbard 3.0 3 1 NO0B2 \n", "2008 Jan Mayen and Svalbard NaN 0 0 NO0B \n", "2009 Jan Mayen 3.0 3 1 NO0B1 \n", "\n", " geometry \n", "0 MULTIPOLYGON (((9954236.116 -3059379.316, 9961... \n", "1 MULTIPOLYGON (((4827385.889 2618351.326, 48483... \n", "2 POLYGON ((5214660.069 2880853.832, 5216710.220... \n", "3 POLYGON ((5129579.170 2204098.752, 5148385.473... \n", "4 POLYGON ((4742889.368 2876362.725, 4783217.798... \n", "... ... \n", "2005 POLYGON ((6904684.585 2120354.802, 6938677.828... \n", "2006 POLYGON ((6989716.599 2273670.524, 6982786.486... \n", "2007 MULTIPOLYGON (((4754167.335 6382461.409, 47465... \n", "2008 MULTIPOLYGON (((4754167.335 6382461.409, 47465... \n", "2009 POLYGON ((3642785.362 5404637.884, 3624291.510... \n", "\n", "[2010 rows x 11 columns]" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "gpd_df = gpd.read_file(geojson_source.path)\n", "ek_gpd_df = ekd.from_object(gpd_df)\n", "ek_gpd_df.describe()" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Number of polygons in geopandas: 2010\n", "Iterate of polygons:\n", "id FR\n", "NUTS_ID FR\n", "LEVL_CODE 0\n", "CNTR_CODE FR\n", "NAME_LATN France\n", "NUTS_NAME France\n", "MOUNT_TYPE 0.0\n", "URBN_TYPE 0\n", "COAST_TYPE 0\n", "FID FR\n", "geometry MULTIPOLYGON (((9954236.1162 -3059379.3164, 99...\n", "Name: 0, dtype: object\n", "id HR\n", "NUTS_ID HR\n", "LEVL_CODE 0\n", "CNTR_CODE HR\n", "NAME_LATN Hrvatska\n", "NUTS_NAME Hrvatska\n", "MOUNT_TYPE 0.0\n", "URBN_TYPE 0\n", "COAST_TYPE 0\n", "FID HR\n", "geometry MULTIPOLYGON (((4827385.8894 2618351.326199999...\n", "Name: 1, dtype: object\n" ] } ], "source": [ "print(f\"Number of polygons in geopandas: {len(ek_gpd_df)}\")\n", "\n", "print(\"Iterate of polygons:\")\n", "for thing in ek_gpd_df[:2]:\n", " print(thing)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "dev_ecc", "language": "python", "name": "dev_ecc" }, "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.13" } }, "nbformat": 4, "nbformat_minor": 4 }