Mercurial Hosting > traffic-intelligence
comparison python/pavement.py @ 458:28ff95845c65
update to include speed limit
author | Nicolas Saunier <nicolas.saunier@polymtl.ca> |
---|---|
date | Wed, 19 Feb 2014 17:46:26 -0500 |
parents | 95a8eb38d9a2 |
children | 16fe64136506 |
comparison
equal
deleted
inserted
replaced
457:95a8eb38d9a2 | 458:28ff95845c65 |
---|---|
1 #! /usr/bin/env python | 1 #! /usr/bin/env python |
2 '''Tools for processing and analyzing pavement marking data''' | 2 '''Tools for processing and analyzing pavement marking data''' |
3 | |
4 import utils | |
3 | 5 |
4 import numpy as np | 6 import numpy as np |
5 | 7 |
6 __metaclass__ = type | 8 __metaclass__ = type |
7 | 9 |
17 30: "Regionale", | 19 30: "Regionale", |
18 10: "Autoroute", | 20 10: "Autoroute", |
19 60: "Acces ressources", | 21 60: "Acces ressources", |
20 51: "Local 1", | 22 51: "Local 1", |
21 52: "Local 2", | 23 52: "Local 2", |
22 53: "Local 3" | 24 53: "Local 3", |
23 15: "Aut (PRN)", | 25 15: "Aut (PRN)", |
24 25: "Nat (PRN)", | 26 25: "Nat (PRN)", |
25 70: "Acces isolees", | 27 70: "Acces isolees", |
26 99: "Autres" | 28 99: "Autres" |
27 } | 29 } |
28 | |
29 def occ_max(a): | |
30 if a != []: | |
31 s = set(a) | |
32 l = list(s) | |
33 occ = [] | |
34 for i in range(len(l)): | |
35 b = 0 | |
36 for j in range(len(a)): | |
37 if a[j] == l[i]: | |
38 b += 1 | |
39 occ.append([l[i], b]) | |
40 nbre_occs = [] | |
41 for i in range(len(occ)): | |
42 nbre_occs.append(occ[i][1]) | |
43 return occ[nbre_occs.index(max(nbre_occs))][0] | |
44 else: | |
45 return "" | |
46 | 30 |
47 def caracteristiques(rtss, maintenanceLevel, rtssWeatherStation, fmr, paintType): | 31 def caracteristiques(rtss, maintenanceLevel, rtssWeatherStation, fmr, paintType): |
48 '''Computes characteristic data for the RTSS (class rtss) | 32 '''Computes characteristic data for the RTSS (class rtss) |
49 maintenanceLevel = pylab.csv2rec('C:\Users\Alexandre\Desktop\Projet_maitrise_recherche\BDD_access\\analyse_donnees_deneigement\\exigence_circuits.txt', delimiter = ';') | 33 maintenanceLevel = pylab.csv2rec('C:\Users\Alexandre\Desktop\Projet_maitrise_recherche\BDD_access\\analyse_donnees_deneigement\\exigence_circuits.txt', delimiter = ';') |
50 rtssWeatherStation = pylab.csv2rec('C:\Users\Alexandre\Desktop\Projet_maitrise_recherche\stations_environnement_canada\\rtssWeatherStation\juste_pour_rtss_avec_donnees_entretien_hiv\\rtssWeatherStation_EC3.txt', delimiter = ',') | 34 rtssWeatherStation = pylab.csv2rec('C:\Users\Alexandre\Desktop\Projet_maitrise_recherche\stations_environnement_canada\\rtssWeatherStation\juste_pour_rtss_avec_donnees_entretien_hiv\\rtssWeatherStation_EC3.txt', delimiter = ',') |
67 y_moy = rtssWeatherStation['y_moy'][i] | 51 y_moy = rtssWeatherStation['y_moy'][i] |
68 else: | 52 else: |
69 x_moy, y_moy = '','' | 53 x_moy, y_moy = '','' |
70 | 54 |
71 # determination info fmr | 55 # determination info fmr |
72 age_revtm, classe_fonct, type_revtm, milieu, djma, pourc_camions = [], [], [], [], [], [] | 56 age_revtm, classe_fonct, type_revtm, milieu, djma, pourc_camions, vit_max = [], [], [], [], [], [], [] |
73 if rtss.id in fmr['rtss_debut']: | 57 if rtss.id in fmr['rtss_debut']: |
74 for i in range(len(fmr)): | 58 for i in range(len(fmr)): |
75 if fmr['rtss_debut'][i] == rtss.id: | 59 if fmr['rtss_debut'][i] == rtss.id: |
76 age_revtm.append(fmr['age_revtm'][i]) | 60 age_revtm.append(fmr['age_revtm'][i]) |
77 classe_fonct.append(fmr['des_clasf_fonct'][i]) | 61 classe_fonct.append(fmr['des_clasf_fonct'][i]) |
78 type_revtm.append(fmr['des_type_revtm'][i]) | 62 type_revtm.append(fmr['des_type_revtm'][i]) |
79 milieu.append(fmr['des_cod_mil'][i]) | 63 milieu.append(fmr['des_cod_mil'][i]) |
80 djma.append(fmr['val_djma'][i]) | 64 djma.append(fmr['val_djma'][i]) |
81 pourc_camions.append(fmr['val_pourc_camns'][i]) | 65 pourc_camions.append(fmr['val_pourc_camns'][i]) |
82 age_revtm = occ_max(age_revtm) | 66 vit_max.append(fmr['val_limt_vitss'][i]) |
83 classe_fonct = occ_max(classe_fonct) | 67 age_revtm = utils.mostCommon(age_revtm) |
84 type_revtm = occ_max(type_revtm) | 68 classe_fonct = utils.mostCommon(classe_fonct) |
85 milieu = occ_max(milieu) | 69 type_revtm = utils.mostCommon(type_revtm) |
86 djma = occ_max(djma) | 70 milieu = utils.mostCommon(milieu) |
87 pourc_camions = occ_max(pourc_camions) | 71 djma = utils.mostCommon(djma) |
72 vit_max = utils.mostCommon(vit_max) | |
73 if vit_max < 0: | |
74 vit_max = '' | |
75 pourc_camions = utils.mostCommon(pourc_camions) | |
88 if pourc_camions == "" or pourc_camions < 0: | 76 if pourc_camions == "" or pourc_camions < 0: |
89 djma_camions = "" | 77 djma_camions = "" |
90 else: | 78 else: |
91 djma_camions = pourc_camions*djma/100 | 79 djma_camions = pourc_camions*djma/100 |
92 else: | 80 else: |
93 age_revtm, classe_fonct, type_revtm, milieu, djma, djma_camions = '','','','','','' | 81 age_revtm, classe_fonct, type_revtm, milieu, djma, djma_camions, vit_max = '','','','','','','' |
94 | 82 |
95 # determination type peinture | 83 # determination type peinture |
96 peinture_rd, peinture_rg, peinture_cl = [], [], [] | 84 peinture_rd, peinture_rg, peinture_cl = [], [], [] |
97 peinture_lrd, peinture_lrg, peinture_lc = 0,0,0 | 85 peinture_lrd, peinture_lrg, peinture_lc = 0,0,0 |
98 if rtss.id in paintType['rtss_debut_orig']: | 86 if rtss.id in paintType['rtss_debut_orig']: |
99 for i in range(len(paintType)): | 87 for i in range(len(paintType)): |
100 if paintType['rtss_debut_orig'][i] == rtss.id: | 88 if paintType['rtss_debut_orig'][i] == rtss.id: |
101 peinture_rd.append((paintType['peinture_rd'][i])) | 89 peinture_rd.append((paintType['peinture_rd'][i])) |
102 peinture_rg.append((paintType['peinture_rg'][i])) | 90 peinture_rg.append((paintType['peinture_rg'][i])) |
103 peinture_cl.append((paintType['peinture_cl'][i])) | 91 peinture_cl.append((paintType['peinture_cl'][i])) |
104 peinture_lrd = occ_max(peinture_rd) | 92 peinture_lrd = utils.mostCommon(peinture_rd) |
105 peinture_lrg = occ_max(peinture_rg) | 93 peinture_lrg = utils.mostCommon(peinture_rg) |
106 peinture_lc = occ_max(peinture_cl) | 94 peinture_lc = utils.mostCommon(peinture_cl) |
107 else: | 95 else: |
108 peinture_lrd, peinture_lrg, peinture_lc = '','','' | 96 peinture_lrd, peinture_lrg, peinture_lc = '','','' |
109 | 97 |
110 return (exigence, x_moy, y_moy, age_revtm, classe_fonct, type_revtm, milieu, djma, djma_camions, peinture_lrd, peinture_lrg, peinture_lc) | 98 return (exigence, x_moy, y_moy, age_revtm, classe_fonct, type_revtm, milieu, djma, djma_camions, vit_max, peinture_lrd, peinture_lrg, peinture_lc) |
111 | 99 |
112 def winterMaintenanceIndicators(data, startDate, endDate, circuitReference, snowThreshold): | 100 def winterMaintenanceIndicators(data, startDate, endDate, circuitReference, snowThreshold): |
113 '''Computes several winter maintenance indicators | 101 '''Computes several winter maintenance indicators |
114 data = entretien_hivernal = pylab.csv2rec('C:\Users\Alexandre\Documents\Cours\Poly\Projet\mesures_entretien_hivernal\mesures_deneigement.txt', delimiter = ',')''' | 102 data = entretien_hivernal = pylab.csv2rec('C:\Users\Alexandre\Documents\Cours\Poly\Projet\mesures_entretien_hivernal\mesures_deneigement.txt', delimiter = ',')''' |
115 import datetime | 103 import datetime |