Commit cd766a3f authored by JonathanMM's avatar JonathanMM

Merge branch 'associationStation' into 'master'

Association des stations à une commune

See merge request !5
parents 91f47256 e2ed0c9c
......@@ -8,4 +8,5 @@ script/fixStation.py
*.db
.vscode
templates_c/*
!templates_c/README.md
\ No newline at end of file
!templates_c/README.md
script/fixInseeStation.py
......@@ -761,36 +761,18 @@ function getDataConsoBikeResume($filtre, $periode)
function getDataConso($idConso, $longitude = null, $latitude = null)
{
global $pdo;
$whereCoord = '';
$whereCoord = null;
if(!is_null($longitude) && !is_null($latitude))
{
$whereCoord = ' AND '.implode(' AND ', array(
$whereCoord = implode(' AND ', array(
'stations.longitude >= '.($longitude - 0.015),
'stations.longitude <= '.($longitude + 0.015),
'stations.latitude >= '.($latitude - 0.01),
'stations.latitude <= '.($latitude + 0.01)
));
}
$requete = $pdo->query('SELECT * FROM status inner join `stations` on stations.code = status.code WHERE idConso = '.$idConso.$whereCoord.' order by status.code asc');
$data = $requete->fetchAll(PDO::FETCH_ASSOC);
$retour = [];
foreach($data as $station)
{
$retour[] = array(
'code' => $station['code'],
'codeStr' => displayCodeStation($station['code']),
'name' => $station['name'],
'dateOuverture' => is_null($station['dateOuverture']) ? 'Non ouvert' : $station['dateOuverture'],
'state' => $station['state'],
'nbBike' => $station['nbBike'],
'nbEbike' => $station['nbEBike'],
'nbFreeEDock' => $station['nbFreeEDock'],
'nbEDock' => $station['nbEDock'],
'latitude' => $station['latitude'],
'longitude' => $station['longitude']
);
}
return array('data' => $retour);
return array('data' => getStatusByIdConso($idConso, $whereCoord));
}
function getDataStation($codeStation)
......@@ -905,13 +887,12 @@ function getCommunesCarte($idConso)
$nombre_etat[$etat]++;
//récupération de la commune correspondant à la station (d'après son numéro)
$res = $pdo->query('SELECT insee FROM tranche WHERE debut <= "'.$station['code'].'" AND fin >= "'.$station['code'].'"');
$ligne = $res->fetch();
$inseeCommune = getCommuneStation($station['code']);
//ajout à la liste des communes
if(!in_array($ligne['insee'],$liste_communes))
if(!is_null($inseeCommune) && !in_array($inseeCommune,$liste_communes))
{
$liste_communes[] = $ligne['insee'];
$liste_communes[] = $inseeCommune;
}
//texte en fonction du nombre de bornes
......@@ -983,7 +964,7 @@ function getCommunesCarte($idConso)
'texte'=>'Stations en service ('.$nombre_etat[BORNES_OUI+ETAT_OUVERTE].')');
}
$svg = genererCarteSVG(800, 500, $liste_communes, '', '', '', $objets);
$svg = genererCarteSVG(800, 500, $liste_communes, 'commune.php?insee=', '', '', $objets);
return $svg;
}
......
......@@ -223,10 +223,12 @@ function genererCarteSVG($largeur_carte=800,$hauteur_carte=600,$filtre=0,
//ajout du lien s'il est défini
if($liens!='')
{
$svg.="\t\t\t".'<a xlink:href="'.$liens.'_'.$ligne['insee'].'_'.$ligne['nom'].'">'."\n";
$svg.="\t\t\t".'<a xlink:href="'.$liens.$ligne['insee'].'">'."\n";
//ajout de l'info-bulle si elle est définie (il faut que le lien soit défini)
$svg .= "\t\t\t".'<title>'.$ligne['nom_complet'];
if(isset($info[$ligne['insee']]))
$svg.="\t\t\t".'<title>'.$ligne['nom_complet'].' '.$info[$ligne['insee']].'</title>'."\n";
$svg .= ' '.$info[$ligne['insee']];
$svg .= '</title>'."\n";
}
//ajout du tracé de la commune
$svg.="\t\t\t".'<path ';
......@@ -255,10 +257,12 @@ function genererCarteSVG($largeur_carte=800,$hauteur_carte=600,$filtre=0,
//ajout du lien s'il est défini
if($liens!='')
{
$svg.="\t\t\t".'<a xlink:href="'.$liens.'_'.$ligne['insee'].'_'.$ligne['nom'].'">'."\n";
$svg.="\t\t\t".'<a xlink:href="'.$liens.$ligne['insee'].'">'."\n";
//ajout de l'info-bulle si elle est définie (il faut que le lien soit défini)
$svg .= "\t\t\t".'<title>'.$ligne['nom_complet'];
if(isset($info[$ligne['insee']]))
$svg.="\t\t\t".'<title>'.$ligne['nom_complet'].' '.$info[$ligne['insee']].'</title>'."\n";
$svg .= ' '.$info[$ligne['insee']];
$svg .= '</title>'."\n";
}
//ajout du tracé de la commune
$svg.="\t\t\t".'<path ';
......
<?php
require_once('config.php');
include_once('functions.php');
require_once('libs/Smarty.class.php');
//récupération de l'argument "commune", 0 par défaut
if(!isset($_GET['commune'])) $commune=0;
else $commune=intval($_GET['commune']);
if(!isset($_GET['insee']) || intval($_GET['insee']) == 0)
{
header('location: index.php');
exit();
}
//récupération doe la liste des tranches de numéros associés à la commune
$requete=$pdo->query('SELECT debut, fin FROM tranche WHERE insee="'.$commune.'" ORDER BY debut');
$tranches=$requete->fetchAll(PDO::FETCH_ASSOC);
$insee = intval($_GET['insee']);
//si aucune tranche n'est trouvée, commune 0
if(!count($tranches))
{
$commune=0;
$requete=$pdo->query('SELECT debut, fin FROM tranche WHERE insee="0" ORDER BY debut');
$tranches=$requete->fetchAll(PDO::FETCH_ASSOC);
}
//On regarde si la commune existe
$requete = $pdo->query('SELECT * FROM commune WHERE insee = '.$insee);
$commune = $requete->fetch();
//titre de la page
if($commune==0) echo '<h1>Stations Vélib non associées à une commune</h1>';
else
{
$requete=$pdo->query('SELECT nom_complet FROM commune WHERE insee="'.$commune.'"');
$ligne=$requete->fetch(PDO::FETCH_ASSOC);
$nom=$ligne['nom_complet'];
echo '<h1>Stations Vélib — Commune '.$commune.' — '.$nom.'</h1>';
}
if($commune === false)
{
//Elle n'existe pas
header('location: index.php');
exit();
}
$smarty = new Smarty();
$smarty->assign(array(
'communeInsee' => $insee,
'communeNom' => $commune['nom_complet']
));
//On récupère les stations de la tranche
$requete = $pdo->query('SELECT debut, fin FROM tranche WHERE insee = '.$insee.' ORDER BY debut');
$tranches = $requete->fetch();
$debutTranche = $tranches['debut'];
$finTranche = $tranches['fin'];
//Filtre 24 heures
$hier = new DateTime("-1day");
$filtreDate = $hier->format('Y-m-d H:i:s');
//Dernière conso
$requete = $pdo->query('SELECT * FROM `statusConso` where nbStation Is not null and date >= "'.$filtreDate.'" Order by id desc limit 0,1');
$requete = $pdo->query('SELECT id, date FROM `statusConso` WHERE nbStation IS NOT NULL AND date >= "'.$filtreDate.'" ORDER BY id DESC LIMIT 0,1');
$conso = $requete->fetch();
$liste_stations=array();
//récupération des stations de chaque tranche
foreach($tranches AS $tr)
{
echo '<h2>Stations dans la tranche '.$tr['debut'].' à '.$tr['fin'].'</h2>';
$requete=$pdo->query('SELECT stations.code, name, latitude, longitude, state, nbBike, nbEBike, nbFreeEDock, nbEDock, adresse FROM status inner join `stations` on stations.code = status.code WHERE idConso = '.$conso['id'].' AND stations.code BETWEEN "'.$tr['debut'].'" AND "'.$tr['fin'].'" ORDER BY stations.code');
$resultat=$requete->fetchAll(PDO::FETCH_ASSOC);
//s'il y a des stations, affichage des infos sous forme de tableau
if(count($resultat))
{
echo '<table border="1"><tr><th>Station</th><th>Nom</th><th>Latitude</th><th>Longitude</th><th>État</th><th>Vélos</th><th>VAE</th><th>Libres</th><th>Bornes</th><th>Adresse</th></tr>';
foreach($resultat AS $ligne)
{
echo '<tr>';
foreach ($ligne AS $value)
{
echo '<td>'.$value.'</td>';
}
echo '</tr>';
//ajout de la station à la liste;
$liste_stations[$ligne['code']]=$ligne;
}
echo '</table>';
}
else echo '<p>Aucune station dans cette tranche</p>';
}
$couleur_dept=array(75=>'Khaki',92=>'SkyBlue',93=>'LightCoral',94=>'GreenYellow',
77=>'SkyBlue',91=>'LightCoral',78=>'Khaki',95=>'GreenYellow');
$dept=floor($commune/1000);
if(isset($couleur_dept[$dept])) $couleur_commune=$couleur_dept[$dept];
else $couleur_commune='gray';
$couleur_etat=array('mediumvioletred','darkred','slateblue',10=>'indigo','darkorange','darkgreen');
$objets=array();
foreach($liste_stations AS $station)
{
switch($station['state'])
{
case 'Work in progress': $etat=1; break;
case 'Operative': $etat=2; break;
default: echo $station['state']; $etat=0;
}
if($station['nbEDock']!=0) $etat+=10;
//texte en fonction du nombre de bornes
switch($station['nbEDock'])
{
case 0: $s_info2='aucune borne'; break;
case 1: $s_info2='1 borne'; break;
default: $s_info2=$station['nbEDock'].' bornes'; break;
}
//forme en fonction de l'état annoncé 0=inconnu, 1=WIP, 2=Active
$s_pie='';
$s_info3='';
switch($etat)
{
case 0:
case 10:
$s_point='rond';
$s_taille=6;
$s_angle=0;
$s_info1='État inconnu';
break;
case 1:
case 11:
$s_point='triangle';
$s_taille=8;
$s_angle=0;
$s_info1='En travaux';
break;
case 2:
case 12:
if($station['nbEDock'])
{
//si station ouverte avec bornes, diagramme en camembert
$s_point='pie';
$s_pie=array($station['nbEDock'],$station['nbBike'],$station['nbEBike'],$station['nbFreeEDock']);
//la taille dépend du nombre de bornes
$s_taille=6*sqrt($station['nbEDock']);
//ajout dans l'info-bulle du nombre de places par nature
if($station['nbBike']>1) $s_info3.="\n".$station['nbBike'].' vélos disponibles';
else if($station['nbBike']==1) $s_info3.="\n".$station['nbBike'].' vélo disponible';
if($station['nbEBike']>1) $s_info3.="\n".$station['nbEBike'].' électriques disponibles';
else if($station['nbEBike']==1) $s_info3.="\n".$station['nbEBike'].' électrique disponible';
if($station['nbFreeEDock']>1) $s_info3.="\n".$station['nbFreeEDock'].' places libres';
else if($station['nbFreeEDock']==1) $s_info3.="\n".$station['nbFreeEDock'].' place libre';
}
else
{
$s_point='carre';
$s_taille=6;
}
$s_angle=45;
$s_info1='En service';
break;
}
$objets[]=array(
'nature'=>'point',
'point'=>$s_point,
'pie'=>$s_pie,
'taille'=>$s_taille,
'angle'=>$s_angle,
'couleur'=>$couleur_etat[$etat],
'lon'=>$station['longitude'],
'lat'=>$station['latitude'],
'lien'=>'station.php?code='.$station['code'],
'info'=>'Station '.sprintf('%05d',$station['code'])."\n".$station['name']."\n".$s_info1.' - '.$s_info2.$s_info3
);
}
$svg=genererCarteSvg(800,600,$commune,'','',array($commune=>$couleur_commune),$objets);
echo $svg;
\ No newline at end of file
$idConso = $conso['id'];
$smarty->assign(array(
'dateDerniereConso' => (new DateTime($conso['date']))->format('d/m/Y à H:i')
));
//Stations
$stations = getStatusByIdConso($idConso, 'stations.code >= '.$debutTranche.' AND stations.code <= '.$finTranche);
$nbStation = 0;
$nbStationDetecte = 0;
$nbBike = 0;
$nbEbike = 0;
$nbEdock = 0;
$nbFreeEdock = 0;
foreach($stations as $station)
{
if($station['state'] == 'Operative')
$nbStation++;
if($station['nbEDock'] > 0 && ($station['nbBike'] + $station['nbEbike'] + $station['nbFreeEDock']) > 0)
$nbStationDetecte++;
$nbBike += $station['nbBike'];
$nbEbike += $station['nbEbike'];
$nbEdock += $station['nbEDock'];
$nbFreeEdock += $station['nbFreeEDock'];
}
$smarty->assign(array(
'nbStation' => $nbStation,
'nbStationDetecte' => $nbStationDetecte,
'nbBike' => $nbBike,
'nbEbike' => $nbEbike,
'nbEDock' => $nbEdock,
'nbFreeEDock' => $nbFreeEdock,
'stations' => $stations
));
$smarty->display('commune.tpl');
exit();
?>
\ No newline at end of file
{include file='header.tpl'}
<header>
<h1>Vélib Stats (site non officiel) - {$communeNom}</h1>
<nav>
<a href="index.php">&lt; Retour à l'accueil</a>
</nav>
</header>
<div id="content">
<div id="statsConsoArea">
<table id="statsConso">
<tr>
<th colspan="2">Stations ouvertes</th>
<th colspan="2">Vélos disponibles</th>
<th colspan="2">Bornes</th>
</tr>
<tr>
<td>{$nbStation}</td>
<td>{$nbStationDetecte}</td>
<td>{$nbBike}</td>
<td>{$nbEbike}</td>
<td>{$nbFreeEDock}</td>
<td>{$nbEDock}</td>
</tr>
<tr>
<td><abbr title="Stations affichées comme étant ouverte">annoncées</abbr></td>
<td><abbr title="Stations avec un nombre de bornes positifs avec au moins un vélo ou une borne libre">détectées</abbr></td>
<td>mécaniques</td>
<td>électriques</td>
<td>libres</td>
<td>totales</td>
</tr>
</table>
<i>Dernière mise à jour : {$dateDerniereConso}</i>
</div>
<h2>Stations</h2>
Fitrer : État
<select id="filtreEtat">
<option value="toutes">Toutes</option>
<option value="ouverte" selected>Ouverte</option>
<option value="travaux">En travaux</option>
</select>
<table id="stations">
<thead>
<tr>
<th>Code</th>
<th>Nom</th>
<th>Date d'ouverture</th>
<th>Statut</th>
<th>Vélos mécaniques dispo</th>
<th>Vélos électriques dispo</th>
<th>Bornes libres</th>
</tr>
</thead>
<tbody>
{foreach $stations as $station}
<tr>
<td><a href="station.php?code={$station.code}">{$station.codeStr}</a></td>
<td><a href="station.php?code={$station.code}">{$station.name}</a></td>
<td>{$station.dateOuverture}</td>
<td>{if $station.state eq 'Operative' and $station.nbEDock gt 0}Ouverte{else}En travaux{/if}</td>
<td>{$station.nbBike}</td>
<td>{$station.nbEbike}</td>
<td>{$station.nbFreeEDock}/{$station.nbEDock}</td>
</tr>
{/foreach}
</tbody>
</table>
<script type="text/javascript">
var codeStation = -1;
</script>
<script type="application/javascript">
function filtreDataTable()
{
var valeur = $("#filtreEtat").val();
var dt = $('#stations').DataTable();
switch (valeur) {
case "ouverte":
dt.column(3).search("Ouverte").draw();
break;
case "travaux":
dt.column(3).search("En travaux").draw();
break;
default:
dt.column(3).search("").draw();
break;
}
}
$(document).ready( function () {
var dt = $('#stations').DataTable({
language: dtTraduction
});
filtreDataTable();
$("#filtreEtat").change(filtreDataTable);
recupererCarte();
});
</script>
{include file="credits.tpl"}
</div>
{include file="footer.tpl"}
\ No newline at end of file
<?php
require_once('config.php');
include_once('functions.php');
//récupération de l'argument "commune", 0 par défaut
if(!isset($_GET['commune'])) $commune=0;
else $commune=intval($_GET['commune']);
//récupération doe la liste des tranches de numéros associés à la commune
$requete=$pdo->query('SELECT debut, fin FROM tranche WHERE insee="'.$commune.'" ORDER BY debut');
$tranches=$requete->fetchAll(PDO::FETCH_ASSOC);
//si aucune tranche n'est trouvée, commune 0
if(!count($tranches))
{
$commune=0;
$requete=$pdo->query('SELECT debut, fin FROM tranche WHERE insee="0" ORDER BY debut');
$tranches=$requete->fetchAll(PDO::FETCH_ASSOC);
}
//titre de la page
if($commune==0) echo '<h1>Stations Vélib non associées à une commune</h1>';
else
{
$requete=$pdo->query('SELECT nom_complet FROM commune WHERE insee="'.$commune.'"');
$ligne=$requete->fetch(PDO::FETCH_ASSOC);
$nom=$ligne['nom_complet'];
echo '<h1>Stations Vélib — Commune '.$commune.' — '.$nom.'</h1>';
}
//Filtre 24 heures
$hier = new DateTime("-1day");
$filtreDate = $hier->format('Y-m-d H:i:s');
//Dernière conso
$requete = $pdo->query('SELECT * FROM `statusConso` where nbStation Is not null and date >= "'.$filtreDate.'" Order by id desc limit 0,1');
$conso = $requete->fetch();
$liste_stations=array();
//récupération des stations de chaque tranche
foreach($tranches AS $tr)
{
echo '<h2>Stations dans la tranche '.$tr['debut'].' à '.$tr['fin'].'</h2>';
$requete=$pdo->query('SELECT stations.code, name, latitude, longitude, state, nbBike, nbEBike, nbFreeEDock, nbEDock, adresse FROM status inner join `stations` on stations.code = status.code WHERE idConso = '.$conso['id'].' AND stations.code BETWEEN "'.$tr['debut'].'" AND "'.$tr['fin'].'" ORDER BY stations.code');
$resultat=$requete->fetchAll(PDO::FETCH_ASSOC);
//s'il y a des stations, affichage des infos sous forme de tableau
if(count($resultat))
{
echo '<table border="1"><tr><th>Station</th><th>Nom</th><th>Latitude</th><th>Longitude</th><th>État</th><th>Vélos</th><th>VAE</th><th>Libres</th><th>Bornes</th><th>Adresse</th></tr>';
foreach($resultat AS $ligne)
{
echo '<tr>';
foreach ($ligne AS $value)
{
echo '<td>'.$value.'</td>';
}
echo '</tr>';
//ajout de la station à la liste;
$liste_stations[$ligne['code']]=$ligne;
}
echo '</table>';
}
else echo '<p>Aucune station dans cette tranche</p>';
}
$couleur_dept=array(75=>'Khaki',92=>'SkyBlue',93=>'LightCoral',94=>'GreenYellow',
77=>'SkyBlue',91=>'LightCoral',78=>'Khaki',95=>'GreenYellow');
$dept=floor($commune/1000);
if(isset($couleur_dept[$dept])) $couleur_commune=$couleur_dept[$dept];
else $couleur_commune='gray';
$couleur_etat=array('mediumvioletred','darkred','slateblue',10=>'indigo','darkorange','darkgreen');
$objets=array();
foreach($liste_stations AS $station)
{
switch($station['state'])
{
case 'Work in progress': $etat=1; break;
case 'Operative': $etat=2; break;
default: echo $station['state']; $etat=0;
}
if($station['nbEDock']!=0) $etat+=10;
//texte en fonction du nombre de bornes
switch($station['nbEDock'])
{
case 0: $s_info2='aucune borne'; break;
case 1: $s_info2='1 borne'; break;
default: $s_info2=$station['nbEDock'].' bornes'; break;
}
//forme en fonction de l'état annoncé 0=inconnu, 1=WIP, 2=Active
$s_pie='';
$s_info3='';
switch($etat)
{
case 0:
case 10:
$s_point='rond';
$s_taille=6;
$s_angle=0;
$s_info1='État inconnu';
break;
case 1:
case 11:
$s_point='triangle';
$s_taille=8;
$s_angle=0;
$s_info1='En travaux';
break;
case 2:
case 12:
if($station['nbEDock'])
{
//si station ouverte avec bornes, diagramme en camembert
$s_point='pie';
$s_pie=array($station['nbEDock'],$station['nbBike'],$station['nbEBike'],$station['nbFreeEDock']);
//la taille dépend du nombre de bornes
$s_taille=6*sqrt($station['nbEDock']);
//ajout dans l'info-bulle du nombre de places par nature
if($station['nbBike']>1) $s_info3.="\n".$station['nbBike'].' vélos disponibles';
else if($station['nbBike']==1) $s_info3.="\n".$station['nbBike'].' vélo disponible';
if($station['nbEBike']>1) $s_info3.="\n".$station['nbEBike'].' électriques disponibles';
else if($station['nbEBike']==1) $s_info3.="\n".$station['nbEBike'].' électrique disponible';
if($station['nbFreeEDock']>1) $s_info3.="\n".$station['nbFreeEDock'].' places libres';
else if($station['nbFreeEDock']==1) $s_info3.="\n".$station['nbFreeEDock'].' place libre';
}
else
{
$s_point='carre';
$s_taille=6;
}
$s_angle=45;
$s_info1='En service';
break;
}
$objets[]=array(
'nature'=>'point',
'point'=>$s_point,
'pie'=>$s_pie,
'taille'=>$s_taille,
'angle'=>$s_angle,
'couleur'=>$couleur_etat[$etat],
'lon'=>$station['longitude'],
'lat'=>$station['latitude'],
'lien'=>'station.php?code='.$station['code'],
'info'=>'Station '.sprintf('%05d',$station['code'])."\n".$station['name']."\n".$s_info1.' - '.$s_info2.$s_info3
);
}
$svg=genererCarteSvg(800,600,$commune,'','',array($commune=>$couleur_commune),$objets);
echo $svg;
\ No newline at end of file
<?php
include('carte.php');
include_once('carte.php');
function displayCodeStation($code)
{
......@@ -8,4 +8,44 @@ function displayCodeStation($code)
return $code;
}
function getCommuneStation($codeStation)
{
global $pdo;
$res = $pdo->query('SELECT insee FROM tranche WHERE debut <= '.$codeStation.' AND fin >= '.$codeStation);
$ligne = $res->fetch();
if(is_null($ligne))
return null;
return $ligne['insee'];
}
function getStatusByIdConso($idConso, $filtreWhere = null)
{
global $pdo;
$requete = $pdo->query('SELECT * FROM status INNER JOIN `stations` ON stations.code = status.code WHERE idConso = '.$idConso.
(is_null($filtreWhere) ? '' : ' AND ('.$filtreWhere.')').' ORDER BY status.code ASC');
if($requete === false)
return null;
$data = $requete->fetchAll(PDO::FETCH_ASSOC);
$retour = [];
foreach($data as $station)
{
$retour[] = array(
'code' => $station['code'],
'codeStr' => displayCodeStation($station['code']),
'name' => $station['name'],
'dateOuverture' => is_null($station['dateOuverture']) ? 'Non ouvert' : $station['dateOuverture'],
'state' => $station['state'],
'nbBike' => $station['nbBike'],
'nbEbike' => $station['nbEBike'],
'nbFreeEDock' => $station['nbFreeEDock'],
'nbEDock' => $station['nbEDock'],
'latitude' => $station['latitude'],
'longitude' => $station['longitude']
);
}
return $retour;
}
?>
\ No newline at end of file
......@@ -10,7 +10,8 @@ def creerStationTable(c):
`longitude` decimal(16,14) NOT NULL,
`type` varchar(256) NOT NULL,
`dateOuverture` date DEFAULT NULL,
`adresse` text
`adresse` text,
`insee` int(5) DEFAULT NULL
);
''')
......@@ -23,13 +24,13 @@ def creerStationData(conn, mysql):
c = conn.cursor()
requete = mysql.cursor()
requete.execute('''
SELECT code, name, latitude, longitude, type, dateOuverture, adresse
SELECT code, name, latitude, longitude, type, dateOuverture, adresse, insee
FROM stations
''')
stations = requete.fetchall()
for station in stations:
c.execute('INSERT INTO stations (code, name, latitude, longitude, type, dateOuverture, adresse) VALUES \
('+str(station[0])+', "'+str(station[1])+'", '+str(station[2])+', '+str(station[3])+', "'+str(station[4])+'", '+val(station[5])+', "'+str(station[6])+'")')
c.execute('INSERT INTO stations (code, name, latitude, longitude, type, dateOuverture, adresse, insee) VALUES \
('+str(station[0])+', "'+str(station[1])+'", '+str(station[2])+', '+str(station[3])+', "'+str(station[4])+'", '+val(station[5])+', "'+str(station[6])+'", '+val(station[7])+')')
conn.commit()
def creerDumpData(dateDebut):
......
import urllib.request, json, os
import pymysql
from config import getMysqlConnection
def getAdresse(lat, lon):
urlBAN = 'https://api-adresse.data.gouv.fr/reverse/?lat='+str(lat)+'&lon='+str(lon)
......@@ -10,4 +12,11 @@ def getAdresse(lat, lon):
adresse = data['features'][0]['properties']['label']
os.remove(tmpFileName)
return adresse
\ No newline at end of file
return adresse
def getInsee(codeStation):
mysql = getMysqlConnection()
requete = mysql.cursor()
requete.execute('SELECT insee FROM tranche WHERE debut <= '+str(codeStation)+' AND fin >= '+str(codeStation))
tranche = requete.fetchone()
return tranche[0]
\ No newline at end of file
import urllib.request, json, os, pymysql
from datetime import datetime
from config import getMysqlConnection, getURLVelib
from adresseLib import getAdresse
from adresseLib import getAdresse, getInsee
def getAllStation():
mysql = getMysqlConnection()
......@@ -48,8 +48,8 @@ def getAllStation():
else:
strDateOuverture = 'CURDATE()'
requete = mysql.cursor()
requete.execute('INSERT INTO stations (code, name, longitude, latitude, type, dateOuverture, adresse) VALUES \
('+str(codeStation)+', "'+str(infoStation['name'])+'", '+str(longitude)+', '+str(latitude)+', "'+str(infoStation['type'])+'", '+strDateOuverture+', "'+getAdresse(latitude, longitude)+'")')
requete.execute('INSERT INTO stations (code, name, longitude, latitude, type, dateOuverture, adresse, insee) VALUES \
('+str(codeStation)+', "'+str(infoStation['name'])+'", '+str(longitude)+', '+str(latitude)+', "'+str(infoStation['type'])+'", '+strDateOuverture+', "'+getAdresse(latitude, longitude)+'", '+str(getInsee(codeStation))+')')
stations.append(codeStation)
#Et on prend les infos de l'état actuel de la station
......
......@@ -98,7 +98,8 @@ CREATE TABLE `stations` (
`longitude` decimal(16,14) NOT NULL,
`type` varchar(256) NOT NULL,
`dateOuverture` date DEFAULT NULL,
`adresse` text