Skip to content

Commit

Permalink
Create categories with wind directions #83
Browse files Browse the repository at this point in the history
  • Loading branch information
AntoineAugusti committed Sep 18, 2018
1 parent 3d4d21a commit a158bbc
Show file tree
Hide file tree
Showing 4 changed files with 31 additions and 10 deletions.
6 changes: 6 additions & 0 deletions opendata/doc.yml
Original file line number Diff line number Diff line change
Expand Up @@ -96,6 +96,12 @@ components:
maximum: 360
description: Direction du vent, en degrés
example: 42
vent_direction_categorie:
type: string
nullable: true
description: Nom de la direction du vent. La direction nord-est est par exemple comprise entre 22,5 degrés et 67,5 degrés.
example: nord
enum: [nord, nord-est, est, sud-est, sud, sud-ouest, ouest, nord-ouest]
vent_force:
type: number
format: int32
Expand Down
1 change: 1 addition & 0 deletions opendata/sql/schema.sql
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ CREATE TABLE public.operations (
"latitude" numeric(7, 4),
"longitude" numeric(7, 4),
"vent_direction" smallint,
"vent_direction_categorie" varchar(10),
"vent_force" smallint,
"mer_force" smallint,
"date_heure_reception_alerte" timestamp with time zone not null,
Expand Down
20 changes: 10 additions & 10 deletions opendata/tests/files/expected_operations.csv
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
operation_id,type_operation,pourquoi_alerte,moyen_alerte,qui_alerte,categorie_qui_alerte,cross,departement,est_metropolitain,evenement,categorie_evenement,autorite,seconde_autorite,zone_responsabilite,latitude,longitude,vent_direction,vent_force,mer_force,date_heure_reception_alerte,date_heure_fin_operation,numero_sitrep,cross_sitrep,fuseau_horaire
-90465,DIV,,Téléphone fixe,SAMU,Autorité civile française à terre,Étel,Morbihan,True,Transport sanitaire île-continent,Accidents individuels à personnes,Préfet maritime,Préfet maritime,Eaux territoriales,47.6443,-3.4468,253,3,4,2018-01-30T09:22:00Z,2018-01-30T20:44:00Z,112,Étel 2018/112,Europe/Paris
-90341,SAR,,Balise de détresse,CROSS / MRCC,Autorité civile française à terre,Étel,Morbihan,True,Toutes fausses alertes,Fausses alertes,Préfet maritime,Préfet maritime,Port et accès,47.4983,-3.0967,289,5,4,2018-02-01T05:57:00Z,2018-02-01T09:10:00Z,121,Étel 2018/121,Europe/Paris
-90340,SAR,,Balise de détresse,CROSS / MRCC,Autorité civile française à terre,Étel,Charente-Maritime,True,Toutes fausses alertes,Fausses alertes,Préfet maritime,Préfet maritime,Port et accès,45.9283,-1.3967,299,5,5,2018-01-22T15:04:00Z,2018-01-22T17:06:00Z,85,Étel 2018/85,Europe/Paris
-90339,SAR,,Téléphone mobile à terre,CODIS / SDIS / CTA,Autorité civile française à terre,Étel,Vendée,True,Sans avarie inexpérience,Autres affaires nécessitant opération,Préfet maritime,Préfet maritime,Eaux territoriales,46.8842,-2.169,44,4,4,2018-02-04T14:05:00Z,2018-02-04T15:02:00Z,142,Étel 2018/142,Europe/Paris
-90105,DIV,,Téléphone mobile à terre,Témoin,Organisme ou personne privée,Corse,Corse-du-Sud,True,Rupture de mouillage,Autres affaires nécessitant opération,Préfet maritime,Préfet maritime,Eaux territoriales,41.6083,9.3417,290,4,4,2018-01-03T12:32:00Z,2018-01-05T07:35:00Z,3,Corse 2018/3,Europe/Paris
-89955,MAS,,VHF phonie,Navire impliqué,Navire à la mer,Étel,Loire-Atlantique,True,Avarie du système de propulsion,Avaries non suivies d'accident navire,Préfet maritime,Préfet maritime,Eaux territoriales,46.9333,-3,81,5,4,2018-01-08T18:57:00Z,2018-01-09T01:00:00Z,36,Étel 2018/36,Europe/Paris
3319950489,,Événement reconnu,VHF,Navire impliqué,Navire à la mer,Corse,,,Sans avarie en dérive,Autres affaires nécessitant opération,CROSS ou sous-CROSS,CROSS ou sous-CROSS,Responsabilité française,,,45,6,5,1995-12-30T16:19:00Z,1995-12-31T21:00:00Z,489,Corse 1995/489,Europe/Paris
4220020128,,Événement reconnu,Téléphone à terre,CORG / Gendarmerie nationale,Autorité militaire française à terre,La Réunion,,,Autre événement,Autres affaires nécessitant opération,CROSS ou sous-CROSS,CROSS ou sous-CROSS,Responsabilité étrangère,,,,,,2002-06-18T18:24:00Z,2002-06-19T12:00:00Z,128,La Réunion 2002/128,Indian/Reunion
6220010002,,Inquiétude,VHF,Navire impliqué,Navire à la mer,Nouvelle-Calédonie,Nouvelle-Calédonie,False,Plongée avec bouteille,Avaries non suivies d'accident navire,CROSS ou sous-CROSS,CROSS ou sous-CROSS,Eaux territoriales,,,220,3,3,2001-01-09T05:00:00Z,2001-01-09T07:25:00Z,2,Nouvelle-Calédonie 2001/2,Pacific/Noumea
operation_id,type_operation,pourquoi_alerte,moyen_alerte,qui_alerte,categorie_qui_alerte,cross,departement,est_metropolitain,evenement,categorie_evenement,autorite,seconde_autorite,zone_responsabilite,latitude,longitude,vent_direction,vent_direction_categorie,vent_force,mer_force,date_heure_reception_alerte,date_heure_fin_operation,numero_sitrep,cross_sitrep,fuseau_horaire
-90465,DIV,,Téléphone fixe,SAMU,Autorité civile française à terre,Étel,Morbihan,True,Transport sanitaire île-continent,Accidents individuels à personnes,Préfet maritime,Préfet maritime,Eaux territoriales,47.6443,-3.4468,253,ouest,3,4,2018-01-30T09:22:00Z,2018-01-30T20:44:00Z,112,Étel 2018/112,Europe/Paris
-90341,SAR,,Balise de détresse,CROSS / MRCC,Autorité civile française à terre,Étel,Morbihan,True,Toutes fausses alertes,Fausses alertes,Préfet maritime,Préfet maritime,Port et accès,47.4983,-3.0967,289,ouest,5,4,2018-02-01T05:57:00Z,2018-02-01T09:10:00Z,121,Étel 2018/121,Europe/Paris
-90340,SAR,,Balise de détresse,CROSS / MRCC,Autorité civile française à terre,Étel,Charente-Maritime,True,Toutes fausses alertes,Fausses alertes,Préfet maritime,Préfet maritime,Port et accès,45.9283,-1.3967,299,nord-ouest,5,5,2018-01-22T15:04:00Z,2018-01-22T17:06:00Z,85,Étel 2018/85,Europe/Paris
-90339,SAR,,Téléphone mobile à terre,CODIS / SDIS / CTA,Autorité civile française à terre,Étel,Vendée,True,Sans avarie inexpérience,Autres affaires nécessitant opération,Préfet maritime,Préfet maritime,Eaux territoriales,46.8842,-2.169,44,nord-est,4,4,2018-02-04T14:05:00Z,2018-02-04T15:02:00Z,142,Étel 2018/142,Europe/Paris
-90105,DIV,,Téléphone mobile à terre,Témoin,Organisme ou personne privée,Corse,Corse-du-Sud,True,Rupture de mouillage,Autres affaires nécessitant opération,Préfet maritime,Préfet maritime,Eaux territoriales,41.6083,9.3417,290,ouest,4,4,2018-01-03T12:32:00Z,2018-01-05T07:35:00Z,3,Corse 2018/3,Europe/Paris
-89955,MAS,,VHF phonie,Navire impliqué,Navire à la mer,Étel,Loire-Atlantique,True,Avarie du système de propulsion,Avaries non suivies d'accident navire,Préfet maritime,Préfet maritime,Eaux territoriales,46.9333,-3,81,est,5,4,2018-01-08T18:57:00Z,2018-01-09T01:00:00Z,36,Étel 2018/36,Europe/Paris
3319950489,,Événement reconnu,VHF,Navire impliqué,Navire à la mer,Corse,,,Sans avarie en dérive,Autres affaires nécessitant opération,CROSS ou sous-CROSS,CROSS ou sous-CROSS,Responsabilité française,,,45,nord-est,6,5,1995-12-30T16:19:00Z,1995-12-31T21:00:00Z,489,Corse 1995/489,Europe/Paris
4220020128,,Événement reconnu,Téléphone à terre,CORG / Gendarmerie nationale,Autorité militaire française à terre,La Réunion,,,Autre événement,Autres affaires nécessitant opération,CROSS ou sous-CROSS,CROSS ou sous-CROSS,Responsabilité étrangère,,,,,,,2002-06-18T18:24:00Z,2002-06-19T12:00:00Z,128,La Réunion 2002/128,Indian/Reunion
6220010002,,Inquiétude,VHF,Navire impliqué,Navire à la mer,Nouvelle-Calédonie,Nouvelle-Calédonie,False,Plongée avec bouteille,Avaries non suivies d'accident navire,CROSS ou sous-CROSS,CROSS ou sous-CROSS,Eaux territoriales,,,220,sud-ouest,3,3,2001-01-09T05:00:00Z,2001-01-09T07:25:00Z,2,Nouvelle-Calédonie 2001/2,Pacific/Noumea
14 changes: 14 additions & 0 deletions opendata/transformers/operations.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,11 @@ def transform(self, output):
df['fuseau_horaire'] = self.fuseau_horaire(df.cross)
df.insert(1, 'type_operation', self.type_operation(df.pourquoi_alerte))
df['pourquoi_alerte'] = self.pourquoi_alerte(df.pourquoi_alerte)
df.insert(
loc=df.columns.get_loc('vent_direction') + 1,
column='vent_direction_categorie',
value=self.vent_direction_categorie(df.vent_direction)
)
df['evenement'].replace(
to_replace='Plongée en bouteille',
value='Plongée avec bouteille',
Expand All @@ -34,6 +39,15 @@ def transform(self, output):

self.to_csv(df, output)

def vent_direction_categorie(self, series):
bins = [0, 22.5, 67.5, 112.5, 157.5, 202.5, 247.5, 292.5, 337.5, np.inf]
labels = [
'nord', 'nord-est', 'est', 'sud-est', 'sud',
'sud-ouest', 'ouest', 'nord-ouest', 'nord2'
]
return pd.cut(series, bins=bins, labels=labels) \
.replace('nord2', 'nord')

def numero_sitrep(self, row):
if pd.isna(row['numero_sitrep']):
# If operation_id: 2120050002
Expand Down

0 comments on commit a158bbc

Please sign in to comment.