{ "cells": [ { "cell_type": "markdown", "id": "0", "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, "id": "1", "metadata": {}, "outputs": [], "source": [ "# !pip install geemap xarray rioxarray netcdf4 localtileserver" ] }, { "cell_type": "code", "execution_count": null, "id": "2", "metadata": {}, "outputs": [], "source": [ "import geemap" ] }, { "cell_type": "markdown", "id": "3", "metadata": {}, "source": [ "Download a sample NetCDF dataset." ] }, { "cell_type": "code", "execution_count": null, "id": "4", "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, "id": "5", "metadata": {}, "outputs": [], "source": [ "geemap.download_file(url, output=filename)" ] }, { "cell_type": "markdown", "id": "6", "metadata": {}, "source": [ "Read the NetCDF dataset." ] }, { "cell_type": "code", "execution_count": null, "id": "7", "metadata": {}, "outputs": [], "source": [ "data = geemap.read_netcdf(filename)\n", "data" ] }, { "cell_type": "markdown", "id": "8", "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, "id": "9", "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", "id": "10", "metadata": {}, "source": [ "Add the GeoTIFF to the map. We can also overlay the country boundary on the map." ] }, { "cell_type": "code", "execution_count": null, "id": "11", "metadata": {}, "outputs": [], "source": [ "geojson = \"https://github.com/giswqs/leafmap/raw/master/examples/data/countries.geojson\"" ] }, { "cell_type": "code", "execution_count": null, "id": "12", "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", "id": "13", "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, "id": "14", "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", "id": "15", "metadata": {}, "source": [ "Visualizing wind velocity." ] }, { "cell_type": "code", "execution_count": null, "id": "16", "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", "id": "17", "metadata": {}, "source": [ "![](https://i.imgur.com/oL5Mgeu.gif)" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" } }, "nbformat": 4, "nbformat_minor": 5 }