Applying the IF-depth model to the inundation frequency across the middle-lower Amazon, the calculated bathymetry of the floodplain lakes ranges from 1.8m to 6.9m with respect to the high-water season. The shallowest depth starts at 1.8m because data points with IF under 50% were excluded.
Code
import numpy as npimport matplotlib.pyplot as pltimport matplotlib.colors as mcolorsimport rasterio as rioimport geopandas as gpd# Import bathymetrybathymetry = rio.open("../data/bathymetry.tif")# Read into a NumPy array (only 1 band)bathymetry_np = bathymetry.read(1)# Open hydropoly shapefilehydropoly_crop = gpd.read_file("../data/Hydropoly/hydropoly_crop.shp")# Ensure same crshydropoly_crop = hydropoly_crop.to_crs(epsg=bathymetry.crs.to_epsg())# Get the bounds of bathymetryminx, miny, maxx, maxy = bathymetry.bounds;# (left, bottom, right, top)# Define color breaksbreaks2 = [1.763977570002549,3.4,5.2,6.1,6.900649783627833];# Define paletteamazon_palette = ["#F1A790","#DD6F78","#BF6476","#8E6781"];cmap = mcolors.LinearSegmentedColormap.from_list('custom_cmap', list(zip(np.linspace(0, 1, len(amazon_palette)), amazon_palette)));norm = mcolors.BoundaryNorm(breaks2, cmap.N);# Plotfig, ax = plt.subplots(figsize=(12, 8))img = ax.imshow(bathymetry_np,cmap=cmap, extent=[minx, maxx, miny, maxy],norm=norm);# Add the river polygonhydropoly_crop.plot(ax=ax, facecolor="#355B7C", edgecolor="none",zorder=2)# Set background to beigefig.patch.set_facecolor("#F9F8F2")ax.set_facecolor("#F9F8F2")# Create an inset axes for the colorbar in the bottom rightcax = ax.inset_axes([0.8, 0.05, 0.15, 0.03]) # [x, y, width, height]# Colorbarcbar = fig.colorbar(img, cax=cax, orientation='horizontal', shrink=0.3)cbar.ax.set_title("Depth (m)", fontsize=10, fontname='Raleway', pad=4) # Titlecbar.outline.set_linewidth(0) # Remove the black outlinecbar.ax.tick_params(size=0) # Remove tickscbar.set_ticklabels(['1.8','','','','6.9']) # Custom tick labelscbar.ax.xaxis.set_tick_params(pad=4) # Tick labels# Define Avenir font propertiesavenir_font = fm.FontProperties(family='Avenir',size=15)# Change tick label font and sizefor label in cbar.ax.get_xticklabels(): label.set_fontproperties(avenir_font)# Title and layoutplt.title("The Amazon River's floodplain lakes", fontsize=18, fontweight="bold", loc="left", pad =10, x=0.05,y=0.85, fontname='Raleway')# Remove axes for clean aestheticsax.axis("off")plt.rcParams['figure.dpi'] =300plt.show()
Figure 1: Bathymetry of middle-lower Amazon
Zooming into the 12 lakes of interest, they have varying depths. Most lakes lie on the alluvial plain, the flat surface along the river banks formed from deposition of sediments over time. These lakes are large, round, and more shallow (lakes 1, 2, 5, 6, 9, 10, 11). However, some lakes are incised in valleys, lying near the foot of the upland rocks, hence are generally deeper (lakes 3, 8, 12). Interestingly, lakes 4 and 7 are divided into half by a thick ridge, where the lower half nearer to the alluvial plain is shallower, while the upper half nearer to the valleys is deeper.