Outils pour utilisateurs

Outils du site


Panneau latéral

stages:2013-2014

Projets_et_stages_2013-2014

= Etude de la population grenobloise en regard des espaces verts =

Contexte

CCSTI

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.

Agence de l’urbanisme

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.

QGIS

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

Maquette

Problématique

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.

Données de base

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.

Méthodologie

Etape 1 : Conversion des fichiers 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>

Etape 2 : Bouchage des trous

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 :

  1. Stockage des valeurs de z dans un tableau à double entrée (1e entrée : x ; 2e entrée : y)
  2. Parcours du tableau dans le sens des x : pour chaque z=0 : calcul d’une 1e valeur par interpolation linéaire (cf ci-après) puis marquage des coordonnées (x,y)
  3. Parcours du tableau dans le sens des y : pour chaque couple de coordonnées (x,y) marqué : calcul d’une 2e valeur également par interpolation linéaire.
  4. Parcours de tout le tableau : pour chaque couple de coordonnées (x,y) marqué : affectation de la moyenne des 2 valeurs calculées comme nouvelle valeur d’altitude z
  5. Ecriture du nouveau fichier .stl à partir du tableau modifié

<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>

Etape 3 : Formation d’un fichier unique

<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.

Etape 4 : Rectifications de la concaténation

<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>

200px|essai à gauche : dessin

<u>Résultat :</u>

400px|essai à gauche : .stl

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>

400px|essai au centre : .stl

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.

Etape 5 : Découpage du fichier .stl

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 :

400px|fichier .stl : version finale

Etape 6 : Construction de la maquette

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 :

center|600px|maquette

Extrapolation (en cours...)

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

1. Les fractions rationnelles

fracRation_2010

fracRation_2020

fracRationnoAff_2010 → fracRation_2010 mais sans affichage

fracRationnoAff_2020 → fracRation_2020 mais sans affichage

2. Les splines naturelles

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

3. Le prolongement linéaire

testDroite → utilise uniquement les 2 dernières valeurs pour faire une interpolation linéaire

testDroitenoAff → testDroite mais sans affichage

4. Les écarts pondérés

Ponderation2010 → prévision sur 2010 en pondérant par les écarts

PonderationnoAff → Ponderation2010 sans affichage

PonderationnoAff_2020 → prévision sur 2020 et sans affichage

5. Ecarts pondérés et moindres carrés

prévision sur 2010 en pondérant par des coefficients trouvés en minimisant la somme des carrés des écarts à la moyenne

Diffusion

Problématique

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 :

  • avoir le nombre d’habitants pour chaque commune de la RUG
  • avoir un carroyage sur lequel diffuser
  • sur ce carroyage, connaître les carreaux sur lesquelles les chefs-lieux sont présents
  • connaître pour chaque carreaux la commune à laquelle il est rattaché

Données de base

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.

center|800px|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”

center|800px|RUG

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//

Travail réalisé nécessaire avant la diffusion

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

Création du carroyage

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

centre

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”

centre

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”

  • image … ? *

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

Extraction des carreaux chefs-lieux

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

centre

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 :

centre

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

Le Calcul de la diffusion

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

centre

Choisir le numéro de la commune à estimer

centre

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

centre

Représentation graphique du résultat de l'estimation de la population sur la commune n°87 par la méthode des splines

centre

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

centre

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.

Visualisation de la diffusion

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

Espaces verts

Problématique

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 .

Données de base

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.

Description des fichiers

Fichier .dbf pour les espaces verts :

  • colonne 1 : référence de la parcelle (ex: FR-186820)
  • colonne 2 : code de la composition de la parcelle (ex: 333)
  • colonne 3 : superficie de la parcelle en hectares (ex: 187,9463250854)

Nomenclature des codes de compositions des parcelles :

  • colonne 1 : code CLC (Corine Land Cover) (ex: 333)
  • colonne 2 : libellé de la composition de la parcelle (ex: Végétation clairsemée)
  • autres colonnes : inutiles ici

Méthodologie

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

Annexes

Code de bouchage de trous : ICI

Script diffusion 2 : lien à mettre vers GitHub

Script diffusion sans lissage : ICI

Nomenclature des codes couleurs pour la sélection des espaces verts : ICI. Version Excel.


DONIAS Pierre

LEFEVRE Henry

L3 MI - Université Joseph Fourier

Stage 2014

stages/2013-2014.txt · Dernière modification: 2016/03/14 17:33 (modification externe)