diff --git a/Test_Mangroves.ipynb b/Test_Mangroves.ipynb index 01366fa..41c0f3c 100644 --- a/Test_Mangroves.ipynb +++ b/Test_Mangroves.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "code", - "execution_count": 31, + "execution_count": 8, "metadata": {}, "outputs": [], "source": [ @@ -12,12 +12,12 @@ "from dep_tools.writers import LocalDsWriter\n", "from pystac import Item\n", "\n", - "from src.run_task import MangrovesProcessor" + "from src.run_task import MangrovesProcessor, get_areas" ] }, { "cell_type": "code", - "execution_count": 19, + "execution_count": 3, "metadata": {}, "outputs": [], "source": [ @@ -27,9 +27,20 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 4, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "'http://127.0.0.1:8787/status'" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "# Optionally set up a local dask cluster\n", "client = start_local_dask()\n", @@ -38,38 +49,854 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 14, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/html": [ + "
Make this Notebook Trusted to load map: File -> Trust Notebook
" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ - "from src.grid import grid\n", - "\n", "# Study site configuration\n", - "region_code = \"FJ\"\n", - "region_index = \"006\"\n", + "region_code = \"PG\"\n", + "region_index = \"051\"\n", "datetime = \"2023\"\n", - "dep_path = DepItemPath(\"s2\", \"mangroves\", \"0.0.0\", datetime)\n", + "dep_path = DepItemPath(\"s2\", \"mangroves\", \"0.0.0\", datetime, local_folder=\"data\")\n", "item_id = f\"{region_code}_{region_index}\"\n", "\n", - "areas = grid[grid.index == (region_code, region_index)]\n", - "\n", "# Set up a data loader\n", "loader = Sentinel2OdcLoader(\n", " epsg=3832,\n", " datetime=datetime,\n", " dask_chunksize=dict(band=1, time=1, x=4096, y=4096),\n", - " odc_load_kwargs=dict(fail_on_error=False, resolution=10, bands=[\"B04\", \"B08\"]),\n", + " odc_load_kwargs=dict(fail_on_error=False, resolution=10, bands=[\"SCL\", \"B04\", \"B08\"]),\n", ")\n", "\n", "# And a data processor\n", - "processor = MangrovesProcessor()" + "processor = MangrovesProcessor()\n", + "\n", + "# And get the study site\n", + "areas = get_areas(region_code, region_index)\n", + "areas.explore()" ] }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 15, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
<xarray.DataArray 'data' (band: 3, time: 106, y: 10591, x: 9759)>\n",
+       "dask.array<where, shape=(3, 106, 10591, 9759), dtype=float32, chunksize=(1, 1, 4096, 4096), chunktype=numpy.ndarray>\n",
+       "Coordinates:\n",
+       "  * y            (y) float64 -9.752e+05 -9.753e+05 ... -1.081e+06 -1.081e+06\n",
+       "  * x            (x) float64 -3.794e+05 -3.794e+05 ... -2.818e+05 -2.818e+05\n",
+       "  * time         (time) datetime64[ns] 2023-01-01T00:37:09.024000 ... 2023-09...\n",
+       "  * band         (band) object 'SCL' 'B04' 'B08'\n",
+       "    spatial_ref  int64 0\n",
+       "Attributes:\n",
+       "    _FillValue:  nan
" + ], + "text/plain": [ + "\n", + "dask.array\n", + "Coordinates:\n", + " * y (y) float64 -9.752e+05 -9.753e+05 ... -1.081e+06 -1.081e+06\n", + " * x (x) float64 -3.794e+05 -3.794e+05 ... -2.818e+05 -2.818e+05\n", + " * time (time) datetime64[ns] 2023-01-01T00:37:09.024000 ... 2023-09...\n", + " * band (band) object 'SCL' 'B04' 'B08'\n", + " spatial_ref int64 0\n", + "Attributes:\n", + " _FillValue: nan" + ] + }, + "execution_count": 15, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "# Run the load process, which uses Dask, so it's fast\n", "input_data = loader.load(areas)\n", @@ -78,7 +905,7 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 16, "metadata": {}, "outputs": [ { @@ -87,42 +914,459 @@ "text": [ "/opt/homebrew/lib/python3.11/site-packages/rasterio/warp.py:344: NotGeoreferencedWarning: Dataset has no geotransform, gcps, or rpcs. The identity matrix will be returned.\n", " _reproject(\n", - "/opt/homebrew/lib/python3.11/site-packages/rasterio/warp.py:344: NotGeoreferencedWarning: Dataset has no geotransform, gcps, or rpcs. The identity matrix will be returned.\n", - " _reproject(\n" + "/opt/homebrew/lib/python3.11/site-packages/xarray/core/duck_array_ops.py:188: RuntimeWarning: invalid value encountered in cast\n", + " return data.astype(dtype, **kwargs)\n" ] + }, + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
<xarray.Dataset>\n",
+       "Dimensions:      (y: 10591, x: 9759)\n",
+       "Coordinates:\n",
+       "  * y            (y) float64 -9.752e+05 -9.753e+05 ... -1.081e+06 -1.081e+06\n",
+       "  * x            (x) float64 -3.794e+05 -3.794e+05 ... -2.818e+05 -2.818e+05\n",
+       "    spatial_ref  int64 0\n",
+       "Data variables:\n",
+       "    ndvi         (y, x) float32 0.3867 0.3435 0.3344 ... 0.6296 0.6453 0.6631\n",
+       "    mangroves    (y, x) int16 0 0 0 0 0 0 0 0 0 ... -32767 -32767 1 1 1 1 1 1\n",
+       "Attributes:\n",
+       "    stac_properties:  {'start_datetime': '2023-01-01T00:00:00.000Z', 'datetim...
" + ], + "text/plain": [ + "\n", + "Dimensions: (y: 10591, x: 9759)\n", + "Coordinates:\n", + " * y (y) float64 -9.752e+05 -9.753e+05 ... -1.081e+06 -1.081e+06\n", + " * x (x) float64 -3.794e+05 -3.794e+05 ... -2.818e+05 -2.818e+05\n", + " spatial_ref int64 0\n", + "Data variables:\n", + " ndvi (y, x) float32 0.3867 0.3435 0.3344 ... 0.6296 0.6453 0.6631\n", + " mangroves (y, x) int16 0 0 0 0 0 0 0 0 0 ... -32767 -32767 1 1 1 1 1 1\n", + "Attributes:\n", + " stac_properties: {'start_datetime': '2023-01-01T00:00:00.000Z', 'datetim..." + ] + }, + "execution_count": 16, + "metadata": {}, + "output_type": "execute_result" } ], "source": [ - "# Load data into memory. This will take 5 minutes or so.\n", + "# Load data into memory. This will take 5-10 minutes or so.\n", "output_data = processor.process(input_data)\n", "output_data" ] }, { "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "code", - "execution_count": 4, + "execution_count": 26, "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "" + "" ] }, - "execution_count": 10, + "execution_count": 26, "metadata": {}, "output_type": "execute_result" }, { "data": { - "image/png": "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qVMAgOvXr+PJkyfo3LmzQht5eXnw8fF55bWaN2+u8PrcuXOIjo6GlZVVkbJJSUlMrohI75hcEZHOGRsbS/+WyWQKrwvPyeVyAEB2djYAYOfOnahVq5ZCOVNT01dey9LSUuF1dnY2evXqhcWLFxcpW7NmTdU6QESkBSZXRFSmPD09YWpqipSUFPj7+ystU3gHYEFBwSvba9asGX799Ve4urrCyIj/iSOi0scF7URUpqpUqYLp06dj6tSp2LhxI5KSknDmzBmEh4dj48aNAAAXFxfIZDL88ccfuH//vjTapcyECROQnp6OQYMG4a+//kJSUhL27NmDESNGqJScERFpi8kVEZW5BQsW4NNPP0VYWBgaNmyIbt26YefOnahTpw4AoFatWpg/fz6Cg4Nhb2+PwMDAYttydHTEsWPHUFBQgC5duqBJkyaYMmUKbG1tYWDA/+QRkf7JhBCirIMgooqpQ4cOaNq0KVauXFnWoWhEJpNhx44deOedd8o6FCJ6jfD/xhGRVr7++mtYWVnhwoULZR2KysaOHav0bkIiIl3gyBURaez27dvIyckBANSuXVulR8+UB2lpacjKygLw/A7Cl+84JCLSBpMrIiIiIh3itCARERGRDjG5IiIiItIhJldEREREOsTkioiIiEiHmFwRERER6RCTKyIiIiIdYnJFREREpENMroiIiIh06P8AwJ2UJfuVnv4AAAAASUVORK5CYII=", + "image/png": "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yck6654/fz5cXFzkl4+PTyF9CyKi0olDcVRUSnRQmj59OiRJyvN1/vz5Qvv8nJwcAMDMmTPx6quvolGjRlizZg0kScKGDRt0XjdjxgykpqbKr2vXrhVaG4mIiMh4JXqO0uTJkzF06NA8y/j7+xtVt5eXFwDg1q1bqFixonz81q1bCAoKAgD5uPKcJFtbW/j7+yMhIUFn3ba2trC1tTWqXURERFR0SnRQcnd3h7u7e6HU7efnBy8vL+zatUsORmlpaYiJiZGfnGvUqBFsbW0RFxeHli1bAgCePn2KK1euwNfXt1DaRUREREWnRA+9GSIhIQGxsbFISEhAdnY2YmNjERsbi/T0dLlM7dq1sWnTJgCAJEmYMGEC5syZg82bN+PUqVMYPHgwvL295XWSnJ2dMXLkSISFhWH79u2Ii4uTQ1Tfvn2L/DsSERGRaZXoHiVDzJo1C2vXrpXfBwcHAwD27NmDtm3bAgDi4uKQmpoql5k2bRoePnyIt956CykpKWjZsiUiIyNhZ2cnl/n0009hZWWFQYMG4fHjx2jSpAl2796N8uXLF80XIyIiokIjCSH46ICZpaWlwcXFBampqXB2djZ3c4iIqBgrit8ZNjY2OH/+KYyc5isLDwcSEoZj9erVpmmYGZSZoTciIip9uJ4SFTYGJSIiKpEUIYlhiQoTgxIREZVIyotOMixRYWFQIiKiEksRlhiaqLAwKBERUYmmvp2JSmgKZWiigmFQIiKiUkuxiS6RsRiUiIio1NI2DMdeJjIEgxIREZUtlc3dACpJGJSIiKjU0jbJW31OE1FeGJSIiKhMYEAiYzAoEREREenAoERERESkA4MSERERkQ4MSkREREQ6MCgRERER6cCgRERERKSDlbkbQEREVBTUV+nmcgGkD/YoERFRmaAejLRtb0KkjkGJiIjKDBEm5MDEHiXSB4MSERGVOSJMsEeJ9MKgREREZRJ7lEgfDEpEREREOjAoEREREenAoERERESkA4MSERERkQ4MSkREREQ6MCgRERER6cCgRERERKQDgxIRERGRDgxKRERERDowKBERERHpwKBEREREpAODEhEREZEODEpEREREOjAoEREREenAoERERESkA4MSERERkQ4MSkREREQ6MCgRERER6cCgRERERKQDgxIRERGRDgxKRERERDowKBERERHpwKBEREREpAODEhER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BiUiIiIiHRiUqESztbVFWFgYl1soAN5D0+B9LDjeQyqOOJmbiIiISAf2KBERERHpwKBEREREpAODEhEREZEODEpEREREOjAoUZHr0aMHqlSpAjs7O1SsWBGDBg3CzZs3VcoIIbBw4ULUrFkTtra2qFSpEubOnatSZu/evWjYsCFsbW1RvXp1REREaHzWl19+iapVq8LOzg5NmjTBoUOHVM4/efIEY8aMwQsvvAAnJye8+uqruHXrlkqZhIQEvPLKK3BwcICHhwemTp2KrKws09yMAtDnPipcunQJ5cqVg6urq8a5DRs2oHbt2rCzs0P9+vWxdetWlfNCCMyaNQsVK1aEvb09QkJCcPHiRZUyycnJGDhwIJydneHq6ooRI0YgPT1dpczJkyfRqlUr2NnZwcfHBwsWLCjYDTCB/O7h3r170bNnT1SsWBGOjo4ICgrCDz/8oFEP72He/x3q0+6yfA+pmDPb5ilUZi1evFhER0eLK1euiKioKNGsWTPRrFkzlTLjxo0TtWrVEn/88Yf477//xJEjR8T27dvl8//9959wcHAQkyZNEmfPnhVLly4VlpaWIjIyUi7z888/CxsbG/Htt9+KM2fOiNDQUOHq6ipu3bollxk5cqTw8fERu3btEkeOHBFNmzYVzZs3l89nZWWJevXqiZCQEHH8+HGxdetWUaFCBTFjxoxCvEP60ec+CiFEZmamaNy4sejSpYtwcXFRORcVFSUsLS3FggULxNmzZ8X7778vrK2txalTp+QyH3/8sXBxcRG///67OHHihOjRo4fw8/MTjx8/lst07txZBAYGin///Vfs379fVK9eXQwYMEA+n5qaKjw9PcXAgQPF6dOnxU8//STs7e3FypUrTX9jDJDfPZw7d654//33RVRUlLh06ZL4/PPPhYWFhfjzzz/lMryHed9Dfdpd1u8hFW8MSmR2f/zxh5AkSWRmZgohhDh79qywsrIS58+f13nNtGnTRN26dVWOvf7666JTp07y+5deekmMGTNGfp+dnS28vb3F/PnzhRBCpKSkCGtra7Fhwwa5zLlz5wQAER0dLYQQYuvWrcLCwkIkJSXJZZYvXy6cnZ1FRkZGAb616anfR4Vp06aJN998U6xZs0YjKPXr10+88sorKseaNGki3n77bSFE7sbQXl5e4tNPP5XPp6SkCFtbW/HTTz8JIXL/vgCI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R0VFoVy5cqhcubJG+YCAANja2iIhIUHjOyo+p0GDBti/fz+ePn2q9TO13buCtouIDMOgRFQAM2fORGpqKpYsWYJ3330XNWvWxPDhw3WWHzBgALy8vNCrVy9ERUXhv//+w8aNGxEdHQ0AmDp1KiIiIrB8+XJcvHgRixcvxm+//YYpU6YAAEJCQlC/fn0MHDgQx44dw6FDhzB48GC0adMGjRs31vm5ISEhqFmzJoYMGYITJ05g//79mDlzZoG/f40aNfDbb78hNjYWJ06cwBtvvKHRS1G1alX8888/uHHjBu7evQsAePfdd3Hw4EGMHTsWsbGxuHjxIv744w+MHTtW52fld28MkZmZiREjRuDs2bPYunUrwsLCMHbsWFhY6P4ncfTo0bh27RrGjRuH8+fP448//kBYWBgmTZqk9bpy5cphypQpmDhxItauXYv4+HgcO3YMS5cuxdq1awEAY8eORVpaGvr3748jR47g4sWL+O677+QnC6tWrYqTJ08iLi4Od+/e1RqoDG0XERnI3JOkiEqqPXv2CCsrK7F//3752OXLl4Wzs7P46quvdF535coV8eqrrwpnZ2fh4OAgGjduLGJiYuTzX331lfD39xfW1taiZs2aYt26dSrXX716VfTo0UM4OjqKcuXKib59+4qkpCT5fFhYmAgMDNT43Li4ONGyZUthY2MjatasKSIjI/WazH3//n25juPHjwsA4vLly/I17dq1E/b29sLHx0csW7ZMtGnTRrzzzjvyNdHR0aJBgwbC1tZWKP+Tc+jQIdGhQwfh5OQkHB0dRYMGDcTcuXN13jd97o2+k7l79uwpZs2aJV544QXh5OQkQkNDVSbhq38Hhb1794oXX3xR2NjYCC8vL/Huu++Kp0+fatStkJOTIz7//HNRq1YtYW1tLdzd3UWnTp3Evn375DInTpwQHTt2FA4ODqJcuXKiVatWIj4+XgiR+ySf4h4BEHv27NH4e9KnXdq+jz73ioiEkIQw4TKyRETFnLbVrk1lwIABsLS0xPfff2/yuonIPNgvS0RUQFlZWTh79iyio6NRt25dczeHiEyIQYmIqIBOnz6Nxo0bo27duhg5cqS5m0NEJsShNyIiIiId2KNEREREpAODEhEREZEODEpEZJS2bdvKu9or72Rf3A0dOlRud2E8+UZEpQuDEhEZLTQ0FImJiahXr16hfcbevXshSRJSUlJMUt8XX3yhskI5EVFeuNcbERnNwcEBXl5e5m4GgNzVtnVtf6LMxcUFLi4uRdAiIioN2KNERCah6PnZtm0bgoODYW9vj5dffhm3b9/G33//jTp16sDZ2RlvvPEGHj16JF+Xk5OD+fPnw8/PD/b29ggMDMSvv/4KALhy5QratWsHAChfvjwkScLQoUMB5A79jR07FhMmTECFChXQqVMnALmP6nfp0gVOTk7w9PTEoEGD5K1TiIgMxaBERCY1e/ZsLFu2DAcPHsS1a9fQr18/fP755/jxxx/x119/Yfv27Vi6dKlcfv78+Vi3bh1WrFiBM2fOYOLEiXjzzTexb98++Pj4YOPGjQCAuLg4JCYm4osvvpCvXbt2LWxsbBAVFYUVK1YgJSUFL7/8MoKDg3HkyBFERkbi1q1b6NevX5HfByIqHTj0RkQmNWfOHLRo0QIAMGLECMyYMQPx8fHw9/cHALz22mvYs2cP3n33XWRkZGDevHnYuXMnmjVrBgDw9/fHgQMHsHLlSrRp0wZubm4AAA8PD7i6uqp8Vo0aNbBgwQKVzw4ODsa8efPkY99++y18fHxw4cIF1KxZszC/OhGVQgxKRGRSDRo0kH/29PSEg4ODHJIUxw4dOgQAuHTpEh49eoQOHTqo1JGZmYng4OB8P6tRo0Yq70+cOIE9e/bAyclJo2x8fDyDEhEZjEGJiEzK2tpa/lmSJJX3imM5OTkAgPT0dADAX3/9hUqVKqmUs7W1zfezHB0dVd6np6eje/fu+OSTTzTKVqxYUb8vQESkhEGJiMwmICAAtra2SEhIQJs2bbSWUTzJlp2dnW99DRs2xMaNG1G1alVYWfGfNyIqOE7mJiKzKVeuHKZMmYKJEydi7dq1iI+Px7Fjx7B06VKsXbsWAODr6wtJkrBlyxbcuXNH7oXSZsyYMUhOTsaAAQNw+PBhxMfHY9u2bRg2bJheQYuISB2DEhGZ1UcffYQPPvgA8+fPR506ddC5c2f89ddf8PPzAwBUqlQJ4eHhmD59Ojw9PTF27FiddXl7eyMqKgrZ2dno2LEj6tevjwkTJsDV1RUWFvznjogMJwkhhLkbQUQlT9u2bREUFITPP//c3E0xiiRJ2LRpE3r16mXuphBRMcb/xSIio3311VdwcnLCqVOnzN0UvY0cOVLrU3FERNqwR4mIjHLjxg08fvwYAFClShW9tg8pDm7fvo20tDQAuU/CqT85R0SkjEGJiIiISAcOvRERERHpwKBEREREpAODEhEREZEODEpEREREOjAoEREREenAoERERESkA4MSERERkQ4MSkREREQ6/B9s6T18WKappQAAAABJRU5ErkJggg==", "text/plain": [ "
" ] @@ -132,278 +1376,47 @@ } ], "source": [ - "# Plot some data...\n", - "output_data.mangroves.plot()" + "# Plot data. Yellow is not-mangrove, green is open and dark green is closed \n", + "output_data.mangroves.plot.imshow(levels=[0, 1, 2, 3], colors=[\"white\", \"yellow\", \"green\", \"darkgreen\"])" ] }, { "cell_type": "code", - "execution_count": 37, + "execution_count": 32, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "data/dep_s2_mangroves_PG_051_2023_ndvi.tif\n" + ] + } + ], "source": [ + "from dep_tools.namers import LocalPath\n", + "\n", "# Write out files\n", + "dep_path = LocalPath(local_folder=\"data\", sensor=\"s2\", dataset_id=\"mangroves\", version=\"0.0.0\", time=datetime)\n", + "# dep_path._folder_prefix = \"data\"\n", + "\n", "writer = LocalDsWriter(itempath=dep_path)\n", "out_files = writer.write(output_data, item_id)" ] }, { "cell_type": "code", - "execution_count": 33, + "execution_count": 34, "metadata": {}, "outputs": [ { "data": { - "text/html": [ - "\n", - "\n", - "
\n", - "
\n", - "
\n", - "
\n", - "
\n", - " \n", - "

Item: dep_s2_mangroves_FJ_006_2023

\n", - "
\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
id: dep_s2_mangroves_FJ_006_2023
bbox: [-179.6644318444542, -16.849635367045863, 179.98998626574502, -16.132186457156692]
start_datetime: 2023-01-01T00:00:00.000
datetime: 2023-01-01T00:00:00Z
end_datetime: 2023-12-31T23:59:59
created: 2023-09-12T09:05:23.624059
proj:epsg: 3832
proj:geometry: {'type': 'Polygon', 'coordinates': [[[3338470.0, -1890950.0], [3376940.0, -1890950.0], [3376940.0, -1808170.0], [3338470.0, -1808170.0], [3338470.0, -1890950.0]]]}
proj:bbox: [3338470.0, -1890950.0, 3376940.0, -1808170.0]
proj:shape: [8278, 3847]
proj:transform: [10.0, 0.0, 3338470.0, 0.0, -10.0, -1808170.0, 0.0, 0.0, 1.0]
proj:projjson: {'$schema': 'https://proj.org/schemas/v0.4/projjson.schema.json', 'type': 'ProjectedCRS', 'name': 'WGS 84 / PDC Mercator', 'base_crs': {'name': 'WGS 84', 'datum': {'type': 'GeodeticReferenceFrame', 'name': 'World Geodetic System 1984', 'ellipsoid': {'name': 'WGS 84', 'semi_major_axis': 6378137, 'inverse_flattening': 298.257223563}}, 'coordinate_system': {'subtype': 'ellipsoidal', 'axis': [{'name': 'Geodetic latitude', 'abbreviation': 'Lat', 'direction': 'north', 'unit': 'degree'}, {'name': 'Geodetic longitude', 'abbreviation': 'Lon', 'direction': 'east', 'unit': 'degree'}]}, 'id': {'authority': 'EPSG', 'code': 4326}}, 'conversion': {'name': 'unnamed', 'method': {'name': 'Mercator (variant A)', 'id': {'authority': 'EPSG', 'code': 9804}}, 'parameters': [{'name': 'Latitude of natural origin', 'value': 0, 'unit': 'degree', 'id': {'authority': 'EPSG', 'code': 8801}}, {'name': 'Longitude of natural origin', 'value': 150, 'unit': 'degree', 'id': {'authority': 'EPSG', 'code': 8802}}, {'name': 'Scale factor at natural origin', 'value': 1, 'unit': 'unity', 'id': {'authority': 'EPSG', 'code': 8805}}, {'name': 'False easting', 'value': 0, 'unit': 'metre', 'id': {'authority': 'EPSG', 'code': 8806}}, {'name': 'False northing', 'value': 0, 'unit': 'metre', 'id': {'authority': 'EPSG', 'code': 8807}}]}, 'coordinate_system': {'subtype': 'Cartesian', 'axis': [{'name': 'Easting', 'abbreviation': '', 'direction': 'east', 'unit': 'metre'}, {'name': 'Northing', 'abbreviation': '', 'direction': 'north', 'unit': 'metre'}]}, 'id': {'authority': 'EPSG', 'code': 3832}}
\n", - " \n", - "
\n", - " \n", - "

STAC Extensions

\n", - "
\n", - " \n", - " \n", - " \n", - " \n", - "
https://stac-extensions.github.io/projection/v1.1.0/schema.json
\n", - "
\n", - " \n", - " \n", - "
\n", - " \n", - "

Assets

\n", - "
\n", - " \n", - " \n", - "\n", - "
\n", - "
\n", - "
\n", - "
\n", - "
\n", - " \n", - "

Asset:

\n", - "
\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
href: https:/deppcpublicstorage.blob.core.windows.net/output/dep_s2_mangroves/0-0-0/FJ_006/2023/dep_s2_mangroves_FJ_006_2023_ndvi.tif
type: image/tiff; application=geotiff; profile=cloud-optimized
roles: ['data']
owner: dep_s2_mangroves_FJ_006_2023
\n", - "
\n", - "
\n", - "
\n", - " \n", - " \n", - "\n", - "
\n", - "
\n", - "
\n", - "
\n", - "
\n", - " \n", - "

Asset:

\n", - "
\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
href: https:/deppcpublicstorage.blob.core.windows.net/output/dep_s2_mangroves/0-0-0/FJ_006/2023/dep_s2_mangroves_FJ_006_2023_mangroves.tif
type: image/tiff; application=geotiff; profile=cloud-optimized
roles: ['data']
owner: dep_s2_mangroves_FJ_006_2023
\n", - "
\n", - "
\n", - "
\n", - " \n", - " \n", - "\n", - "
\n", - "
\n", - "
\n", - "
\n", - "
\n", - " \n", - "

Asset:

\n", - "
\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
href: https:/deppcpublicstorage.blob.core.windows.net/output/dep_s2_mangroves/0-0-0/FJ_006/2023/dep_s2_mangroves_FJ_006_2023_regular.tif
type: image/tiff; application=geotiff; profile=cloud-optimized
roles: ['data']
owner: dep_s2_mangroves_FJ_006_2023
\n", - "
\n", - "
\n", - "
\n", - " \n", - " \n", - "\n", - "
\n", - "
\n", - "
\n", - "
\n", - "
\n", - " \n", - "

Asset:

\n", - "
\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
href: https:/deppcpublicstorage.blob.core.windows.net/output/dep_s2_mangroves/0-0-0/FJ_006/2023/dep_s2_mangroves_FJ_006_2023_closed.tif
type: image/tiff; application=geotiff; profile=cloud-optimized
roles: ['data']
owner: dep_s2_mangroves_FJ_006_2023
\n", - "
\n", - "
\n", - "
\n", - " \n", - "
\n", - " \n", - " \n", - "
\n", - " \n", - "

Links

\n", - "
\n", - " \n", - " \n", - "\n", - "
\n", - "
\n", - "
\n", - "
\n", - "

Link:

\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
rel: self
href: /Users/alex/git/digitalearthpacific/dep-mangroves/dep_s2_mangroves/0-0-0/FJ_006/2023/dep_s2_mangroves_FJ_006_2023.stac-item.json
type: application/json
\n", - " \n", - "
\n", - "
\n", - " \n", - "
\n", - " \n", - "
\n", - "
\n", - "
" - ], "text/plain": [ - "" + "['https://schemas.stacspec.org/v1.0.0/item-spec/json-schema/item.json',\n", + " 'https://stac-extensions.github.io/projection/v1.1.0/schema.json']" ] }, - "execution_count": 33, + "execution_count": 34, "metadata": {}, "output_type": "execute_result" } @@ -413,8 +1426,15 @@ "stac_path = writer.itempath.path(item_id, ext=\".stac-item.json\")\n", "\n", "item = Item.from_file(stac_path)\n", - "item" + "item.validate()" ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] } ], "metadata": { @@ -433,7 +1453,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.11.4" + "version": "3.11.5" } }, "nbformat": 4, diff --git a/requirements.txt b/requirements.txt index 739ec9e..07690e9 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,5 +1,5 @@ typer -git+https://github.com/digitalearthpacific/dep-tools.git@b47153b +git+https://github.com/digitalearthpacific/dep-tools.git@e5bf3f8 git+https://github.com/jessjaco/azure-logger.git@b23c9c7 xarray-spatial diff --git a/src/grid.py b/src/grid.py deleted file mode 100644 index 1f871de..0000000 --- a/src/grid.py +++ /dev/null @@ -1,7 +0,0 @@ -import fsspec -import geopandas as gpd - -grid_url = "https://deppcpublicstorage.blob.core.windows.net/input/gmw/grid_gmw_v3_2020_vec.parquet" - -with fsspec.open(grid_url) as file: - grid = gpd.read_parquet(file) diff --git a/src/run_task.py b/src/run_task.py index 68dde12..924d0c4 100755 --- a/src/run_task.py +++ b/src/run_task.py @@ -13,12 +13,17 @@ from dep_tools.azure import get_container_client from dep_tools.loaders import Sentinel2OdcLoader from dep_tools.namers import DepItemPath -from dep_tools.runner import run_by_area_dask_local, run_by_area_dask +from dep_tools.runner import run_by_area_dask_local from dep_tools.s2_utils import S2Processor from dep_tools.stac_utils import set_stac_properties from dep_tools.writers import AzureDsWriter -from grid import grid +import geopandas as gpd +import fsspec + + +GRID_URL = "https://deppcpublicstorage.blob.core.windows.net/input/gmw/grid_gmw_v3_2020_vec.parquet" + MANGROVES_BASE_PRODUCT = "s2" MANGROVES_DATASET_ID = "mangroves" @@ -40,6 +45,21 @@ def process(self, xr: DataArray) -> DataArray: return set_stac_properties(xr, ds) +def get_areas(region_code: str, region_index: str) -> gpd.GeoDataFrame: + with fsspec.open(GRID_URL) as f: + grid = gpd.read_parquet(f) + areas = None + + # None would be better for default but typer doesn't support it (str|None) + if region_code != "": + areas = grid[grid.index.get_level_values("code").isin([region_code])] + + if region_index != "": + areas = grid[grid.index == (region_code, region_index)] + + return areas + + def main( datetime: Annotated[str, typer.Option()], version: Annotated[str, typer.Option()], @@ -48,16 +68,9 @@ def main( local_cluster_kwargs: Annotated[str, typer.Option()] = "", dataset_id: str = MANGROVES_DATASET_ID, ) -> None: - areas = grid - - # None would be better for default but typer doesn't support it (str|None) - if region_code != "": - areas = grid[grid.index.get_level_values("code").isin([region_code])] - - if region_index != "": - areas = grid[grid.index == (region_code, region_index)] + areas = get_areas(region_code, region_index) - if len(areas) == 0: + if areas is None or len(areas) == 0: warnings.warn( f"index ({region_code}, {region_index}) not found in grid, no output produced" )