{ "cells": [ { "cell_type": "markdown", "id": "c2e14094-e62f-472a-a20a-cd766b3b9c3a", "metadata": { "editable": true, "slideshow": { "slide_type": "" }, "tags": [] }, "source": [ "## CoverageJSON: retrieving polygon coverages with Polytope" ] }, { "cell_type": "raw", "id": "2aae5565-3662-48f8-b327-0fe8ab7ddce9", "metadata": { "editable": true, "raw_mimetype": "text/restructuredtext", "slideshow": { "slide_type": "" }, "tags": [] }, "source": [ "The :ref:`polytope ` source provides access to the `Polytope web services `_." ] }, { "cell_type": "markdown", "id": "b0869b0d-84d0-4f15-96c8-50bca38bc591", "metadata": { "editable": true, "slideshow": { "slide_type": "" }, "tags": [] }, "source": [ "The following example retrieves data within the specified **polygon** using polytope." ] }, { "cell_type": "code", "execution_count": 1, "id": "4416eb82-744b-46f8-beaf-b2b0e080b6ff", "metadata": { "editable": true, "slideshow": { "slide_type": "" }, "tags": [] }, "outputs": [], "source": [ "import earthkit.data as ekd\n", "\n", "# lat, lon\n", "coords = [\n", " [41.870881288, -8.8791360],\n", " [41.694339317422646, -8.824238614026456],\n", " [40.171924585721314, -8.902386975546364],\n", " [38.75694209400925, -9.493088042617785],\n", " [38.42424252381525, -9.171674240710018],\n", " [38.49907333213173, -8.676525850529856],\n", " [37.057269459205145, -8.971873318897366],\n", " [37.162874354643776, -7.406745406502978],\n", " [38.19776118392036, -6.931663452624974],\n", " [38.4280922170291, -7.321584397020473],\n", " [39.011852875635526, -6.9787177479519755],\n", " [39.66227871551288, -7.5393956904523804],\n", " [39.66568774825791, -7.03915852435145],\n", " [40.0019453234905, -6.883203763416162],\n", " [40.20373392742229, -7.035724907677206],\n", " [40.350463990828985, -6.8135246275213035],\n", " [41.030499770212515, -6.905947651233703],\n", " [41.593647729084154, -6.22847017956974],\n", " [41.67712153119277, -6.544984134823352],\n", " [41.949682257268876, -6.567927092516641],\n", " [41.96960294343674, -7.1747800681640115],\n", " [41.88337981339092, -7.196871678410446],\n", " [41.81334515396762, -8.156666519264604],\n", " [42.14242723772878, -8.205142297350534],\n", " [41.870881288, -8.8791360],\n", "]\n", "\n", "request = {\n", " \"class\": \"od\",\n", " \"stream\" : \"enfo\",\n", " \"type\" : \"pf\",\n", " \"date\" : -1,\n", " \"time\" : \"1200\",\n", " \"levtype\" : \"sfc\",\n", " \"expver\" : 1,\n", " \"domain\" : \"g\",\n", " \"param\" : \"167/169\",\n", " \"number\" : \"1\",\n", " \"step\": \"0\",\n", " \"feature\": {\n", " \"type\": \"polygon\",\n", " \"shape\": coords,\n", " },\n", "}\n", "\n", "\n", "ds = ekd.from_source(\"polytope\", \"ecmwf-mars\", request=request, stream=False, address=\"polytope.ecmwf.int\")" ] }, { "cell_type": "raw", "id": "28ded555-0072-4271-ba6e-4c675e6c27e5", "metadata": { "editable": true, "raw_mimetype": "text/restructuredtext", "slideshow": { "slide_type": "" }, "tags": [] }, "source": [ "The data is retrieved as CoverageJSON, which we can convert to Xarray for further processing (the conversion uses the :xref:`covjsonkit` package under the hood)." ] }, { "cell_type": "code", "execution_count": 2, "id": "cef59cdb-a695-4393-8485-9354bac60cc7", "metadata": { "editable": true, "slideshow": { "slide_type": "" }, "tags": [] }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
<xarray.Dataset> Size: 53kB\n",
       "Dimensions:    (datetimes: 1, number: 1, steps: 1, points: 1093)\n",
       "Coordinates:\n",
       "  * datetimes  (datetimes) <U20 80B '2025-10-19T12:00:00Z'\n",
       "  * number     (number) int64 8B 1\n",
       "  * steps      (steps) int64 8B 0\n",
       "  * points     (points) int64 9kB 0 1 2 3 4 5 ... 1087 1088 1089 1090 1091 1092\n",
       "    latitude   (points) float64 9kB 37.08 37.08 37.08 37.15 ... 42.0 42.0 42.07\n",
       "    longitude  (points) float64 9kB 351.1 351.2 351.3 ... 351.6 351.7 351.7\n",
       "    levelist   (points) float64 9kB 0.0 0.0 0.0 0.0 0.0 ... 0.0 0.0 0.0 0.0 0.0\n",
       "Data variables:\n",
       "    2t         (datetimes, number, steps, points) float64 9kB 296.3 ... 288.5\n",
       "    ssrd       (datetimes, number, steps, points) float64 9kB 0.0 0.0 ... 0.0\n",
       "Attributes:\n",
       "    class:          od\n",
       "    Forecast date:  2025-10-19T12:00:00Z\n",
       "    domain:         g\n",
       "    expver:         0001\n",
       "    levtype:        sfc\n",
       "    number:         1\n",
       "    step:           0\n",
       "    stream:         enfo\n",
       "    type:           pf\n",
       "    date:           2025-10-19T12:00:00Z
" ], "text/plain": [ " Size: 53kB\n", "Dimensions: (datetimes: 1, number: 1, steps: 1, points: 1093)\n", "Coordinates:\n", " * datetimes (datetimes)