Representación interactiva de un raster geoespacial con Python, Folium y Rasterio - Tutorial

A veces queremos reproducir o obtener algo similar a un entorno de SIG de escritorio en un Jupyter notebook con opciones para mostrar/ocultar capas y seleccionar mapas de fondo, pero faltaba una parte en nuestro esfuerzo y era la representación del raster.

Hemos desarrollado un caso aplicado de representación de raster de banda única en un Jupyter notebook con Rasterio y Folium. El raster debe estar en WGS84 y el script se puede combinar con más características de Folium para la representación de datos vectoriales, mapas de fondo, menús y pop-ups.

Tutorial

Código

#from osgeo import gdal
import matplotlib.pyplot as plt
import numpy as np
import rasterio
import folium
# representation of the generated raster
elevRaster = rasterio.open('elevationClipped.tif')
elevArray = elevRaster.read(1)

boundList = [x for x in elevRaster.bounds]
boundList
[-98.13583333333341, 32.65666666666657, -96.40250000000015, 33.967499999999845]
#get rid of the nan for color interpretation
elevArray = np.nan_to_num(elevArray)
plt.imshow(elevArray)
<matplotlib.image.AxesImage at 0x25bf90c4c10>
rasLon = (boundList[3] + boundList[1])/2
rasLat = (boundList[2] + boundList[0])/2
mapCenter = [rasLon, rasLat]
# Create a Folium map centered at a specific location
m = folium.Map(location=mapCenter, zoom_start=9)

# Add raster overlay
image = folium.raster_layers.ImageOverlay(
    image=elevArray,
    bounds=[[boundList[1], boundList[0]], [boundList[3], boundList[2]]],
    opacity=0.6,
    interactive=True,
    cross_origin=False,
)
image.add_to(m)

# Add layer control
folium.LayerControl().add_to(m)

# Display the map
m

Datos de entrada

Puede descargar los datos de entrada de este enlace.

 

Suscríbete a nuestro boletín electrónico

Suscríbase a nuestro boletín gratuito para recibir noticias, datos interesantes y fechas de nuestros cursos en recursos hídricos.

 

Posted on March 14, 2024 .