138 lines
5.4 KiB
HTML
138 lines
5.4 KiB
HTML
|
<!DOCTYPE html>
|
||
|
<html lang="en">
|
||
|
<head>
|
||
|
<meta charset="UTF-8">
|
||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||
|
<title>Projet BD</title>
|
||
|
|
||
|
<style>
|
||
|
html, body {
|
||
|
margin: 0;
|
||
|
background-color: whitesmoke;
|
||
|
color: black;
|
||
|
font-family: 'Roboto', sans-serif;
|
||
|
}
|
||
|
|
||
|
body {
|
||
|
margin: 1em;
|
||
|
margin-bottom: 50vh;
|
||
|
}
|
||
|
|
||
|
header {
|
||
|
height: calc(100vh - 2em);
|
||
|
|
||
|
text-align: center;
|
||
|
display: flex;
|
||
|
flex-direction: column;
|
||
|
}
|
||
|
|
||
|
header > div {
|
||
|
display: flex;
|
||
|
flex-direction: column;
|
||
|
|
||
|
align-items: center;
|
||
|
justify-content: center;
|
||
|
|
||
|
height: 90%;
|
||
|
}
|
||
|
|
||
|
.last {
|
||
|
margin-top: auto;
|
||
|
}
|
||
|
|
||
|
header a {
|
||
|
display: flex;
|
||
|
padding: 1em;
|
||
|
border-radius: 4px;
|
||
|
width: fit-content;
|
||
|
background-color: #b30000;
|
||
|
color: white;
|
||
|
}
|
||
|
|
||
|
header a:hover {
|
||
|
background-color: #7f0000;
|
||
|
color: white;
|
||
|
}
|
||
|
|
||
|
h1 {
|
||
|
color: #7f0000;
|
||
|
max-width: 50vw;
|
||
|
}
|
||
|
|
||
|
a {
|
||
|
color: #b30000;
|
||
|
}
|
||
|
|
||
|
a:hover {
|
||
|
color: #7f0000;
|
||
|
}
|
||
|
|
||
|
@media (max-width: 40em) {
|
||
|
body {
|
||
|
margin: 0.5em;
|
||
|
}
|
||
|
}
|
||
|
</style>
|
||
|
</head>
|
||
|
<body>
|
||
|
<header>
|
||
|
<div>
|
||
|
<h1>La quantité d'impôts que l'on paye est-elle corrélée avec la quantité de route construite chez nous ?</h1>
|
||
|
|
||
|
<a href="/map">
|
||
|
Voir la réponse !
|
||
|
</a>
|
||
|
</div>
|
||
|
|
||
|
<p class="last">Scrollez pour plus d'info...</p>
|
||
|
</header>
|
||
|
|
||
|
<h2>Étapes du projet</h2>
|
||
|
|
||
|
<p>Il a d'abord fallu récupérer les données spécifiques à notre question, c'est à dire: </p>
|
||
|
<ul>
|
||
|
<li>
|
||
|
Les données sur les impôts de chaque zone, fournies par l'<a href="https://www.insee.fr/fr/accueil">INSEE</a>
|
||
|
</li>
|
||
|
<li>
|
||
|
Les données sur la quantité de route dans chaque zone, fournies par <a href="https://www.openstreetmap.org">OpenStreetMap</a>
|
||
|
</li>
|
||
|
</ul>
|
||
|
|
||
|
<h3>Les données de l'INSEE</h3>
|
||
|
|
||
|
<p>Pour récupérer les données de l'insee, il faut passer par <a href="https://api.insee.fr/catalogue">leur api</a>, qui n'est pas très bien documentée, et comprendre comment faire une requête.</p>
|
||
|
|
||
|
<p>Après avoir surmonté cet obstacle, on peut se rendre compte que l'INSEE limite le nombre de requêtes à 30 par minute, ce qui est beaucoup trop lent pour parcourir les environ 36000 communes de France en un temps correct.</p>
|
||
|
|
||
|
<p>Une solution simple, bien que longue à mettre en place, est de créer 30 clés d'API et d'alterner à chaque requête.</p>
|
||
|
|
||
|
<img src="/public/api_keys.png" alt="30 clés d'API de l'INSEE"/>
|
||
|
|
||
|
<p>Les données sur les impôts sont masquées pour les zones de moins de 1000 ménages, par <a href="https://fr.wikipedia.org/wiki/Secret_statistique">secret statistique</a>, ce qui limite le nombre de communes ayant des données sur les impôts à seulement 4000.</p>
|
||
|
|
||
|
<p>La donnée sur les impôts se trouve dans le tableau "revenus", et est représenté par un nombre négatif ; ce nombre représente, pour le "ménage moyen" de la zone, la part des revenus qui partent dans leurs impôts.</p>
|
||
|
|
||
|
<h3>Les données d'OSM</h3>
|
||
|
|
||
|
<p>La récupération des données de l'insee s'est faite par une simple requête à <a href="https://overpass-api.de/">l'api overpass</a> d'OSM (instance principale), répétée une fois par zone. Pour les zones plus grandes, comme les départements, le serveur a mis trop de temps à calculer et a donc abandonné la requête.</p>
|
||
|
<p>Les données ont directement pu être fusionnées avec les données de l'insee.</p>
|
||
|
|
||
|
<p>Une donnée supplémentaire non utilisée dans l'application est le type de routes ; en effet, l'application ne différencie actuellement pas une autoroute d'une ruelle. Prendre en compte cette donnée (qui est présente dans le dataset final) pourrait améliorer la visualisation.</p>
|
||
|
|
||
|
<h3>Les données des zones</h3>
|
||
|
|
||
|
<p>Une fois les données de la question récupérées, il a fallu les afficher sur une carte. Pour cela, il a fallu obtenir un <a href="https://geojson.org/">GeoJSON</a> des zones françaises, pour pouvoir les afficher dans <a href="https://leafletjs.com">Leaflet</a>.</p>
|
||
|
|
||
|
<p>
|
||
|
Trouver ces données a été compliqué car les datasets trouvés sur <a href="data.gouv.fr">data.gouv.fr</a>
|
||
|
sont soit dans un mauvais format (<a href="https://epsg.io/3575">EPSG:3575</a>, qui définit les points en mètres,
|
||
|
par opposition à <a href="https://epsg.io/4326">EPSG:4326</a> qui définit les points en degrés), soit plus à jour
|
||
|
(il y a eu des changements au <a href="https://www.insee.fr/fr/information/2560452">COG</a> en 2015 et en 2022.
|
||
|
</p>
|
||
|
|
||
|
<p>Nous avons au final trouvé les données dans le bon format dans <a href="https://github.com/Juralexx/france-geojson-app/tree/master/files/geojson">un projet github</a>, qui ne semble pas indiquer leur provenance, mais qui sont complètes et bien structurées.</p>
|
||
|
|
||
|
<p>L'étape finale a été de tout fusionner en trois gros fichiers, contenant respectivement les données pour les communes, les départements ainsi que leurs arrondissements.</p>
|
||
|
</body>
|
||
|
</html>
|