5633969d98
Carte Leaflet (annuaire Éducation nationale) + API PHP/MySQL : fiche établissement (effectifs, IPS, population INSEE, DPE ADEME), GED documents/photos, commentaires par groupe, gestion utilisateurs et politique de mots de passe. Imports opendata (effectifs, IPS, population, DPE, IRIS). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
87 lines
2.6 KiB
PHP
87 lines
2.6 KiB
PHP
<?php
|
|
/**
|
|
* Convertit l'export brut (raw_export.json) de l'annuaire de l'education
|
|
* en un fichier compact consomme par la carte.
|
|
*
|
|
* - ClES courtes pour reduire la taille (~3x plus petit).
|
|
* - Coordonnees arrondies a 5 decimales (~1 m de precision).
|
|
* - Les etablissements sans geolocalisation sont ecartes.
|
|
*
|
|
* Usage : php build_data.php
|
|
*/
|
|
|
|
$src = __DIR__ . '/raw_export.json';
|
|
$dstDir = __DIR__ . '/data';
|
|
$dst = $dstDir . '/etablissements.json';
|
|
|
|
if (!is_file($src)) {
|
|
fwrite(STDERR, "Fichier source introuvable : $src\n");
|
|
exit(1);
|
|
}
|
|
|
|
if (!is_dir($dstDir) && !mkdir($dstDir, 0777, true) && !is_dir($dstDir)) {
|
|
fwrite(STDERR, "Impossible de creer le dossier $dstDir\n");
|
|
exit(1);
|
|
}
|
|
|
|
fwrite(STDERR, "Lecture de l'export brut...\n");
|
|
$rows = json_decode(file_get_contents($src), true);
|
|
if (!is_array($rows)) {
|
|
fwrite(STDERR, "JSON source invalide.\n");
|
|
exit(1);
|
|
}
|
|
|
|
$out = [];
|
|
$skipped = 0;
|
|
foreach ($rows as $r) {
|
|
$lat = $r['latitude'] ?? null;
|
|
$lon = $r['longitude'] ?? null;
|
|
if ($lat === null || $lon === null) {
|
|
$skipped++;
|
|
continue;
|
|
}
|
|
$rec = [
|
|
'id' => $r['identifiant_de_l_etablissement'] ?? null,
|
|
'nom' => $r['nom_etablissement'] ?? null,
|
|
'type' => $r['type_etablissement'] ?? null,
|
|
'stat' => $r['statut_public_prive'] ?? null,
|
|
'reg' => $r['libelle_region'] ?? null,
|
|
'aca' => $r['libelle_academie'] ?? null,
|
|
'dep' => $r['libelle_departement'] ?? null,
|
|
'depc' => $r['code_departement'] ?? null,
|
|
'com' => $r['nom_commune'] ?? null,
|
|
'cp' => $r['code_postal'] ?? null,
|
|
'adr' => $r['adresse_1'] ?? null,
|
|
'tel' => $r['telephone'] ?? null,
|
|
'mail' => $r['mail'] ?? null,
|
|
'web' => $r['web'] ?? null,
|
|
'etat' => $r['etat'] ?? null,
|
|
'circ' => $r['nom_circonscription'] ?? null,
|
|
'lat' => round((float) $lat, 5),
|
|
'lon' => round((float) $lon, 5),
|
|
];
|
|
|
|
// Options : flag stocke seulement quand l'option est presente (1), pour alleger.
|
|
$options = [
|
|
'rest' => 'restauration',
|
|
'heb' => 'hebergement', // internat
|
|
'ulis' => 'ulis',
|
|
'segp' => 'segpa',
|
|
'appr' => 'apprentissage',
|
|
];
|
|
foreach ($options as $key => $field) {
|
|
if ((int) ($r[$field] ?? 0) === 1) {
|
|
$rec[$key] = 1;
|
|
}
|
|
}
|
|
|
|
$out[] = $rec;
|
|
}
|
|
|
|
file_put_contents($dst, json_encode($out, JSON_UNESCAPED_UNICODE));
|
|
|
|
$count = count($out);
|
|
$size = round(filesize($dst) / 1048576, 1);
|
|
fwrite(STDERR, "OK : $count etablissements ecrits ($size Mo), $skipped sans geoloc ignores.\n");
|
|
fwrite(STDERR, "Fichier : $dst\n");
|