Tuto : calculer l’ensoleillement moyen dans une région (ou comment masquer un datarray avec un shapefile en Python)

extraction de données régionales d’un dataarray à partir d’une forme shapefile
  1. Télécharger un historique d’ensoleillement et l’ouvrir dans un dataarray,
  2. Télécharger un fichier shapefile contenant les limites des régions françaises, l’ouvrir avec Geopandas et extraire la forme d’une région,
  3. Créer un masque à partir de cette forme,
  4. Appliquer ce masque sur le datarray puis calculer l’ensoleillement moyen de la région.

Téléchargement et prétraitement des données météo

import xarray as xrpath = "data.nc" #Chemin vers les donnéesDS = xr.open_dataset(path)
da = DS["ssrd"]
from datetime import date#Dates de début et de fin de la période à étudier
debut = date(1991, 1, 1)
fin = date(2020, 12, 31)
da = da.sel(time = slice(debut, fin))
da = da.mean(dim = 'time')
da.plot()
datarray contenant l’ensoleillement moyen en France

Téléchargement et ouverture des limites de région

import geopandas as gpdregions = gpd.read_file("georef-france-region-millesime.shp")regions
#Sélection des régions de métropole
regions = regions[regions.reg_area_co == 'FXX']
#Classement par ordre alphabétique
regions = regions.sort_values(by = 'reg_name_up')
#Réinitialisation de l'index
regions = regions.reset_index(drop = True)
regions.plot()
Fichier shapefile : région de France métropolitaine

Appliquer un filtre à un dataarray à partir d’un shapefile

da.where(condition)
#calcul de la moyenne
moyenne = float(da.mean())
#sélection des points où la valeur est supérieure
da.where(da.values > moyenne)
data array masqué avec da.where()
region = regions.iloc[0]
import shapelypoint = shapely.geometry.Point(lon, lat)
point.within(region.geometry)
import numpy as npmasque = np.zeros(da.shape)
lat = float(da.latitude[m]) #m-ieme latitude
lon = float(da.longitude[n]) #n_ieme longitude
#Création du point de coordonnées lat,lon
point = shapely.geometry.Point(lon, lat)
#Teste si le point est dans la région
point.within(region.geometry)
masque[m][n] = point.within(region)

Appliquer le masque et calculer la moyenne

da_regional = da.where(masque)
da_regional.plot()
dataarray masqué avec la forme d’une région française
Forme de la région (à gauche) et dataarray après l’application du masque (à droite)
float(da_regional.mean())
Ensoleillement moyen (kWh/m²) par région française

--

--

--

Start-up spécialisée dans l’exploitation des données climatiques, Callendar vous aide à prendre les bonnes décisions partout où le climat actuel et futur compte

Love podcasts or audiobooks? Learn on the go with our new app.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store
Callendar

Callendar

Start-up spécialisée dans l’exploitation des données climatiques, Callendar vous aide à prendre les bonnes décisions partout où le climat actuel et futur compte

More from Medium

Personal data protection. How does a decentralized KelVPN handle this?

T-SNE: t-Stochastic neighborhood embedding

Introduction to seaborn! (Part-1)

Quick data curve normalising with log