import sys
import numpy as np
import pandas as pd
import matplotlib
matplotlib.use("Agg")
import matplotlib.pyplot as plt
from global_land_mask import globe
D = sys.argv[1] if len(sys.argv) > 1 else "."
o = pd.read_csv(f"{D}/vent_barrages_temperes_v21.csv")
fig, g = plt.subplots(figsize=(16, 8.5))
la, lo = np.meshgrid(np.arange(-60, 85, 0.5), np.arange(-180, 180, 0.5), indexing="ij")
g.imshow(np.where(globe.is_land(la, lo), 1.0, np.nan), extent=[-180, 180, -60, 85], origin="lower", cmap="Greys", vmin=0, vmax=4, aspect="auto")
st = [("D", "#bdc3c7", "moins de 6 m/s, hors plan"), ("C", "#f1c40f", "6 à 6,5 m/s, trop peu pour une V14"), ("B", "#2e86c1", "6,5 à 7 m/s, V14 possible"), ("A", "#1b4f72", "7 m/s et plus"), ("sans donnée", "#e74c3c", "pas de vent lu (pays hors atlas)")]
for c, col, lab in st:
    q = o[o.classe == c]
    g.scatter(q.lon, q.lat, s=4 + q.gwh.fillna(0) / 150, color=col, alpha=0.75, lw=0, label=lab + " : " + f"{len(q):,}".replace(",", " ") + " barrages")
x0, y0 = -42, -52
k = 2000 / 111.32
g.plot([x0, x0 + k], [y0, y0], color="black", lw=3)
g.plot([x0, x0], [y0 - 1, y0 + 1], color="black", lw=2)
g.plot([x0 + k, x0 + k], [y0 - 1, y0 + 1], color="black", lw=2)
g.text(x0 + k / 2, y0 + 2, "2 000 km (à l'équateur)", ha="center", fontsize=9)
g.set_xlim(-180, 180)
g.set_ylim(-60, 85)
g.set_xticks([])
g.set_yticks([])
g.legend(loc="lower left", fontsize=9, markerscale=2, framealpha=0.9)
g.set_title("Le vent à 150 m autour des 3 156 barrages tempérés (Global Wind Atlas, 15 km autour de chaque barrage) ; taille selon les GWh de V14", fontsize=12)
fig.tight_layout()
fig.savefig(f"{D}/carte_vent_barrages_temperes_v21.png", dpi=110)
