= Etude de la population grenobloise en regard des espaces verts =
gauche|upright=0.3|75px|Logo CCSTI Le Centre de Culture Scientifique Technique & Industrielle (CCSTI) a été créé en 1979, dans le but de promouvoir la science et la culture scientifique au travers d’expositions, d’ateliers, de publications et surtout de toucher tous les publics. Le point commun de toutes ses actions est de faire une place aux sciences sociales (histoire, sociologie, philosophie, économie) et de favoriser les réalisations liant artistes et scientifiques.
Dans ce cadre, le CCSTI va mettre en place une exposition nommée Expoviz qui a pour but d’afficher différentes représentations de BigDatas. La plupart de ces représentations, en plus de synthétiser de grandes quantités de données pour les rendre compréhensibles, ont aussi un parti pris et respectent un certain esthétisme. Notre travail prend place dans cette exposition.
Le CCSTI possède aussi un FabLab (Fabrication Laboratory), qui est un atelier de fabrication dans lequel des outils de fabrication numériques (imprimante 3D, fraiseuse numérique, découpeuse laser) pilotés par ordinateur sont mis à disposition de la communauté ainsi qu’une aide/formation si besoin.
L’**Agence de l’Urbanisme de la Région Grenobloise** (AURG), est un organisme qui collecte et gère des données géographiques et socio-économiques sur tout le bassin Grenoblois. Elle aide aussi les acteurs locaux (politiques, communes...) à mettre en place des zones urbaines durables et leur offre une assistance juridique si besoin est.
Le soutien de cette agence durant ce projet va permettre la collecte de données et d’outils utiles à la réalisation de notre projet.
gauche|upright=0.3|50px|Logo QGIS Tout le projet s’est effectué sous le logiciel Qgis 2.2. Qgis s’inscrit dans une gamme de logiciel SIG (système d’information géographique).
C’est un logiciel libre et open source qui permet de créer, éditer et visualiser des données de type géographique.
Obtenir Qgis
Toute la documentation du logiciel est accessible sur leur site web pour Qgis 1.8 ou toute version supérieure :
[[http://www.qgis.org/fr/docs/index.html|Site QGIS]]
Premiers pas avec Qgis ICI
Réaliser une maquette de la Région Urbaine de Grenoble sur laquelle seront projetées les images créées par la suite.
Cette maquette permettra de visualiser les données telles que la population ou les espaces verts en même temps que les reliefs de la région.
6 fichiers de la NASA au format .hgt
<center>Reliefs de la Région Urbaine de Grenoble (+ clair ⇔ + élevé)</center> <u>Problème :</u> Données manquantes au niveau des zones bleues à cause de trous certainement dus à des nuages épais qui ont empêché la visualisation de la zone par le satellite de la NASA.
Utilisation d’un logiciel de conversion de format développé par un utilisateur du site communautaire thingiverse.com.
Ce logiciel permet de transformer les fichiers .hgt en fichiers .stl qui seront lisibles par les logiciels de la fraiseuse numérique.
Après conversion :
400px|center|fichier NASA après conversion en .stl
<center>Un des 6 fichiers de la NASA converti en .stl</center>
Le fichier 3D .stl est composé de nombreuses “facettes” triangulaires définies par 3 points de la façon suivante :
facet normal ni nj nk outer loop vertex v1x v1y v1z vertex v2x v2y v3z vertex v3x v3y v3z endloop endfacet
Chacun des 3 points représentant une facette a donc 3 coordonnées spatiales.
Au niveau des trous causés par les nuages, les coordonnées z des points valent 0.
Bouchage des trous par complétion linéaire par un programme en Java :
<u>Calcul des valeurs par interpolation linéaire :</u>
Supposons que les valeurs à l’indice n et p sont connues et que celles comprises entre ces 2 valeurs sont inconnues.
La valeur est calculée par construction d’un segment de droite entre les points n et p.
Donc, pour un point d’indice i tel que n<i<p : zi = zn - ( (zp-zn)/(p-n) ) * n
400px|center|fichier .stl : trous bouchés <center>Fichier .stl après bouchage des trous</center>
<u>Rappel :</u> Pour englober la RUG, 6 fichiers de la NASA sont nécessaires : concaténation des 6 fichiers pour n’en former qu’un seul.
Utilisation du programme Java précédent en ajoutant un décalage en x ou en y lorsque nécessaire pour concaténer en largeur ou en hauteur.
<u>Problème :</u> Etant donnée la rotondité de la Terre, les fichiers Nord de la NASA sont moins larges que les fichiers Sud.
Il faut donc les concaténer correctement pour qu’il n’y ait pas de décalage.
<u>1er essai :</u>
<u>Résultat :</u>
Présence d’un décalage au niveau de la concaténation des 2 fichiers.
<u>2e essai :</u>
200px|essai au centre : dessin
<u>Résultat :</u>
Pas de décalage.
Les 2 bords surélevés correspondent à des valeurs affectées arbitrairement : pas d’importance car la carte sera tronquée par la suite.
Le fichier final à fournir à la fraiseuse doit englober toute la RUG sans pour autant être trop grand.
Troncature du fichier .stl en un carré englobant la RUG :
Maquette réalisée au FabLab du CCSTI (Centre de Culture Scientifique Technique et Industrielle) par la fraiseuse ShopBot dans un parallélépipède rectangle de polystyrène expansé de 59x59x6cm.
1er passage : dégrossissage avec une fraise de 8mm
2e passage : finition avec une fraise de 3mm
Rendu final :
Les données (nombre d’habitants par commune en sept années) sont stockées dans un fichier excel. La récupération de ces données se fait via l’appel de la fonction “lectureTable”. Il faut toutefois modifier dans ce script le chemin absolu du fichier datawin.xlsx. La méthode utilisée pour approximer l’année 2020 est basée sur les splines.
Le script ecartMC détermine la meilleure méthode de spline en calculant une prévision pour 2010 et en calculant l'écart au moindre carré avec la réalité, puis exécute cette méthode pour 2020.
ecartMC
ecartMC2020
lectureTable → récupère les données contenues dans le fichier .xlsx et les renvoie sous forme de matrice
fracRation_2010
fracRation_2020
fracRationnoAff_2010 → fracRation_2010 mais sans affichage
fracRationnoAff_2020 → fracRation_2020 mais sans affichage
h0, h1, h0barre, h1barre → polynome d’inteprolation de Hermite pour les splines
trace → trace la spline correspondant aux vecteurs xi, yi et yprime (1962-2010)
xi : l’année
yi : la population de la commune
yprime : le taux de variation
trace2 → idem mais calcule sur 0-6 et l'affichage est ramené sur 1962-2010
trace3 → trace2 mais sans plot
trace5 → idem mais calcule sur 0-7 et l'affichage est ramené sur 1962-2020
trace6 → trace5 mais sans plot
trace2020 → trace la spline correspondant aux vecteurs xi, yi et yprime (1962-2020)
xi : l’année
yi : la population de la commune
yprime : le taux de variation
spline4 → calculs pour des splines naturelles (matrice avec 3 diagonales…)
testSplineInterpol2010 : spline4 mais avec plot
testSpline2010 : prévision pour 2010, calculs sur 1962-2010 → utilisation de trace
testSpline2010_2 : prévision pour 2010, calculs sur 0-6 → utilisation de trace2
testSpline2020 : prévision pour 2020, calculs sur 1962-2020 → utilisation de trace
testSpline2020_2 : prévision pour 2020, calculs sur 0-7 → utilisation de trace5
testDroite → utilise uniquement les 2 dernières valeurs pour faire une interpolation linéaire
testDroitenoAff → testDroite mais sans affichage
Ponderation2010 → prévision sur 2010 en pondérant par les écarts
PonderationnoAff → Ponderation2010 sans affichage
PonderationnoAff_2020 → prévision sur 2020 et sans affichage
prévision sur 2010 en pondérant par des coefficients trouvés en minimisant la somme des carrés des écarts à la moyenne
A partir des populations sur les communes de la RUG de 1962 à 2010, le but est de diffuser ces données sur un carroyage de 200m par 200m pour que chaque carreau ait une valeur représentant le nombre d’habitants dans celui-ci.
Le principe est que pour chaque commune il y a un endroit géographique où la densité est la plus élevée, c’est le chef lieu. La diffusion s’opère à partir de cette position géographique.
La population sur les carreaux d’une commune est donc calculée à partir du carreau sur lequel le chef lieu est présent.
Pour cela il faut :
1. Sept tableaux (un par année) au format xls donnant le recensement de la population des communes de la RUG pour 1962, 1968, 1975, 1982, 1990, 1999, 2010
→ Recensement Commune/recensement communes RUG 19xx
→ vos territoires à la carte ou site l’Insee
Les 7 fichiers ont été fusionnés en un seul et le nom des communes a été formaté en majuscule sans accent
→ Donnees par Commune/recensement communes RUG 1962-2010.xls
2. Toutes les communes de la France visualisables sous Qgis
→ Communes/Communes France/COMMUNE.shp
→ [[http://professionnels.ign.fr/geofla#tab-3|Geofla]]
Pour isoler les communes de la RUG :
Sélection (sous Qgis) des communes de l’Isère en filtrant le numéro de département. A partir de la table des attributs de COMMUNE.shp :
//→ sélectionner les entités à partir d’une expression//
400px|sélection par expression
Sur la nouvelle sélection créée en inversant et en supprimant, on se retrouve avec les communes de l’Isère.
Cette sélection est accessible dans le dossier
→ Communes/Communes Isere/communes_isere.shp
Puis sélection des 273 communes de la RUG en effectuant une jointure via le nom des communes entre la table “recensement communes RUG 1962-2010.xls” et “commune_isere.shp”
Cette sélection est accessible dans le dossier
→ Communes/Communes RUG/RUG.shp
3. Un carroyage de 200m par 200m représentant la population en 2010 sur l’ensemble de la métropole
→ Carroyage/200m-carreaux-metropole/car_m.dbf
→ Site de l’[[http://www.insee.fr/fr/|Insee]]
Ci-dessous, la visualisation sous Qgis du carroyage de l’Insee de toute la Métropole.
center|600px|Carroyage de la France
Chaque point noir correspond à un carreau où au moins un habitant est présent. Les zones blanches sont considérées comme des zones inhabitées.
Seuls les carreaux de la RUG sont utiles. Pour cela il faut supprimer tous les carreaux qui sont à l’extérieur de la RUG :
//Vecteur → outils de recherche → sélection par localisation//
400px|sélection par localisation
Sur la nouvelle sélection créée en inversant et en supprimant, on se retrouve avec les carreaux qui sont sur la RUG.
center|800px|sélection des carreaux de la RUG
Cette sélection est accessible dans le dossier
→ Carroyage/200m-carreaux-RUG/carroyage_RUG_2010.shp
Puis coloration du carroyage par population (colonne “carreau_2”) en gradué, mode quantile (effectifs égaux)
//propriétés de la couche vectorielle → style//
Important : avant d’utiliser n’importe quel script python qui a été écrit pour la diffusion il est important d’indiquer le chemin du répertoire dans lequel se trouve le dossier “Diffusion_Population”. Ce chemin est à renseigner au début de chaque script dans la variable “path”
Une première diffusion a été effectué avant de changer pour une autre première méthode de diffusion
Ci-dessous seule la deuxième méthode est présentée
Il faut garder en mémoire que toutes les données doivent être projetées en coordonnées RGF93 pour avoir une meilleur stabilité dans la manipulation des différentes tables.
Au départ sur le carroyage Insee (Carroyage/Carroyage_RUG_Insee.shp) les coordonnées sont en Lambert 2 étendue. Pour changer il faut l'enregistrer dans un nouveau shapefile en changeant le SCR (système de coordonnées de référence)
→ selectionner “Carroyage_RUG_Insee.shp” → Couche → Enregister sous
Ce nouveau carroyage est enregistré sous
→ Carroyage/Carroyage_RUG_Insee_RGF93.shp
Ce fichier sera la base pour afficher la diffusion des carreaux. Il faut juste rajouter pour chaque carreau le nom de la commune auquel il appartient. → Jointure par localisation avec “RUG.shp”
Après avoir importé “Carroyage_RUG_Insee_RGF93_Jointure.shp” sous Qgis il faut supprimer toute les colonnes à l’exception de la colonne “id” et de la colonne “NOM_COMM”
Fichier accessible dans le dossier :
→ Carroyage/Carroyage_RUG_Insee_RGF93_Jointure.shp
Le carroyage qui va recevoir les données diffusées est prêt
L'idée ici est de ponctualiser les données géographiques des chefs-lieux pour ensuite pouvoir sélectionner les 273 carreaux Insee par localisation (grâce à Qgis).
→ Couche → Nouveau → Nouvelle couche shapefile
La nouvelle couche est enregistée sous :
→ Points/Points_Chefs_Lieux.shp
Puis utiliser le script “Points_Chefs_Lieux.py” qui va remplir cette couche avec 273 points qui seront localisés précisément sur les chefs lieux indiqués dans “RUG.shp”
→ Scripts/Points_Chefs_Lieux.py
Puis utiliser le script “Correction_Points_Chefs_Lieux.py” qui va corriger les imperfections dû au fait que les coordonnées des chefs-lieux sont arrondies à l’hectomètre près (il y a 13 points qui sont mal placés)
→ Scripts/Correction_Points_Chefs_Lieux.py
Le fichier des 273 points (avec les 13 corrigés) est accessible ici :
→ Points/Points_Chefs_Lieux.shp
On peut maintenant extraire les 273 carreaux chefs lieux :
Puis la la sélection est enregistré sous :
→ Carroyage/Carroyage_Chefs_Lieux_Insee_RGF93.shp
On a donc maintenant le carroyage sur lequel diffuser et les carreaux correspondant aux chefs-lieux
La version du script “Script_Diffusion.py” a été revue pour s'adapter au nouveau carroyage.
Le script “Script_Diffusion.py” est prévu pour fonctionner sur une base de donnée nommée “data.ods” présente dans le fichier
→ Donnees/data.ods
La base de donnée utilisée pour calculer les diffusions a été construite à partir d'un programme matlab (disponible ICI). Ce programme propose entre autre une estimation de la population par commune sur toutes les années entre 1962 et 2020 par différentes méthodes d'interpolations.
Un exemple de son utilisation Une fois le fichier Extrapolation.m lancer, il faut choisir jusqu'à quelle année le programme doit estimer la population
Choisir le numéro de la commune à estimer
Puis appuyer sur une touche pour faire apparaître la fenêtre suivante, un 0 indique que la méthode ne sera pas utilisée, un 1 indique qu'elle le sera
Représentation graphique du résultat de l'estimation de la population sur la commune n°87 par la méthode des splines
En sortie et en fonction des méthodes d'extrapolations choisies le programme sort aussi des fichiers au format .csv dans lequel on trouve les estimations de la population de toutes les communes sur toutes les années entre 1962 et 2020.
C'est à partir des ces fichiers qu'est formé le fichier “data.ods”. Les années sont renseignées sur la première lignes, et les communes sur la première colonne. Les deux paramètre “p” est “seuil” peuvent être choisis en fonction des années
C'est sur cette base de données que ce base l’exécution du script “Script_Diffusion.py” qui génère 59 fichiers texte (dans le dossier “Resultat_Diffusion”) qu’il faudra traiter afin visualiser le résultat final.
Une fois que l'algorithme a sorti les 59 fichiers textes, il faut intégrer le résultat de chacun d'entre eux sous Qgis pour pouvoir les visualiser osus Qgis
Pour sortir les 59 images corresponds aux 59 fichiers textes, il faut utiliser un langage d'automatisation de tâche appelé “autoAIT3”. Pour cela il faut :
*Excel 2010 : upright=0.3|50px|link=http://www.microsoft.com/fr-fr/download/details.aspx?id=16642
*Qgis 2.2.0 : upright=0.3|50px|link=http://www.qgis.org/fr/site/forusers/index.html
*SciTE-Lite 3.3.6 (AutoIt) : 120px|alt=AutoIt|link=http://www.autoitscript.com/cgi-bin/getfile.pl?autoit3/autoit-v3-setup.exe
Avant d'utiliser le script il y a 3 informations à renseigner (voir commentaires au début du script “AutomatisationDiffusion.au3”)
Résultat Final des 59 images ICI
Construire une carte de la Région Urbaine de Grenoble qui représente à la fois la densité d’espaces verts et la densité de population sur chaque commune .
1. Fichiers .shp et .dbf des densités de population par commune pour 1999 et 2010.
→[[http://www.aurg.org/webcarto/#s=2010;v=map19;i=recensementan.densite_pop;l=fr|Agence de l’urbanisme]]
2. Fichiers .shp et .dbf des délimitations des communes en France. →Geofla
3. Fichiers .shp et .dbf représentant des parcelles de l’Isère codées suivants les compositions de chacune pour 2000 et 2006. →Téléchargements fichiers espaces verts
4. Nomenclature indiquant, pour chaque code, le type de paysage qui lui correspond. →Nomenclature
L’information pour les densités de population par commune est déjà connue. Problème : déterminer les densités d’espaces verts par commune.
Fichier .dbf pour les espaces verts :
Nomenclature des codes de compositions des parcelles :
Première méthode ICI
Deuxième méthode (simplifiée) :
1) Sauvegarder les fichiers CLC pour ne pas modifier les fichiers de base
Importer fichier dbf de CLC de l’année souhaitée sous QGIS
2) Couche → Ouvrir la table des attributs → Activer le mode d’édition → Sélection par expression → Coller le contenu de QgisSelectionannée.txt → Sélection → Fermer la fenetre de sélection par expression → Supprimer les entités sélectionnées → Enregistrer → Quitter le mode d’édition
3) Importer fichier RUGCarreaux.dbf sous QGIS
Vecteur → outils de géotraitement → Intersection
Couche vectorielle de saisie : RUGCarreaux Couche d’intersection : fichier CLC (modifié en 3)) Fichier de sortie : RUGCarreauxForetsannée (dans un nouveau dossier du même nom) Cocher “Ajouter le résultat au canevas de la carte” Cliquer sur OK Le calcul peut prendre plusieurs minutes
4) Importer fichier RUGCommunes.dbf sous QGIS
Vecteur → outils de géotraitement → Intersection
Couche vectorielle de saisie : RUGCarreauxForetsannée Couche d’intersection : RUGCommunes Fichier de sortie : RUGCarreauxForetsCommunesannée (dans un nouveau dossier du même nom) Cocher “Ajouter le résultat au canevas de la carte” Cliquer sur OK Le calcul peut prendre plusieurs minutes
5) Ouvrir RUGCarreauxForetsCommunesannée.dbf dans Excel, l’enregistrer au format .xlsx et ouvrir l’éditeur de macros Excel (Alt+F11)
6) Coller le contenu de macroDensiteEV.txt et éxecuter (F5)
7) Ouvrir RUGCommunes.xlsx
Copier les colonnes AD, AE et AF de RUGCarreauxForetsCommunesannée.xlsx dans des colonnes vides de RUGCommunes.xlsx (par exemple U, V et W) en vérifiant que RUGCommunes est bien trié selon la colonne ID_GEOFLA (colonne A) et sauvegarder ce fichier modifié sous le nom RUGCommunesannée.xlsx
8) Sous QGIS :
Importer RUGCommunesannée.xlsx
Couche → Sauvegarder sous → Format “Fichier DBF” → Fichier de sauvegarde : RUGCommunesDensitesannée dans un nouveau dossier du même nom
9) Copier les fichiers .prj, .qpj, .shx et .shp du dossier RUGCommunes vers le dossier RUGCommunesDensitesannée et les renommer en RUGCommunesDensitesannée.prj, RUGCommunesDensitesannée.qpj, etc…
10) Importer RUGCommunesDensitesannée.dbf sous QGIS
11) Couche → Propriétés → Style → Charger le style… → Charger “style.qml” → OK
12) Importer population.dbf Couche → Propriétés | Style → Transparence : 100% | Diagrammes → Afficher les diagrammes → Décocher “Taille fixe” → Attribut : RUG_DEN_année → Cliquer sur” “Trouver la valeur maximale” → Taille : 50 → Echelle : Surface
Dans la section “Attributs disponibles” : ajouter RUG_DEN_année → double-cliquer sur le rectangle de couleur et choisir une couleur (rouge) → OK → OK
13) Aller dans Propriétés de la couche RUGCommunes → Etiquettes → Etiqueter cette couche → Editer l’expression → Coller le contenu de QgisAffNomsComm.txt | Texte → Style → Gras | Rendu → Décocher la case 'Eviter que l'étiquette ne recouvre des objets → OK → OK