{
"cells": [
{
"cell_type": "markdown",
"id": "0",
"metadata": {},
"source": [
"[](https://githubtocolab.com/gee-community/geemap/blob/master/docs/notebooks/105_netcdf.ipynb)\n",
"[](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": [
""
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
}
},
"nbformat": 4,
"nbformat_minor": 5
}