Commit 0a12a48d authored by Paul Nicot's avatar Paul Nicot

production de carte pour les dates anterieurs

m Veuille le message de validation pour vos modifications. Les lignes
parent b903d9e8
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# produit des cartes des trajectoires des spots dans des zones choisies
# entre 2 dates a intervale de temps reglables.
from mpl_toolkits.basemap import Basemap
from time import gmtime, strftime
import matplotlib.pyplot as plt
import time
import datetime
import numpy as np
import pandas as pd
from mpl_toolkits.axes_grid1 import make_axes_locatable
# parametres modifiables --------------------------
region = 'BDC' # region (GSL / OHA / BDC / SLE)
day0 = 20150929 # jour de la premiere carte (fmt = YYYYMMDD)
h = 2 # intervalle de temps entre les cartes (h)
day1 = 20151001 # jour de la derniere carte (fmt = YYYYMMDD)
start = 20150611 # date de debut de suivi de la saison
snake = 36 # nombre d'heure de suivi du serpent
# ================================================
ts = str(day0)
t0 = int(time.mktime(datetime.datetime.strptime(ts, "%Y%m%d").timetuple()))
tt = str(day1)
t1 = int(time.mktime(datetime.datetime.strptime(tt, "%Y%m%d").timetuple()))
tst = str(start)
tS = int(time.mktime(datetime.datetime.strptime(tst, "%Y%m%d").timetuple()))
sday = 84600
shour = 3600
tint = shour * h
# colormap
cmap=plt.get_cmap('OrRd')
lab1 = int(snake)
lab2 = int(snake*0.75)
lab3 = int(snake*0.5)
lab4 = int(snake*0.25)
lab5 = 0
# Base de donnees ----------------------------
df = pd.read_csv('/home/nicopa01/data/spot/spots_pos_flag_clean.csv',delimiter=';')
df = df.drop_duplicates(take_last=True)
for x in xrange(t0, t1, tint):
timestamp = x # temps unix
dt = timestamp - shour * snake # heure de debut de suivi
diff = timestamp - dt # intervale de suivi
strtime = datetime.datetime.fromtimestamp(int(x)).strftime('%Y-%m-%d %H:%M')
startt = datetime.datetime.fromtimestamp(int(tS)).strftime('%Y-%m-%d %H:%M')
nametime = datetime.datetime.fromtimestamp(int(x)).strftime('%Y%m%d%H%M')
if region == 'SLE':
# Estuaire du Saint-Laurent ---------------------------
# traces des x derniers jours dans l'estuaire
SLE = df.loc[(df.FLAG == "OCN")
& (df.TIME <= x) & (df.TIME > x - shour*snake)]
# trace depuis le debut de l'ete
SLE_start = df.loc[(df.FLAG == "OCN") & (df.TIME <= x)
& (df.TIME > tS)]
fig, ax = plt.subplots()
# caracteristiques de la carte
m = Basemap(projection='stere',lon_0=-68.5,lat_0=48,\
llcrnrlat=47.8,urcrnrlat=49.5,\
llcrnrlon=-70,urcrnrlon=-67,\
rsphere=6371.2,resolution='h')
m.drawmapboundary(fill_color='lightblue') # fill to edge
m.drawcountries()
m.fillcontinents(color='grey',lake_color='lightblue',zorder=0)
m.drawrivers()
m.drawcoastlines(linewidth=0.8)
m.drawparallels(np.arange(40,60,0.5),labels=[1,0,0,0],linewidth=0.0)
m.drawmeridians(np.arange(-80,-40,1),labels=[0,0,0,1],linewidth=0.0)
for spot, group in SLE_start.groupby(['SPOT']):
lat = group.LAT.values
lon = group.LON.values
x,y = m(lon, lat)
cax = plt.plot(x,y,color='0.35',linewidth=0.7)
# trace les chemins de bouees
for spot, group in SLE.groupby(['SPOT']):
latitude = group.LAT.values
longitude = group.LON.values
t = (group.TIME.values - float(dt)) / diff
x,y = m(longitude, latitude)
cax = plt.scatter(x,y,c=t, s=45, cmap=cmap,linewidth=0,vmin=0, vmax=1)
# colorbar
cbar = fig.colorbar(cax,fraction=0.03, pad=0.03)
cbar.set_ticks([0,0.25,0.5,0.75,1])
cbar.update_ticks()
cbar.ax.set_yticklabels([lab1,lab2,lab3,lab4,lab5])
cbar.set_label('heures', rotation=270,labelpad=15)
# legende
plt.annotate(strtime + ' HAE', xy=(1, 1), xycoords='data', size=20,
xytext=(0.9, 0.1), textcoords='axes fraction',
horizontalalignment='right', verticalalignment='top')
plt.title(u"Dérive de surface (" + str(snake) + u" dernières heures)")
#enregistrement
#plt.savefig('/home/nicopa01/data/spot/suivi/SLE/SLE5_' + nametime + '.png',dpi=300)
plt.savefig('/home/nicopa01/data/spot/suivi/SLE/SLE_' + nametime + '.jpg',dpi=300)
plt.close()
if region == 'BDC':
bdc = df.loc[(df.SPOT == 24) | (df.SPOT == 23) | (df.SPOT == 52) |
(df.SPOT == 53) | (df.SPOT >= 700) & (df.SPOT < 899)]
# Baie des chaleurs ---------------------------
# traces des x derniers jours dans la baie
BDC = bdc.loc[(df.FLAG == "OCN") & (df.TIME <= x) & (df.TIME > x - shour*snake)]
# selectionne les positions depuis le debut de l'ete
BDC_start = bdc.loc[(df.FLAG == "OCN") & (df.TIME <= x) & (df.TIME > tS)]
n = bdc.loc[(df.FLAG == "OCN") & (df.TIME <= x) & (df.TIME > tS)]
number = str(n.TIME.count())
fig, ax = plt.subplots()
# caracteristiques de la carte
m = Basemap(projection='stere',lon_0=-68.5,lat_0=48,\
llcrnrlat=47.5,urcrnrlat=48.9,\
llcrnrlon=-66.9,urcrnrlon=-63.8,\
rsphere=6371.2,resolution='h')
m.drawmapboundary(fill_color='lightblue') # fill to edge
m.drawcountries()
m.fillcontinents(color='grey',lake_color='lightblue',zorder=0)
m.drawrivers()
m.drawcoastlines(linewidth=0.8)
m.drawparallels(np.arange(40,60,0.5),labels=[1,0,0,0],linewidth=0.0)
m.drawmeridians(np.arange(-80,-40,1),labels=[0,0,0,1],linewidth=0.0)
# trace depuis le début de l'ete
for spot, group in BDC_start.groupby(['SPOT']):
lat = group.LAT.values
lon = group.LON.values
x,y = m(lon, lat)
plt.plot(x,y,color='0.35',linewidth=0.7)
# trace les chemins de bouees
for spot, group in BDC.groupby(['SPOT']):
latitude = group.LAT.values
longitude = group.LON.values
t = (group.TIME.values - float(dt)) / diff
x,y = m(longitude, latitude)
cax = plt.scatter(x,y,c=t, s=45, cmap=cmap,linewidth=0,vmin=0, vmax=1)
# colorbar
cbar = fig.colorbar(cax,fraction=0.03, pad=0.03)
cbar.set_ticks([0,0.25,0.5,0.75,1])
cbar.update_ticks()
cbar.ax.set_yticklabels([lab1,lab2,lab3,lab4,lab5])
cbar.set_label('heures', rotation=270,labelpad=15)
# legende
plt.annotate(strtime + ' HAE', xy=(1, 1), xycoords='data', size=20,
xytext=(0.6, 0.1), textcoords='axes fraction',
horizontalalignment='right', verticalalignment='top')
plt.annotate(number + ' positions depuis le ' + startt, xy=(1, 1),
xycoords='data', size=13,
xytext=(0.68, 0.9), textcoords='axes fraction',
horizontalalignment='right', verticalalignment='top')
plt.title(u"Dérive de surface (" + str(snake) + u" dernières heures)")
#enregistrement
#plt.savefig('/home/nicopa01/data/spot/suivi/BDC/BDC_' + nametime + '.png',dpi=300)
plt.savefig('/home/nicopa01/data/spot/suivi/BDC/BDC_' + nametime + '.jpg',dpi=300)
plt.close()
if region == 'GSL':
# Estuaire du Saint-Laurent ---------------------------
# traces des x derniers jours dans l'estuaire
GSL = df[(df.FLAG == "OCN") & (df.TIME <= x) & (df.TIME > dt)]
GSL_start = df.loc[(df.FLAG == "OCN") & (df.TIME <= x) & (df.TIME > tS)]
n = df.loc[(df.FLAG == "OCN") & (df.TIME <= x) & (df.TIME > tS)]
number = str(n.TIME.count())
fig, ax = plt.subplots()
# caracteristiques de la carte
m = Basemap(projection='stere',lon_0=-64.5,lat_0=48,\
llcrnrlat=45.2,urcrnrlat=51.6,\
llcrnrlon=-70,urcrnrlon=-56.5,\
rsphere=6371.2,resolution='h')
m.drawmapboundary(fill_color='lightblue') # fill to edge
m.drawcountries()
m.fillcontinents(color='grey',lake_color='lightblue',zorder=0)
m.drawrivers()
m.drawcoastlines(linewidth=0.8)
m.drawparallels(np.arange(40,60,2),labels=[1,0,0,0],linewidth=0.0)
m.drawmeridians(np.arange(-80,-40,2),labels=[0,0,0,1],linewidth=0.0)
# trace depuis le début de l'ete
for spot, group in GSL_start.groupby(['SPOT']):
lat = group.LAT.values
lon = group.LON.values
x,y = m(lon, lat)
plt.plot(x,y,color='0.35',linewidth=0.7)
# trace les chemins de bouees
for spot, group in GSL.groupby(['SPOT']):
latitude = group.LAT.values
longitude = group.LON.values
t = (group.TIME.values - float(dt)) / diff
x,y = m(longitude, latitude)
cax = plt.scatter(x,y,c=t, s=45, cmap=cmap,linewidth=0,vmin=0, vmax=1)
plt.plot(x,y,'k-',linewidth=0.5)
# colorbar
cbar = fig.colorbar(cax,fraction=0.03, pad=0.03)
cbar.set_ticks([0,0.25,0.5,0.75,1])
cbar.update_ticks()
cbar.ax.set_yticklabels([lab1,lab2,lab3,lab4,lab5])
cbar.set_label('heures', rotation=270,labelpad=15)
# legende
plt.annotate(strtime + ' HAE', xy=(1, 1), xycoords='data', size=20,
xytext=(0.9, 0.1), textcoords='axes fraction',
horizontalalignment='right', verticalalignment='top')
plt.title(u"Dérive de surface (" + str(snake) + u" dernières heures)")
#enregistrement
#plt.savefig('/home/nicopa01/data/spot/suivi/GSL/GSL_' + nametime + '.png',dpi=300)
plt.savefig('/home/nicopa01/data/spot/suivi/GSL/GSL_' + nametime + '.jpg',dpi=300)
plt.close()
if region == 'OHA':
# Estuaire du Saint-Laurent ---------------------------
# traces des x derniers jours dans l'estuaire
OHA = df[(df.FLAG == "OCN")
& (df.TIME <= x) & (df.TIME > x - shour*snake)]
OHA_start = df.loc[(df.FLAG == "OCN")
& (df.TIME <= x) & (df.TIME > tS)]
fig, ax = plt.subplots()
# caracteristiques de la carte
m = Basemap(projection='stere',lon_0=-60,lat_0=49,\
llcrnrlat=47,urcrnrlat=51.5,\
llcrnrlon=-63.8,urcrnrlon=-56.8,\
rsphere=6371.2,resolution='h')
m.drawmapboundary(fill_color='lightblue') # fill to edge
m.drawcountries()
m.fillcontinents(color='grey',lake_color='lightblue',zorder=0)
m.drawrivers()
m.drawcoastlines(linewidth=0.8)
m.drawparallels(np.arange(40,60,2),labels=[1,0,0,0],linewidth=0.0)
m.drawmeridians(np.arange(-80,-40,2),labels=[0,0,0,1],linewidth=0.0)
# trace depuis le début de l'ete
for spot, group in OHA_start.groupby(['SPOT']):
lat = group.LAT.values
lon = group.LON.values
x,y = m(lon, lat)
plt.plot(x,y,color='0.35',linewidth=0.7)
# trace les chemins de bouees
for spot, group in OHA.groupby(['SPOT']):
latitude = group.LAT.values
longitude = group.LON.values
t = (group.TIME.values - float(dt)) / diff
x,y = m(longitude, latitude)
cax = plt.scatter(x,y,c=t, s=45, cmap=cmap,linewidth=0,vmin=0, vmax=1)
# colorbar
cbar = fig.colorbar(cax,fraction=0.03, pad=0.03)
cbar.set_ticks([0,0.25,0.5,0.75,1])
cbar.update_ticks()
cbar.ax.set_yticklabels([lab1,lab2,lab3,lab4,lab5])
cbar.set_label('heures', rotation=270,labelpad=15)
# legende
plt.annotate(strtime + ' HAE', xy=(1, 1), xycoords='data', size=16,
xytext=(0.55, 0.9), textcoords='axes fraction',
horizontalalignment='right', verticalalignment='top')
plt.title(u"Dérive de surface (" + str(snake) + u" dernières heures)")
#enregistrement
#plt.savefig('/home/nicopa01/data/spot/suivi/OHA/OHA_' + nametime + '.png',dpi=300)
plt.savefig('/home/nicopa01/data/spot/suivi/OHA/OHA_' + nametime + '.jpg',dpi=300)
plt.close()
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment