Compare commits
2 Commits
main
...
d2c1ccb8cb
| Author | SHA1 | Date | |
|---|---|---|---|
| d2c1ccb8cb | |||
| 27a63df5e2 |
2
01-diff-view.sql
Normal file
2
01-diff-view.sql
Normal file
@@ -0,0 +1,2 @@
|
||||
DROP VIEW IF EXISTS chiffres_diff;
|
||||
CREATE VIEW IF NOT EXISTS chiffres_diff AS SELECT date, code_INSEE, nombre - LAG(nombre) OVER (PARTITION BY code_INSEE ORDER BY date) AS nombre FROM chiffres;
|
||||
@@ -6,15 +6,11 @@
|
||||
</head>
|
||||
<body>
|
||||
<?php
|
||||
$base = new SQlite3('barometre.sqlite');
|
||||
|
||||
$villes_ALM_SQLITE = $base->query("SELECT code_INSEE FROM Villes");
|
||||
$villes_ALM = array();
|
||||
while ($line = $villes_ALM_SQLITE->fetchArray(SQLITE3_NUM)) {
|
||||
$villes_ALM[] = $line[0];
|
||||
}
|
||||
$villes_ALM = array(49007, 49015, 49020, 49028, 49035, 49048, 49055, 4129, 49130, 49135, 49307, 49200, 49214, 49223, 49241, 49246, 49377, 49267, 49271, 49294, 49298, 49306, 49278, 49326, 49329, 49338, 49339, 49353, 49434);
|
||||
$json_address = "https://www.barometre-velo.fr/stats/progress.geojson";
|
||||
|
||||
$base = new SQlite3('barometre.sqlite');
|
||||
|
||||
// Mise à jour des données
|
||||
$last_check = $base->querySingle("SELECT last FROM last_check");
|
||||
@@ -44,24 +40,11 @@ $compte = $base->querySingle("SELECT SUM(nombre) FROM chiffres WHERE date = \"".
|
||||
<p>Heure du relevé : <b><?=date_format(date_create($last_check),"d/m/Y H:i:s")?></b></p>
|
||||
<p>Total des réponses pour ALM : <b><?=$compte?></b></p>
|
||||
<hr/>
|
||||
<table border="1">
|
||||
<thead>
|
||||
<tr><th>Ville</th><th>Nombre de réponses</th><th>Chiffres de 2021</th></tr>
|
||||
</thead>
|
||||
<table>
|
||||
<?php
|
||||
$compte = $base->query("SELECT r1.nom as nom, r1.nombre as nombre, r2.nombre as nombre2021, r1.population as population FROM (SELECT * FROM chiffres c NATURAL JOIN Villes v WHERE c.date = '".$last_check."' ORDER BY c.nombre DESC) r1 LEFT JOIN (SELECT * FROM chiffres_2021) r2 ON r1.code_INSEE = r2.code_INSEE ORDER BY nombre desc");
|
||||
$compte = $base->query("SELECT * FROM chiffres c natural join villes v WHERE c.date = \"".$last_check."\" ORDER BY c.nombre DESC");
|
||||
while( $line = $compte->fetchArray()) {
|
||||
$plus_que_2021 = $line['nombre'] > $line['nombre2021'];
|
||||
$presque_plus_que_2021 = $line['nombre'] > 0.8 * $line['nombre2021'];
|
||||
$seuil = $line['population'] <= 3000 ? 30 : 50 ;
|
||||
$qualifie = $line['nombre'] >= $seuil;
|
||||
$presque_qualifie = $line['nombre'] >= 0.8 * $seuil;
|
||||
?><tr>
|
||||
<td<?php if ($plus_que_2021): ?> style="background-color:lightgreen;"<?php elseif ($presque_plus_que_2021): ?> style="background-color:lightgoldenrodyellow;"<?php endif; ?>><?=$line['nom']?></td>
|
||||
<td style="text-align: right;<?php if($qualifie): ?> background-color: lightgreen;<?php elseif($presque_qualifie): ?> background-color: lightgoldenrodyellow;<?php else: ?> background-color: lightsalmon;<?php endif; ?>"><?=$line['nombre']?></td>
|
||||
<td style="text-align: right;"><?=$line['nombre2021']?></td>
|
||||
</tr>
|
||||
<?php
|
||||
echo "<tr><td>{$line['nom']}</td><td>{$line['nombre']}</td></tr>\n";
|
||||
}
|
||||
?></table>
|
||||
<hr/>
|
||||
|
||||
@@ -1,16 +1,10 @@
|
||||
# La table pour détermination de la nécessité d'une mise à jour
|
||||
CREATE TABLE last_check (
|
||||
last DATETIME
|
||||
);
|
||||
|
||||
# La table qui associe les code_INSEE aux villes
|
||||
CREATE TABLE Villes (
|
||||
code_INSEE SMALL INT PRIMARY KEY,
|
||||
nom VARCHAR(255)
|
||||
);
|
||||
INSERT INTO "Villes"(code_INSEE,nom) VALUES(49214,'Montreuil-Juigné'),(49055,'Cantenay-Épinard'),(49241,'Le Plessis-Grammoire'),(49298,'Saint-Léger-de-Linières'),(49007,'Angers'),(49015,'Avrillé'),(49307,'Loire-Authion'),(49035,'Bouchemaine'),(49020,'Beaucouzé'),(49278,'Sainte-Gemmes-sur-Loire'),(49223,'Mûrs-Erigné'),(49200,'Longuenée-en-Anjou'),(49267,'Saint-Barthélemy-d''Anjou'),(49353,'Trélazé'),(49135,'Feneu'),(49329,'Savennières'),(49246,'Les Ponts-de-Cé'),(49048,'Briollay'),(49306,'Saint-Martin-du-Fouilloux'),(49377,'Rives-du-Loir-en-Anjou'),(49338,'Soulaines-sur-Aubance'),(49294,'Saint-Lambert-la-Potherie'),(49339,'Soulaire-et-Bourg'),(49323,'Verrières-en-Anjou'),(49271,'Saint-Clément-de-la-Place'),(49028,'Béhuard'),(49130,'Écuillé'),(49326,'Sarrigné'),(49129, 'Écouflant');
|
||||
|
||||
# Une table pour stocker les chiffres de 2025, au fur et à mesure qu'ils arrivent
|
||||
CREATE TABLE chiffres (
|
||||
date DATETIME,
|
||||
code_INSEE SMALL INT,
|
||||
@@ -18,79 +12,3 @@ CREATE TABLE chiffres (
|
||||
PRIMARY KEY( date, code_INSEE),
|
||||
FOREIGN KEY(code_INSEE) REFERENCES Villes(code_INSEE)
|
||||
);
|
||||
|
||||
# Une table pour stocker les chiffres de 2021
|
||||
CREATE TABLE chiffres_2021 (
|
||||
code_INSEE SMALL INT,
|
||||
nombre INTEGER,
|
||||
PRIMARY KEY (code_INSEE),
|
||||
FOREIGN KEY (code_INSEE) REFERENCES Villes(code_INSEE)
|
||||
);
|
||||
|
||||
# Qualifiés en 2021
|
||||
INSERT INTO chiffres_2021 VALUES
|
||||
(49267, 69),
|
||||
(49214, 58),
|
||||
(49015, 70),
|
||||
(49007, 1193),
|
||||
(49329, 52),
|
||||
(49246, 116),
|
||||
(49020, 92),
|
||||
(49135, 60),
|
||||
(49278, 56),
|
||||
(49055, 76),
|
||||
(49377, 52),
|
||||
(49323,67),
|
||||
(49035, 76),
|
||||
(49271, 49),
|
||||
(49223, 56),
|
||||
(49307, 86),
|
||||
(49353, 70);
|
||||
|
||||
# Non qualifiés en 2021
|
||||
INSERT INTO chiffres_2021 VALUES
|
||||
(49028, 4),
|
||||
(49048, 9),
|
||||
(49129, 12),
|
||||
(49130, 1),
|
||||
(49200, 6),
|
||||
(49241, 8),
|
||||
(49294, 2),
|
||||
(49298, 24).
|
||||
(49306, 2),
|
||||
(49338, 3),
|
||||
(49339, 3);
|
||||
|
||||
|
||||
# Ajout des chiffres de population municipale
|
||||
ALTER TABLE Villes
|
||||
ADD population UNSIGNED INT NULL;
|
||||
UPDATE Villes SET population = 157175 WHERE code_INSEE = 49007;
|
||||
UPDATE Villes SET population = 14938 WHERE code_INSEE = 49015;
|
||||
UPDATE Villes SET population = 5557 WHERE code_INSEE = 49020;
|
||||
UPDATE Villes SET population = 122 WHERE code_INSEE = 49028;
|
||||
UPDATE Villes SET population = 6690 WHERE code_INSEE = 49035;
|
||||
UPDATE Villes SET population = 3151 WHERE code_INSEE = 49048;
|
||||
UPDATE Villes SET population = 2380 WHERE code_INSEE = 49055;
|
||||
UPDATE Villes SET population = 4475 WHERE code_INSEE = 49129;
|
||||
UPDATE Villes SET population = 667 WHERE code_INSEE = 49130;
|
||||
UPDATE Villes SET population = 2202 WHERE code_INSEE = 49135;
|
||||
UPDATE Villes SET population = 6334 WHERE code_INSEE = 49200;
|
||||
UPDATE Villes SET population = 7842 WHERE code_INSEE = 49214;
|
||||
UPDATE Villes SET population = 5935 WHERE code_INSEE = 49223;
|
||||
UPDATE Villes SET population = 2622 WHERE code_INSEE = 49241;
|
||||
UPDATE Villes SET population = 12725 WHERE code_INSEE = 49246;
|
||||
UPDATE Villes SET population = 9460 WHERE code_INSEE = 49267;
|
||||
UPDATE Villes SET population = 2109 WHERE code_INSEE = 49271;
|
||||
UPDATE Villes SET population = 3552 WHERE code_INSEE = 49278;
|
||||
UPDATE Villes SET population = 2949 WHERE code_INSEE = 49294;
|
||||
UPDATE Villes SET population = 3804 WHERE code_INSEE = 49298;
|
||||
UPDATE Villes SET population = 1681 WHERE code_INSEE = 49306;
|
||||
UPDATE Villes SET population = 16416 WHERE code_INSEE = 49307;
|
||||
UPDATE Villes SET population = 7775 WHERE code_INSEE = 49323;
|
||||
UPDATE Villes SET population = 848 WHERE code_INSEE = 49326;
|
||||
UPDATE Villes SET population = 1349 WHERE code_INSEE = 49329;
|
||||
UPDATE Villes SET population = 1371 WHERE code_INSEE = 49338;
|
||||
UPDATE Villes SET population = 1489 WHERE code_INSEE = 49339;
|
||||
UPDATE Villes SET population = 15358 WHERE code_INSEE = 49353;
|
||||
UPDATE Villes SET population = 5641 WHERE code_INSEE = 49377;
|
||||
8
config.inc.php
Normal file
8
config.inc.php
Normal file
@@ -0,0 +1,8 @@
|
||||
|
||||
<?php
|
||||
|
||||
$villes_ALM = array(49007, 49015, 49020, 49028, 49035, 49048, 49055, 4129, 49130, 49135, 49307, 49200, 49214, 49223, 49241, 49246, 49377, 49267, 49271, 49294, 49298, 49306, 49278, 49326, 49329, 49338, 49339, 49353, 49434);
|
||||
|
||||
$json_address = "https://www.barometre-velo.fr/stats/progress.geojson";
|
||||
|
||||
$base = new SQlite3('barometre.sqlite');
|
||||
32
ingest.php
Normal file
32
ingest.php
Normal file
@@ -0,0 +1,32 @@
|
||||
<?php
|
||||
require "config.inc.php";
|
||||
|
||||
// Mise à jour des données
|
||||
$last_check = $base->querySingle("SELECT last FROM last_check");
|
||||
if ($last_check ===null || date_add(new DateTime($last_check), DateInterval::createFromDateString('1 hour')) < new DateTime()) {
|
||||
$json = file_get_contents($json_address);
|
||||
if ($json !== false) {
|
||||
$decoded = json_decode($json, true);
|
||||
foreach($decoded['features'] as $value) {
|
||||
if(in_array($value['properties']['insee'], $villes_ALM)) {
|
||||
$ville = $base->querySingle("SELECT * FROM Villes WHERE code_INSEE=".$value['properties']['insee'].";", true);
|
||||
if ($ville == array()) {
|
||||
$base->query("INSERT INTO Villes VALUES (".$value['properties']['insee'].", \"".$value['properties']['name']."\");");
|
||||
}
|
||||
$base->query("INSERT INTO chiffres VALUES(\"".$decoded['date']."\", ".$value['properties']['insee'].", ".$value['properties']['contributions'].");");
|
||||
}
|
||||
}
|
||||
$base->query("DELETE FROM last_check;");
|
||||
$base->query("INSERT INTO last_check VALUES ('".$decoded['date']."');");
|
||||
$last_check = $decoded['date'];
|
||||
http_response_code(200);
|
||||
?>{ "status": "updated"}<?php
|
||||
} else {
|
||||
http_response_code(500);
|
||||
?>{"status": "error in getting geojson file"}<?php
|
||||
}
|
||||
|
||||
} else {
|
||||
http_response_code(304);
|
||||
?>{"status": "doesn't need update"}<?php
|
||||
}
|
||||
Reference in New Issue
Block a user