Utilice NetCDF con shapefile y calcule el promedio y la anomalía para todos los polígonos dentro del shapefile.
Hay varios tutoriales (ejemplo 1, ejemplo 2, ejemplo 3) sobre cómo enmascarar archivos NetCDF utilizando un shapefile y calcular medidas promedio. Sin embargo, me confundí con esos flujos de trabajo sobre cómo enmascarar archivos NetCDF y extraer medidas como el promedio, y esos tutoriales no incluyeron la extracción de anomalías (por ejemplo, la diferencia entre la temperatura en 2019 y una temperatura promedio base).
Aquí hago un ejemplo. Descargué la temperatura mensual (descargar archivo de temperatura) desde 2000 hasta 2019 y el shapefile de nivel estatal de EE. UU. (descargar shapefile). Quiero obtener la temperatura promedio a nivel estatal basada en la temperatura mensual promedio de 2000 a 2019 y la anomalía de temperatura del año 2019 en relación con la temperatura promedio base de 2000 a 2010. Específicamente, el dataframe final se ve así:
estado | temp_promedio | anom_temp2019 |
---|---|---|
AL | xx | xx |
AR | xx | xx |
… | … | … |
WY | xx | xx |
# Cargar librerías
%matplotlib inline
import regionmask
import numpy as np
import xarray as xr
import pandas as pd
import geopandas as gpd
import matplotlib.pyplot as plt
# Leer shapefile
us = gpd.read_file('./shp/state_cus.shp')
# Leer datos gráficos
ds = xr.open_mfdataset('./temp/monthly_mean_t2m_*.nc')
...
Agradezco mucho su ayuda al proporcionar un flujo de trabajo explícito que pueda realizar la tarea anterior. Muchas gracias.
davy.ai
Enmascarar NetCDF utilizando Shapefile y extraer medidas con Python
Aquí hay un flujo de trabajo que puede ayudarte a extraer la temperatura promedio a nivel estatal basada en la temperatura promedio mensual de 2000 a 2019 y la anomalía de temperatura relativa de 2019 en comparación con la temperatura base de 2000 a 2010. El flujo de trabajo incluye:
Este flujo de trabajo debería darte el marco de datos final de la siguiente manera:
Espero que esto te ayude a lograr tu tarea. Si tienes alguna pregunta adicional o necesitas ayuda adicional, no dudes en preguntar.