{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "[![image](https://colab.research.google.com/assets/colab-badge.svg)](https://githubtocolab.com/gee-community/geemap/blob/master/examples/notebooks/105_netcdf.ipynb)\n", "[![image](https://mybinder.org/badge_logo.svg)](https://gishub.org/geemap-binder)\n", "\n", "**Visualizing NetCDF data**\n", "\n", "Uncomment the following line to install [geemap](https://geemap.org) if needed." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# !pip install geemap xarray rioxarray netcdf4 localtileserver" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "import geemap" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Download a sample NetCDF dataset." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "url = 'https://github.com/giswqs/leafmap/raw/master/examples/data/wind_global.nc'\n", "filename = 'wind_global.nc'" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "geemap.download_file(url, output=filename)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Read the NetCDF dataset." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "data = geemap.read_netcdf(filename)\n", "data" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Convert the NetCDF dataset to GeoTIFF. Note that the longitude range of the NetCDF dataset is `[0, 360]`. We need to convert it to `[-180, 180]` by setting `shift_lon=True` so that it can be displayed on the map." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "tif = 'wind_global.tif'\n", "geemap.netcdf_to_tif(filename, tif, variables=['u_wind', 'v_wind'], shift_lon=True)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Add the GeoTIFF to the map. We can also overlay the country boundary on the map." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "geojson = 'https://github.com/giswqs/leafmap/raw/master/examples/data/countries.geojson'" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "m = geemap.Map(layer_ctrl=True)\n", "m.add_raster(tif, band=[1], palette='coolwarm', layer_name='u_wind')\n", "m.add_geojson(geojson, layer_name='Countries')\n", "m" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "You can also use the `add_netcdf()` function to add the NetCDF dataset to the map without having to convert it to GeoTIFF explicitly." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "m = geemap.Map(layer_ctrl=True)\n", "m.add_netcdf(\n", " filename,\n", " variables=['v_wind'],\n", " palette='coolwarm',\n", " shift_lon=True,\n", " layer_name='v_wind',\n", ")\n", "m.add_geojson(geojson, layer_name='Countries')\n", "m" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Visualizing wind velocity." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "m = geemap.Map(layer_ctrl=True)\n", "m.add_basemap('CartoDB.DarkMatter')\n", "m.add_velocity(filename, zonal_speed='u_wind', meridional_speed='v_wind')\n", "m" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "![](https://i.imgur.com/oL5Mgeu.gif)" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" } }, "nbformat": 4, "nbformat_minor": 5 }