-
-
Save cerisara/c98b1ae553756a74596b7341e5bdd566 to your computer and use it in GitHub Desktop.
01 46°05’58" 5°20’56" E AIN | |
02 49°33’34" 3°33’30" E AISNE | |
03 46°23’37" 3°11’18" E ALLIER | |
04 44°06’22" 6°14’38" E ALPES-DE-HAUTEPROVENCE | |
05 44°39’49" 6°15’47" E HAUTES-ALPES | |
06 43°56’15" 7°06’59" E ALPES-MARITIMES | |
07 44°45’06" 4°25’29" E ARDECHE | |
08 49°36’56" 4°38’27" E ARDENNES | |
09 42°55’15" 1°30’14" E ARIEGE | |
10 48°18’16" 4°09’42" E AUBE | |
11 43°06’12" 2°24’51" E AUDE | |
12 44°16’49" 2°40’47" E AVEYRON | |
13 43°32’36" 5°05’11" E BOUCHES-DU-RHÔNE | |
14 49°05’59" 0°21’49"O CALVADOS | |
15 45°03’04" 2°40’07" E CANTAL | |
16 45°43’05" 0°12’06" E CHARENTE | |
17 45°46’51" 0°40’28"O CHARENTE-MARITIME | |
18 47°03’53" 2°29’28" E CHER | |
19 45°21’25" 1°52’37" E CORREZE | |
20 41°51’49" 8°59’17" E CORSE-DU-SUD | |
20 42°23’39" 9°12’23" E HAUTE-CORSE | |
21 47°25’29" 4°46’20" E CÔTE-D’OR | |
22 48°26’28" 2°51’51" O CÔTES-D’ARMOR | |
23 46°05’25" 2°01’08" E CREUSE | |
24 45°06’15" 0°44’29" E DORDOGNE | |
25 47°09’55" 6°21’42" E DOUBS | |
26 44°41’03" 5°10’05" E DROME | |
27 49°06’49" 0°59’46" E EURE | |
28 48°23’15" 1°22’13" E EURE-ET-LOIR | |
29 48°15’40" 4°03’32" O FINISTÈRE | |
30 43°59’36" 4°10’49" E GARD | |
31 43°21’31" 1°10’22" E HAUTE-GARONNE | |
32 43°41’34" 0°27’12" E GERS | |
33 44°49’31" 0°34’31" O GIRONDE | |
34 43°34’47" 3°22’02" E HÉRAULT | |
35 48°09’16" 1°38’19" O ILLE-ET-VILAINE | |
36 46°46’40" 1°34’33" E INDRE | |
37 47°15’29" 0°41’29" E INDRE-ET-LOIRE | |
38 45°15’48" 5°34’34" E ISÈRE | |
39 46°43’42" 5°41’52" E JURA | |
40 43°57’56" 0°47’02" O LANDES | |
41 47°37’00" 1°25’46" E LOIR-ET-CHER | |
42 45°43’37" 4°09’57" E LOIRE | |
43 45°07’41" 3°48’23" E HAUTE-LOIRE | |
44 47°21’41" 1°40’56" O LOIRE-ATLANTIQUE | |
45 47°54’43" 2°20’39" E LOIRET | |
46 44°37’27" 1°36’17" E LOT | |
47 44°22’03" 0°27’37" E LOT-ET-GARONNE | |
48 44°31’02" 3°30’01" E LOZÈRE | |
49 47°23’27" 0°33’51" O MAINE-ET-LOIRE | |
50 49°04’46" 1°19’39" O MANCHE | |
51 48°56’57" 4°14’19" E MARNE | |
52 48°06’34" 5°13’35" E HAUTE-MARNE | |
53 48°08’48" 0°39’29" O MAYENNE | |
54 48°47’13" 6°09’54" E MEURTHE-ET-MOSELLE | |
55 48°59’22" 5°22’54" E MEUSE | |
56 47°50’47" 2°48’36" O MORBIHAN | |
57 49°02’14" 6°39’48" E MOSELLE | |
58 47°06’55" 3°30’17" E NIÈVRE | |
59 50°26’50" 3°13’14" E NORD | |
60 49°24’37" 2°25’31" E OISE | |
61 48°37’25" 0°07’44" E ORNE | |
62 50°29’37" 2°17’19" E PAS-DE-CALAIS | |
63 45°43’33" 3°08’27" E PUY-DE-DÔME | |
64 43°15’24" 0°45’41" O PYRÉNÉES-ATLANTIQUES | |
65 43°03’11" 0°09’50" E HAUTES-PYRÉNÉES | |
66 42°36’00" 2°31’20" E PYRÉNÉES-ORIENTALES | |
67 48°40’15" 7°33’05" E BAS-RHIN | |
68 47°51’31" 7°16’27" E HAUT-RHIN | |
69 45°52’13" 4°38’29" E RHONE | |
70 47°38’28" 6°05’10" E HAUTE-SAÔNE | |
71 46°38’41" 4°32’32" E SAÔNE-ET-LOIRE | |
72 47°59’40" 0°13’20" E SARTHE | |
73 45°28’39" 6°26’37" E SAVOIE | |
74 46°02’04" 6°25’41" E HAUTE-SAVOIE | |
75 48°51’24" 2°20’32" E PARIS | |
76 49°39’18" 1°01’35" E SEINE-MARITIME | |
77 48°37’36" 2°56’00" E SEINE-ET-MARNE | |
78 48°48’54" 1°50’30" E YVELINES | |
79 46°33’20" 0°19’02" O DEUX-SÈVRES | |
80 49°57’29" 2°16’40" E SOMME | |
81 43°47’07" 2°09’58" E TARN | |
82 44°05’09" 1°16’55" E TARN-ET-GARONNE | |
83 43°27’38" 6°13’05" E VAR | |
84 43°59’38" 5°11’10" E VAUCLUSE | |
85 46°40’29" 1°17’52" O VENDÉE | |
86 46°33’50" 0°27’37" E VIENNE | |
87 45°53’30" 1°14’07" E HAUTE-VIENNE | |
88 48°11’48" 6°22’50" E VOSGES | |
89 47°50’23" 3°33’52" E YONNE | |
90 47°37’54" 6°55’43" E TERRITOIRE DE BELFORT | |
91 48°31’20" 2°14’35" E ESSONNE | |
92 48°50’50" 2°14’45" E HAUTS-DE-SEINE | |
93 48°55’03" 2°28’41" E SEINE-SAINT-DENIS | |
94 48°46’39" 2°28’08" E VAL-DE-MARNE | |
95 49°04’58" 2°07’52" E VAL-D’OISE |
# coding=utf-8 | |
""" | |
Requiert le fichier par departement depuis datagouv: https://www.data.gouv.fr/fr/datasets/donnees-relatives-a-lepidemie-du-covid-19/ | |
Affiche, par departement, le cumul des personnes hospitalisées avec présomption de COVID sur toute la période. | |
Requiert le fichier contenant la localisation des centres des departements ci-dessous | |
""" | |
from LatLon import string2latlon | |
import matplotlib.pyplot as plt | |
import time | |
import threading | |
import random | |
ps, codes = [], [] | |
def locDept(d): | |
for i in range(len(ps)): | |
if str(codes[i])==str(d): | |
return float(ps[i].lon), float(ps[i].lat) | |
return -1.,-1. | |
def getVirusMap(): | |
lons,lats=[],[] | |
with open("sursaud-covid19-quotidien-2020-03-20-19h44-feuille1.csv","r") as f: lines=f.readlines() | |
lines=lines[1:] | |
for l in lines: | |
s=l.split(",") | |
dat = s[1] | |
dep = s[0] | |
lon,lat = locDept(dep) | |
if lon>=0 and lat>=0 and len(s[5])>0: | |
mal = int(s[5]) | |
for i in range(mal): | |
lo = lon+random.uniform(-0.5,0.5) | |
la = lat+random.uniform(-0.5,0.5) | |
lons.append(lo) | |
lats.append(la) | |
return lons, lats | |
with open("centres_dept.txt","r") as f: | |
for l in f: | |
s = l.split("\t") | |
slat, slon = s[1], s[2] | |
slat+=" N" | |
slon=slon.replace('O',' W') | |
slon=slon.replace(' ',' ') | |
p = string2latlon(slat,slon,'d%°%m%’%S%" %H') | |
ps.append(p) | |
codes.append(s[0]) | |
lons = [float(p.lon) for p in ps] | |
lats = [float(p.lat) for p in ps] | |
BBox = (-5.3, 8.6, 42.4, 51.4) | |
print(BBox) | |
img = plt.imread('france.png') | |
fig, ax = plt.subplots(figsize = (8,7)) | |
# Paris et Marseille | |
vlons = (2.348338,5.410880) | |
vlats = (48.859292,43.325250) | |
vscat = ax.scatter(vlons, vlats, zorder=1, alpha= 0.9, c='r', s=10) | |
dscat = ax.scatter(lons, lats, zorder=1, alpha= 0.9, c='black', s=1) | |
tlons,tlats = getVirusMap() | |
scat = ax.scatter(tlons, tlats, zorder=1, alpha= 0.9, c='blue', s=10) | |
dbuglon, dbuglat = locDept("29") | |
ax.scatter((dbuglon,), (dbuglat,), zorder=1, alpha= 0.9, c='green', s=100) | |
ax.set_title('COVID hopitaux') | |
ax.set_xlim(BBox[0],BBox[1]) | |
ax.set_ylim(BBox[2],BBox[3]) | |
ax.imshow(img, zorder=0, extent = BBox, aspect= 'equal') | |
""" | |
def update(): | |
global lons | |
for i in range(10): | |
time.sleep(1) | |
xoff=float(i) | |
print(xoff) | |
newpts = [(lons[i]+xoff,lats[i]) for i in range(len(lons))] | |
scat.set_offsets(newpts) | |
plt.draw() | |
t = threading.Thread(target=update) | |
t.daemon=True | |
t.start() | |
""" | |
plt.show() |
Ok , j'arrive à lancer avec les fix de @LefrancoisJean (merci à lui) et avec Jupyter Notebook, mais
- quel est le fichier à utiliser car ils ont changé de nom , j'ai utilisé 'sursaud-covid19-quotidien.........csv
- j'ai utilisé votre image de la France mais le résultat global est pauvre ....
Je ne sais pas ce que vous vouliez faire apparaitre au depart , mais il me semble qu'avec votre code chaque fois qu'un département apparait dans le fichier vous ajoutez un point sur la carte , donc si un departement est présent 30 jours vous avez 30 points aleatoirement répartis d'où ce brouillard
Si vous vouliez faire apparaitre les départements en fonction d'un critère de nombre il faudrait faire un filtre et ne prendre qu'une fois le departement ) , mais peut etre n'ai je pas compris votre intention
Edit : autre idée commmunement utilisée danns tous les dashboard, faire un cercle proportionnel au nombre avec une liste des rayons en // des lat lon
Oui, le code n'est absolument pas une version "finalisée": il ne fait que mettre en place tous les éléments pour réaliser cet affichage, i.e. le fond de carte, les coordonnées GPS des départements, l'import du fichier de données, etc.
L'idée de base est de créer une animation jour par jour, car effectivement, tout afficher d'un coup n'est plus très utile au bout d'un moment.
Il y a encore des paramètres à régler pour améliorer la lisibilité: l'écart de la distribution "random" par département, peut-être aussi le calibrage des coordonnées GPS qui me semblent étrange... Mais le code n'est pas loin de cet objectif.
Bref, ce n'est qu'un débroussaillage, utile en tant que librairie pas en tant qu'application finalisée.
Merci, je ne le savais pas !