OSGeoLive-Notebooks/OpenDataCube/dc_load_esa_worldcover.ipynb

345 lines
138 KiB
Plaintext
Raw Normal View History

2023-06-05 21:24:44 -07:00
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"id": "8784196f",
"metadata": {},
"outputs": [],
"source": [
"import datacube"
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "3c0adfbd",
"metadata": {},
"outputs": [],
"source": [
"dc = datacube.Datacube(config='/home/user/.config/datacube/datacube.conf')"
]
},
{
"cell_type": "code",
"execution_count": 3,
"id": "a0118381",
"metadata": {},
2023-06-06 16:34:46 -07:00
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Found 1 datasets\n"
]
}
],
2023-06-05 21:24:44 -07:00
"source": [
2023-06-06 16:34:46 -07:00
"datasets = dc.find_datasets(product=\"esa_worldcover_2021\")\n",
"\n",
"print(f\"Found {len(datasets)} datasets\")\n",
"\n",
"# Load the first dataset\n",
"ds = dc.load(datasets=datasets[0:1])\n",
"\n",
"#ds = dc.load(product=\"esa_worldcover_2021\")"
2023-06-05 21:24:44 -07:00
]
},
{
"cell_type": "code",
"execution_count": 4,
"id": "7921c073",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"<xarray.Dataset>\n",
"Dimensions: (time: 1, latitude: 12874, longitude: 8912)\n",
"Coordinates:\n",
" * time (time) datetime64[ns] 2021-07-02\n",
" * latitude (latitude) float64 43.17 43.17 43.17 ... 42.1 42.1 42.1\n",
" * longitude (longitude) float64 20.22 20.22 20.22 ... 20.96 20.96 20.96\n",
" spatial_ref int32 4326\n",
"Data variables:\n",
" classification (time, latitude, longitude) uint8 0 0 0 0 0 0 ... 0 0 0 0 0\n",
"Attributes:\n",
" crs: EPSG:4326\n",
" grid_mapping: spatial_ref\n"
]
}
],
"source": [
"print(ds)"
]
},
{
"cell_type": "code",
2023-06-06 16:34:46 -07:00
"execution_count": 5,
2023-06-05 21:24:44 -07:00
"id": "68ff4906",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
2023-06-06 16:34:46 -07:00
"<matplotlib.collections.QuadMesh at 0x7f75d4597eb0>"
2023-06-05 21:24:44 -07:00
]
},
2023-06-06 16:34:46 -07:00
"execution_count": 5,
2023-06-05 21:24:44 -07:00
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
2023-06-06 16:34:46 -07:00
"image/png": "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
2023-06-05 21:24:44 -07:00
"text/plain": [
2023-06-06 16:34:46 -07:00
"<Figure size 864x576 with 2 Axes>"
2023-06-05 21:24:44 -07:00
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
2023-06-06 16:34:46 -07:00
"ds.classification.plot(size=8)"
2023-06-05 21:24:44 -07:00
]
},
{
"cell_type": "code",
2023-06-06 16:34:46 -07:00
"execution_count": 8,
2023-06-05 21:24:44 -07:00
"id": "68cc04b9",
"metadata": {},
"outputs": [],
"source": [
2023-06-06 16:34:46 -07:00
"import numpy as np\n",
"from matplotlib import colors as mcolours"
2023-06-05 21:24:44 -07:00
]
},
{
"cell_type": "code",
2023-06-06 16:34:46 -07:00
"execution_count": 10,
"id": "26fd1658",
"metadata": {},
"outputs": [],
"source": [
"cmap = mcolours.ListedColormap(\n",
" [\n",
" np.array([0, 0, 0]) / 255,\n",
" np.array([0, 100, 0]) / 255,\n",
" np.array([255, 187, 34]) / 255,\n",
" np.array([255, 255, 76]) / 255,\n",
" np.array([240, 150, 255]) / 255,\n",
" np.array([250, 0, 0]) / 255,\n",
" np.array([180, 180, 180]) / 255,\n",
" np.array([240, 240, 240]) / 255,\n",
" np.array([0, 100, 200]) / 255,\n",
" np.array([0, 150, 160]) / 255,\n",
" np.array([0, 207, 117]) / 255,\n",
" np.array([250, 230, 160]) / 255,\n",
" ]\n",
")\n",
"\n",
"bounds = [-5, 5, 15, 25, 35, 45, 55, 65, 75, 85, 92, 98, 105]\n",
"norm = mcolours.BoundaryNorm(np.array(bounds), cmap.N)\n",
"cblabels = [\n",
" \"no data\",\n",
" \"tree cover\",\n",
" \"shrubland\",\n",
" \"grassland\",\n",
" \"cropland\",\n",
" \"built up\",\n",
" \"bare/sparse vegetation\",\n",
" \"snow and ice\",\n",
" \"permanent water bodies\",\n",
" \"herbaceous wetland\",\n",
" \"mangroves\",\n",
" \"moss and lichen\",\n",
"]"
]
},
{
"cell_type": "code",
"execution_count": 15,
"id": "bc88d065",
"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></th>\n",
" <th>name</th>\n",
" <th>dtype</th>\n",
" <th>units</th>\n",
" <th>nodata</th>\n",
" <th>flags_definition</th>\n",
" </tr>\n",
" <tr>\n",
" <th>product</th>\n",
" <th>measurement</th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>esa_worldcover_2021</th>\n",
" <th>classification</th>\n",
" <td>classification</td>\n",
" <td>uint8</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>{'data': {'bits': [0, 1, 2, 3, 4, 5, 6, 7], 'v...</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" name dtype units nodata \\\n",
"product measurement \n",
"esa_worldcover_2021 classification classification uint8 1 0 \n",
"\n",
" flags_definition \n",
"product measurement \n",
"esa_worldcover_2021 classification {'data': {'bits': [0, 1, 2, 3, 4, 5, 6, 7], 'v... "
]
},
"execution_count": 15,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"measure_list = dc.list_measurements()\n",
"measure_list"
]
},
{
"cell_type": "code",
"execution_count": 12,
"id": "3c8354d8",
"metadata": {
"collapsed": true
},
"outputs": [
{
"ename": "AttributeError",
"evalue": "'_Dataset_PlotMethods' object has no attribute 'imshow'",
"output_type": "error",
"traceback": [
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[0;31mAttributeError\u001b[0m Traceback (most recent call last)",
"\u001b[0;32m/tmp/ipykernel_31877/3468690862.py\u001b[0m in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mim\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mds\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mplot\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mimshow\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mcmap\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mcmap\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mnorm\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mnorm\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0madd_colorbar\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mlegend\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mplot_kwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m",
"\u001b[0;31mAttributeError\u001b[0m: '_Dataset_PlotMethods' object has no attribute 'imshow'"
]
}
],
"source": [
"#im = ds.plot.imshow(cmap=cmap, norm=norm, add_colorbar=legend, **plot_kwargs)\n",
"## lulc_plot\n",
"## supposedly, that function comes from dea-africa / data_cube_utilities repo"
]
},
{
"cell_type": "code",
"execution_count": 11,
"id": "d0737b2c",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Variable Type Data/Info\n",
"--------------------------------------\n",
"bounds list n=13\n",
"cblabels list n=12\n",
"cmap ListedColormap <matplotlib.colors.Listed<...>object at 0x7f75dc25ead0>\n",
"datacube module <module 'datacube' from '<...>es/datacube/__init__.py'>\n",
"datasets list n=1\n",
"dc Datacube Datacube<index=Index<db=P<...>er:***@:5432/datacube)>>>\n",
"ds Dataset <xarray.Dataset>\\nDimensi<...>rid_mapping: spatial_ref\n",
"mcolours module <module 'matplotlib.color<...>es/matplotlib/colors.py'>\n",
"norm BoundaryNorm <matplotlib.colors.Bounda<...>object at 0x7f75dc25eb60>\n",
"np module <module 'numpy' from '/us<...>kages/numpy/__init__.py'>\n"
]
}
],
"source": [
"%whos"
]
},
{
"cell_type": "code",
"execution_count": 16,
2023-06-05 21:24:44 -07:00
"id": "8902b8fb",
"metadata": {},
2023-06-06 16:34:46 -07:00
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"1.8.9\n"
]
}
],
"source": [
"print(datacube.__version__)"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "ca6987c9",
"metadata": {},
2023-06-05 21:24:44 -07:00
"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.6"
}
},
"nbformat": 4,
"nbformat_minor": 5
}