Un plugin QGIS pour analyser la vulnérabilité structurelle de graphes spatiaux

Dans la continuité d’un précédent billet, qui présentait de manière succincte l’utilisation de Python afin de programmer un plugin QGIS d’analyse de réseaux spatiaux, ce billet présente un plugin permettant plus précisément d’analyser leur vulnérabilité structurelle. De plus, ce plugin permet d’introduire des recherches récentes en matière d’analyse de réseaux.

L’analyse de la vulnérabilité structurelle des réseaux connait un intérêt croissant. Les raisons de cet intérêt sont multiples. Ainsi, alors que le risque s’est imposé comme une problématique majeure au sein de nombreuses sociétés contemporaines, l’analyse structurelle constitue un moyen pertinent d’appréhender les problématiques de vulnérabilité. L’analyse structurelle se focalise sur l’étude de la forme, de la configuration des réseaux. La dynamique des flux au sein de ces réseaux n’est donc pas modélisée à l’aide d’équations physiques et les aspects purement matériels (fragilité intrinsèque des nœuds et des arcs) sont laissés de côté. L’approche structurelle permet alors une approche plus réflexive. De plus, elle peut constituer une alternative aux approches physiques modélisant les flux, ces approches physiques étant bien souvent trop complexes à mettre en œuvre sur de grands réseaux. Pour une bonne introduction, il est possible de consulter l’article de Jean-François Gleyze et Magali Reghezza (cliquer ici) ou cette synthèse du groupe fmr (cliquer ici).

Pour les personnes n’étant pas particulièrement intéressées par les problématiques de risques, il est important de préciser que l’utilisation des indicateurs et des algorithmes conçus à cet effet peut se révéler intéressante pour des analyses de réseaux plus classiques, afin notamment de mettre en évidence l’importance de certains composants (nœuds ou arcs).

Pour installer ce plugin, il convient tout d’abord de suivre les recommandations du précédent billet. Ainsi, la bibliothèque NetworkX (cliquer ici pour l’obtenir) doit être installée dans le répertoire des extensions Python de QGIS (par exemple : « C:\Program Files\Quantum GIS Lisboa\apps\Python27\Lib\site-packages »). En effet, pour assurer une certaine continuité avec le précédent plugin, j’ai choisi d’utiliser la même bibliothèque. Ainsi, si cette bibliothèque a déjà été installée pas besoin de recommencer cette installation. Ensuite, il convient de télécharger le nouveau plugin (cliquer ici). Il faut le dézipper, puis placer le dossier dans le répertoire suivant : « C:\Program Files\Quantum GIS Lisboa\apps\qgis\python\plugins ».

Il suffit de lancer QGIS pour que le plugin apparaisse dans « Extension -> Analyse de vulnérabilité ». S’il n’apparaît pas, il faut aller dans « Extension -> Gestionnaire d’extensions » et cocher l’extension « Analyse de la vulnérabilité d’un graphe (version 0.1) ». Après avoir lancé le plugin, une boîte de dialogue s’ouvre. Elle permet de sélectionner les nœuds et les arcs du graphe à étudier. Après avoir validé cette première boîte de dialogue, une deuxième boîte de dialogue apparaît. Elle permet de sélectionner les champs des extrémités des arcs, de préciser si le graphe est orienté ou non, de préciser si le graphe est pondéré ou non (et si oui, quel est le champ de cette pondération : distance, flux, importance…). Enfin, différents indicateurs sont proposés pour analyser la vulnérabilité structurelle du réseau étudié.

Boîte de dialogue et indicateurs

Concernant les indicateurs, l’allongement moyen calcule la moyenne des détours engendrés par la suppression d’un sommet. L’algorithme calcule alors cet indicateur pour tous les sommets. Ainsi, plus l’allongement moyen est important, plus le nœud doit théoriquement faire l’objet d’une attention particulière puisque sa défaillance engendre une reconfiguration importante du réseau. A noter que cet indicateur est corrélé avec l’indicateur de centralité intermédiaire (Gleyze, 2005 ; Lhomme, 2012). Cet indicateur présente le défaut de ne pas prendre en considération les éventuelles pertes de connexité liées à la suppression d’un nœud. En effet, certains détours seraient d’une valeur infinie. Pour pallier ce défaut, il convient alors d’analyser l’inverse de l’éloignement moyen (nommé par certains efficiency). Pour cet indicateur, le terme de centralité d’information a pu être utilisé (Crucitti et al., 2006). A partir de ces deux indicateurs, des cartes thématiques peuvent être réalisées.

Analyse de la centralité d'information

L’indicateur de vulnérabilité dynamique tente d’appréhender les problématiques liées à la reconfiguration du réseau après la défaillance d’un sommet. En effet, la reconfiguration imposée par la suppression d’un sommet peut engendrer une utilisation anormale (notamment une utilisation très supérieure par rapport à la normale) de certains sommets pouvant alors engendrer la défaillance de ceux-ci. Ainsi, l’objectif de cet indicateur est d’étudier les défaillances en chaîne pouvant être induites par la suppression initiale d’un sommet. Pour cela, il existe plusieurs solutions (Wang et Rong, 2011). Ici, l’indicateur calcule la tolérance minimale requise afin d’éviter que la moitié des composants du réseau soient perturbés par la suppression initiale d’un nœud.

Un dernier algorithme permet d’évaluer les conséquences induites par la suppression de plusieurs nœuds. Pour cela, des scénarios types sont étudiés : l’attaque de nœuds choisis aléatoirement, l’attaque des nœuds les plus centraux, l’attaque des nœuds de degrés les plus élevés, l’attaque des nœuds les plus centraux dynamiquement. L’ensemble de ces scénarios est présenté dans (Albert et al., 2004). En fonction du nombre de sommets perturbés, il convient alors d’évaluer les pertes de connectivité correspondantes. Comparativement aux autres indicateurs, une boîte de dialogue supplémentaire permet à l’utilisateur de préciser : le nombre d‘itérations à effectuer pour calculer le scénario aléatoire, le taux maximum de nœuds impliqués dans les scénarios (0 à 1), le répertoire où sera enregistrée l’image, le nom du fichier image, le type de format de l’image (.png ou .svg), la largeur et la hauteur de l’image, l’épaisseur des lignes et la taille des points.

Boîte de dialogue particulière à l'analyse de la vulnérabilité combinatoire

Ensuite, une boîte de dialogue affiche la progression du calcul. En effet, ce calcul, comme ceux des indicateurs d’allongement moyen et de vulnérabilité dynamique, peut être assez long. Enfin, le graphique final s’affiche.

Analyse de la vulnérabilité combinatoire

Pour finir, il est important de préciser que pour les deux plugins désormais implémentés, les nœuds des graphes doivent impérativement être numérotés en partant de 1, puis ne sauter aucune valeur.

Voici un jeu de données test (cliquer ici pour l’obtenir).

Références

Albert R., Albert I., Nakarado G., 2004, « Structural vulnerability of the North American power grid », Physical Review E, 69(2), pp. 1-4. http://arxiv.org/pdf/cond-mat/0401084v1.pdf

Crucitti P., Latora V., Porta S., 2006, « Centrality measures in spatial networks of urban streets », Physical Review E, 73(3), pp. 1-5. http://arxiv.org/pdf/physics/0504163.pdf

Gleyze J. F., 2005, La vulnérabilité structurelle des réseaux de transports dans un contexte de risque, Thèse de doctorat, Université Paris VII, Laboratoire COGIT-IGN, 826 p. http://tel.archives-ouvertes.fr/tel-00138991/

Lhomme S., 2012, Les réseaux techniques comme vecteur de propagation des risques en milieu urbain. Une contribution théorique et pratique à l’analyse de la résilience urbaine, Laganier R. & Serre D. (sous la dir.), Thèse de doctorat, Université Paris Diderot, 365 p. http://tel.archives-ouvertes.fr/docs/00/77/22/04/PDF/these_serge_lhomme.pdf

Wang J. W., Rong L. L., 2011, « Robustness of the western United States power grid under edge attack strategies due to cascading failures », Safety Science, 49(6), Elsevier, pp. 807-812. http://www.sciencedirect.com/science/article/pii/S0925753510002547

Serge Lhomme

Maitre de conférences à l'université Paris Est Créteil - Docteur en géographie de l'université Paris VII spécialité "dynamique des milieux et risques"

More Posts - Website

QGIS et l’analyse de graphe

Dans un précédent billet, il a été signalé qu’il existe peu d’outils intégrés au sein des SIG permettant d’analyser les réseaux. Néanmoins, les SIG libres peuvent être combinés à d’autres logiciels, programmes ou bibliothèques accroissant ainsi leur potentialité initiale. De plus, Grass (SIG libre qui, il est vrai, n’est pas des plus commodes à appréhender) permet d’effectuer différentes mesures sur des réseaux spatiaux.
Ce billet va présenter d’une part, comment réaliser un programme sur QGIS permettant d’analyser des réseaux spatiaux en ayant recours à des bibliothèques existantes d’analyse de réseaux (en l’occurrence, des bibliothèques développées en Python). D’autre part, ce billet va présenter un plugin réalisé à cet effet.

Utiliser une bibliothèque Python avec QGIS

Le SIG libre QGIS propose une console Python permettant d’interagir avec l’ensemble des outils de QGIS et par conséquent de développer de petits programmes automatisant plusieurs tâches. Dans les faits, il est plus souvent intéressant d’utiliser les nombreuses bibliothèques Python existantes afin d’étendre les capacités de QGIS. Par exemple, il existe de nombreuses bibliothèques permettant de réaliser de l’analyse de graphe (igraph, NetworkX…). Dans ce billet, nous allons utiliser NetworkX, bibliothèque développée originalement par Aric Hagberg, Dan Schult, et Pieter Swart (http://networkx.github.com/).

Pour utiliser une bibliothèque Python dans QGIS, il faut la télécharger (voici le lien pour la télécharger [1]), puis la dézipper et enfin la placer dans le répertoire des bibliothèques Python de QGIS. Ainsi, pour la version 1.8 (Lisboa) de QGIS, le répertoire se situe dans : « C:\Program Files\Quantum GIS Lisboa\apps\Python27\Lib\site-packages » (attention cette version de QGIS n’a pas été choisie par hasard, en effet elle implémente Python 2.7 qui est nécessaire pour la dernière version de NetworkX). Toutes les bibliothèques Python déjà présentes dans QGIS se trouvent dans ce répertoire (MapPlotLib, PyQt4…). La bonne complémentarité entre QGIS et Python est ici illustrée, car il n’y a plus rien à faire. Tout est installé et il est alors possible de réaliser de l’analyse de graphe avec QGIS, alors même qu’initialement ce n’était pas le cas.

Pour vérifier, il suffit d’ouvrir QGIS, d’aller dans « Extension -> Console Python », puis de taper les lignes de code suivantes :

>>> import networkx as nx  # Import de la bibliothèque NetworkX
>>> G=nx.Graph()  # Création d’un graphe G
>>> G.add_edges_from([(1,2),(1,3)])  # Création des arcs du graph G
>>> nx.clustering(G)  # Calcul les clustering coefficient des noeuds
{1: 0.0, 2: 0.0, 3: 0.0}
>>> nx.degree(G)  # Calcul les degrés des noeuds
{1: 2, 2: 1, 3: 1}

Analyser des graphes spatiaux dans QGIS avec Python

Cette étape est un peu plus complexe que la précédente. En effet, sans même avoir une grande connaissance de Python et de QGIS, il est possible d’utiliser la bibliothèque NetworkX dans QGIS en étudiant les tutoriels (voici le lien vers les tutoriels [2]). Faire interagir Python et QGIS ajoute un niveau de difficulté supplémentaire. Ainsi, partons du fait que deux couches ont été chargées dans QGIS. La première couche est composée de nœuds caractérisés par leur identifiant (vous pouvez télécharger un exemple ici). La deuxième couche est composée d’arcs caractérisés par leur identifiant, les deux identifiants des nœuds situés aux extrémités de l’arc et leur longueur (vous pouvez télécharger un exemple ici).

L’enjeu est alors de créer le graphe « NetworkX » à partir de ces deux couches. Pour cela, il faut récupérer les attributs des couches à l’aide de Python :

>>> canvas=qgis.utils.iface.mapCanvas() # Interaction avec la carte et les couches
>>> allLayers = canvas.layers() # Récupère les deux couches chargées dans QGIS
>>> couche_noeud = allLayers[0] # Récupère la couche supérieure
>>> couche_arc = allLayers[1]  # Récupère la couche inférieure
>>> provider = couche_arc.dataProvider() # Interaction avec la couche arc
>>> field=provider.fields() # Récupère les champs de la couche arc
>>> startind=provider.fieldNameIndex(‘depart’) # Index du champ « départ »
>>> endind=provider.fieldNameIndex(‘arrivee’)   # Index du champ « arrivée »
>>> distind=provider.fieldNameIndex(‘distance_K’) # Index du champ « distance_K »
>>> feat = QgsFeature()   # Permet de manipuler les entités des couches
>>> allAttrs = provider.attributeIndexes()   # Récupère les index des entités
>>> provider.select(allAttrs)   # Sélectionne toutes les entités 
>>> table=[]  # Création d’une table qui va récupérer les informations
>>> while provider.nextFeature(feat):  # Boucle parcourant l’ensemble des entités
…     attrs = feat.attributeMap()   # Récupère tous les attributs des entités
…     attrsstart=attrs.values()[startind].toInt()[0]  # Attribut nœud de départ
…     attrsend=attrs.values()[endind].toInt()[0]  # Attribut nœud d’arrivée
…     attrsdist=attrs.values()[distind].toInt()[0] # Attribut distance
…     table=table+[(attrsstart,attrsend,attrsdist)] # Ajoute les attributs récupérés à la table

Une fois les attributs des couches permettant de créer le graphe récupérés et après les avoir collectés dans un tableau, il est possible d’analyser ce graphe à l’aide la bibliothèque NetworkX :

>>> import networkx as nx  # Import de la bibliothèque NetworkX
>>> G=nx.Graph() # Création d’un graphe G
>>> G.add_weighted_edges_from(table) # Ajout des entités de la table au graphe G
>>> b=nx.betweenness_centrality(G,weight=’weight’) # Calcul de la centralité des noeuds du graphe G

Enfin, il est possible de récupérer les résultats obtenus pour les implémenter dans la couche nœuds :

>>> provider2 = couche_noeud.dataProvider() # interaction avec les données
>>> nbcol=int(provider2.fieldCount()) # Récupère le nombre de champs de la couche
>>> from PyQt4.QtCore import *   # Import de la bibliothèque PyQt4
>>> from PyQt4.QtGui import *   # Import de la bibliothèque PyQt4
>>> provider2.addAttributes([QgsField(« centralite », QVariant.Double)])
>>> taille=len(b)  # Récupère le nombre de nœuds
>>> couche_noeud.startEditing()  # Permet l’édition de la couche nœuds
>>> for k in range(taille):  # Boucle qui parcoure l’ensemble des nœuds
…      couche_noeud.changeAttributeValue(k,nbcol,b[k+1]) # Attribution des valeurs
>>> couche_noeud.commitChanges() # Enregistrement des changements

Toutes ces lignes de commande peuvent être récupérées et réorganisées pour créer un petit programme permettant de calculer les centralités des nœuds d’un graphe spatial (lien vers un fichier zip contenant un exemple ici) :

>>> execfile(« C:/Users/XXXXX/Desktop/centralite.py »)       # Appelle le programme à exécuter

Utiliser un plugin QGIS pour analyser des graphes spatiaux

Pour développer un plugin en Python dans QGIS, des connaissances supplémentaires en programmation sont nécessaires. Elles ne seront pas développées dans ce billet. Elles peuvent être trouvées sur ce site internet. Je vais plutôt introduire un petit plugin que j’ai développé. Il n’est pas très exhaustif, mais a pour objectif de montrer ce que l’on peut obtenir en combinant QGIS et une bibliothèque Python d’analyse de graphe.

Le dossier zip à télécharger se trouve ici. Une fois le dossier téléchargé et dézippé, il faut le placer dans le répertoire des plugins Python de QGIS. Pour la version Lisboa, le répertoire est le suivant : « C:\Program Files\Quantum GIS Lisboa\apps\qgis\python\plugins ». Le plugin est alors installé. Ensuite, il suffit de lancer QGIS pour que le plugin apparaisse dans « Extension -> Analyse de graphe ». S’il n’apparait pas, il faut aller dans « Extension -> Gestionnaire d’extensions » et cocher l’extension « Analyse de graphe version 0.1 ». Après avoir lancé le plugin, une boite de dialogue s’ouvre. Elle permet de sélectionner les nœuds et les arcs du graphe à étudier.

Après avoir validé cette première boite de dialogue, une deuxième boite de dialogue apparait. Elle permet de sélectionner les champs des extrémités des arcs, de préciser si le graphe est orienté ou non, de préciser si le graphe est pondéré ou non (et si oui, quel est le champ de cette pondération : distance, flux, importance…). Enfin, différents indicateurs sont proposés (ceux-ci peuvent être normalisés ou non).

Le tour est joué. Ainsi, un champ a été créé dans la couche des nœuds afin de stocker les résultats de la requête. Il est alors possible de réaliser une carte thématique finale.

Serge Lhomme

Maitre de conférences à l'université Paris Est Créteil - Docteur en géographie de l'université Paris VII spécialité "dynamique des milieux et risques"

More Posts - Website

Urban Network Analysis (UNA), la ToolBox qui enrichit l’analyse des réseaux sous ArcGis10x

Les outils du type de la ToolBox Urban Network Analysis (UNA) que nous présentons dans ce billet sont suffisamment rares pour être salués. Il n’existe pas, à notre connaissance, d’outil similaire intégré à un logiciel SIG – fusse t’il payant – permettant le calcul et la cartographie des mesures sur réseau.

Présentation :

UNA est donc un script fort utile car il augmente les possibilités de l’analyse des réseaux dans un SIG, en autorisant le calcul des mesures. Il a été développé par la Singapore University of Technology & Design en collaboration avec plusieurs structures telles que le City Form Lab du MIT, le Martin Center for Built Form and Land Use Studies, le Space Group de l’UCL et l’Human Space Lab, dans le cadre d’un programme de recherche présenté ici.

UNA s’appuie sur les résultats de différents travaux de recherche en analyse spatiale des réseaux (Martin & March 1971; Porta, Crucitti et al, 2005).

UNA est une Boite à outils (une Toolbox dans le jargon d’Esri) pour ArcGis10x – Service Pack 2 minimum – muni de l’extension Network Analysis.

Elle est téléchargeable ici ou , tout comme son fichier d’aide (UNA_help.pdf) sur lequel nous nous sommes appuyées pour rédiger le présent billet.

A noter que la Boite à outils est également fournie avec des fichiers exemples, ce qui facilite sa prise en main.

Développée à l’origine pour l’analyse de réseaux urbains non planaires, l’UNA peut être utilisée indifféremment pour l’analyse spatiale des réseaux planaires (de transport, par exemple) ou non planaire, mais seulement sous ArcGis10x. Les fichiers de départ nécessitent donc d’être aux format shapefiles (format natif de la gamme des produits ESRI dont l’extention est *.shp) et Network Analysis (*.nd). Si vous n’en disposez pas, de simples tableaux en (*.dbf par exemple) peuvent faire l’affaire, moyennant une transformation ultérieure (voir infra.)

Au sens de l’UNA, le fichier graphique du « réseau » est composé de trois éléments : des noeuds, des arêtes et des bâtiments. On ne présente plus les noeuds et les arètes (ou liens). Quant aux bâtiments, ils peuvent être assimilées à n’importe quel type d’unités spatiales surfaciques (polygones).

Intérêts de l’outil

Le premier intérêt de cet outil est de pouvoir combiner les trois types d’implantation spatiale (points, lignes, polygones) ainsi que leurs caractéristiques attributaires au sein d’une même analyse, ce qui n’est pas commun. La voie est ainsi ouverte vers une analyse de réseau dans un contexte multi niveaux, c’est-à-dire à différents échelons géographiques (l’ilôt, le quartier, la commune, etc.).

Le second intérêt porte sur le calcul de mesures pondérées puisque des caractéristiques attributaires des points et des polygones (des variables quantitatives de taille ou ordinales de rang, par exemple), et des lignes (longueur, etc.) peuvent être intégrées à l’analyse.

Le troisième intérêt porte sur les possibilités de visualisation cartographique des mesures.

L’UNA permet le calcul des cinq mesures classiques d’analyse des réseaux que sont : « R » (Reach) – « G » (Gravity) – « B » (Betweenness) – « C » (Closeness) et « S » (Straightness), en tenant compte de la position relative des nœuds les uns par rapport aux autres, selon une métrique discrète (topologique) ou continue (une distance kilométrique, par exemple). Elle restitue en retour différents fichiers des résultats.

Pré-requis :

1) Au préalable, il convient de vérifier que vous disposez bien de l’extension Network Analysis et que l’extension est bien « cochée ».

2) Ensuite, il faut dézipper l’UNA que vous avez téléchargé ( ici ou ) dans un répertoire de votre choix.

Deux fichiers et deux répertoires (qui contiennent des fichiers exemples) sont ensuite disponibles :

Urban_Network_Analysis_Tool.tbx qui est la boite à outils et son fichier d’aide. Tous deux s’installent automatiquement à la racine.

– les répertoires sont  <Code> et <TextFile>

<Code> contient les codes de sept scripts (rédigés en Python) qui permettant de générer les différents fichiers de résultats tels que, par exemple, le calcul de la matrice d’adjacence (tableau croisé de valeurs binaires ou la modalité ‘1’ correspond à l’existence d’un lien, sinon ‘0’) nommée : Adjacency_List_Computation ; ou encore les résultats des différentes mesures calculées. La centralité est stockée dans le fichier Centrality_List_Computation.

<TextFiles> contient deux sous-répertoires de fichiers d’exemples. Le premier contient les shapefiles d’unités spatiales surfaciques. Il est intitulé  Test_Buildings ; le second contient   les shapefiles des  ‘unités spatiales lineaires, nommé Test_Networks.

3) Enfin, il vous faut charger la Boite à Outils dans la fenêtre « Toolbox » de ArcGis10x. Pour ce faire, un click-droit sur la fenêtre des ToolBox / ajouter une ToolBox puis parcourir votre arborescence pour sélectionner l’UNA. Elle s’installe ensuite automatiquement à la fin de votre liste d’outils.

Préparation des données :

Deux fichiers minimum sont nécessaires : un fichier de points (ou un fichier de polygones) au format (*.shp) et un fichier de lignes au format (*.nd).
Il est important que tous vos fichiers soient stockés dans un même répertoire.

Si vous disposez de ces deux fichiers,vous pouvez aller directement au calcul des mesures, sinon, vous pouvez les générer en suivant la procédure suivante :

1) Sous ArcGis (ArcCatalog ou ArcMap), le fichier de points (*.shp) peut être généré à partir d’un tableau importé d’un tableur, puis converti par la procédure d’export en (*.dbf), avec un click-droit.

Ce tableau doit contenir au minimum 3 colonnes que sont : ID ; X_COORD ; Y_COORD. La colonne ‘ID’ correspond au numéro d’identification unique du point) ; la colonne ‘X_COORD’ à la valeur de la coordonnée en X du point dans un système de projection ; et ‘Y_COORD’ à la valeur de la coordonnée en Y du point dans le même système de projection, bien entendu.

En l’absence de fichier de points, si vous disposez d’une couche de polygone (*.shp), vous pouvez soit vous servir directement de celle-ci, soit calculer au préable les barycentres (ou centroïdes) des polygones (AddXYdata ou DataManagementTool/FeatureToPoint) puis en faire un fichier de points.

2) Le fichier de lignes (qui correspond aux arêtes du réseau) peut être également généré sous ArcGis (ArcCatalog ou ArcMap). Il importe beaucoup que celui-ci soit un fichier pour Network Analysis, c’est-à-dire muni de l’extention (*.nd).

Il est possible de générer ce fichier à partir d’un (*.shp) ou de fichiers externes importés (*.dwg/dxf) sous ArcCatalog, en les convertissant : click-droit sur le fichier de lignes (*.shp) / choisir « nouveau Dataset » et suivre les instructions.

Enfin, en l’absence de fichier de lignes, il est possible d’en créer un à partir du fichier de points précédent (voir supra, 1), en utilisant par exemple, l’outil  Point To Ligne pour obtenir un (*.shp), puis le convertir en (*.nd).

Calcul des mesures

Pour calculer les différentes mesures proposées par l’UNA, il est nécessaire de lancer l’outil (en double-cliquant dessus).

La fenêtre de menu suivante s’ouvre ensuite. Elle vous propose de

– sélectionner les deux fichiers préparés lors de l’étape précédente : celui des points (ou des surfaces) et celui des arètes (ou des lignes).

– sélectionner la mesure que vous souhaitez calculer.

Fenêtre de menus de l'UNA

Le descriptif des mesures proposé est le suivant :

1) la “Reach measure » telle que définie par Sevtsuk (2010) permet de sélectionner les nœuds (ou polygones) situés dans un certain rayon (r) de voisinage sur le réseau et de les dénombrer. Le voisinage est défini sur une base topologique (selon une métrique discrète). Il génère une zone tampon circulaire. Le voisinage fait référence ici au concept d’occasions interposées appliquées au réseau, fondé sur le principe du nombre de nœuds à franchir pour aller d’un point à un autre.

2) La « Gravity measure », ou « mesure gravitaire » telle qu’introduite par Hansen (1959), est une mesure importante dans l’analyse d’accessibilité dans un réseau de transport. Elle fait référence à l’attractivité des noeuds qui est inversement proportionnelle à la distance qui sépare chacun d’entre eux. Le modèle théorique sous-jacent est ainsi le modèle gravitaire, utilisé de manière pondérée ou non en fonction des caractéristiques des nœuds (taille) ou des liens (type de distance, par exemple). L’exposant  de la distance – qui prend en compte la rugosité de l’espace (ou friction) – peut être contrôlé en fonction du mode ou du temps de transport (à pied, en véhicule…). Les auteurs suggèrent, par exemple, de le porter à 0.1813 pour un déplacement à pied. Sans indication de l’utilisateur, cet indice est porté par défaut à 1.

3) La « Betweeness measure » ou « mesure de centralité d’intermédiarité » retient l’attention de nombreux chercheurs actuellement. Elle identifie les noeuds qui permettent une circulation rapide au sein du réseau, en limitant la distance à parcourir. Les supprimer conduit donc à réduire l’accessibilité de certains lieux. L’UNA utilise l’algorithme développé par Brandes ( 2001) qui renseigne sur « le potentiel »  des nœuds. On regrettera l’absence de cette mesure au niveau des liens.

4) La « Closeness measure » ou « mesure de centralité de proximité » d’un nœud correspond à l’inverse de la distance moyenne cumulée nécessaire pour atteindre ce nœud depuis n’importe lequel des autres nœuds du réseau si aucun critère de distance n’est défini. La centralité de proximité est donc l’inverse de l’indice de Shimbel. Il présente l’avantage d’être normalisé (de 0 à 1) avec 1 comme accessibilité maximale.

5) la « Straightness measure »  (Vragovic, Louis, et al. 2005 ; Porta, Crucitti et al.2005).

On notera que l’ensemble des résultats peut ensuite être normalisé.

La formulation des différentes mesures, fournie dans le fichier d’aide, est synthétisée dans le tableau ci-après :

Formule des mesures proposées par l'UNA

Pour en savoir plus sur les mesures locales de voisinage ou d’ensemble (globale) d’un réseau et leur utilisation, vous pouvez toujours lire et relire la synthèse du groupe f.mr. rédigée par César Ducruet (2010). Elle est disponible ici.

Cartographie des résultats

Dès lors que la mesure choisie a été calculée, la Betweenness par exemple, elle est stockée dans un fichier de résultat. La colonne ‘B’ correspondante vous permet ensuite de visualiser directement le résultat cartographique, puisque vous êtes dans un SIG…La figure suivante, extraite du fichier d’aide, présente un exemple de cartographie de la ‘B’.

Prise en compte des freins aux déplacements

La prise en compte de freins aux déplacements ou de contraintes à la circulation dans le réseau peut être réalisée. Elle nécessite toutefois une structuration particulière du fichier de points, par la définition « d’attributs d’impédance », sous Network Analysis.

Export des résultats

L’UNA fournit trois familles de fichiers de résultats forts utiles pour des analyses au sein de ArcGis10x ou avec d’autres outils.

1) Les fichiers des résultats du calcul des mesures, disponibles en (*.dbf), contiennent de nouvelles variables. Comme indiqué précédemment, elles sont intitulées R, G, B, C, S et correspondent respectivement aux mesures Reach, Gravity, Betweenness, Closeness et Straightness. C’est donc à partir de ce fichier que les cartes sont réalisées et « symbolisées » dans ArcMap.

2) Les matrices d’adjacence (Bldng_Adj*.dbf) qui contiennent les résultats des requêtes réalisées sur les noeuds obtenues suite au calcul de l’une ou de l’autre mesure.

3) Les graphes (*.shp) associés à la matrice d’adjacence qui permettent de spatialiser les relations de voisinage, de visualiser leurs différents attributs, etc.

A noter qu’une matrice d’adjacence et un graphe associé sont générés à chaque fois qu’une requête est réalisée sur les noeuds et/ou sur les lignes.

Pour finir, il s’agit d’un bel outil, simple d’utilisation mais qui nécessite toutefois une bonne compréhension de la signification des indicateurs associée à une bonne maîtrise d’ArcGis. Une compétence sur l’utilisation de Network Analysis est un vrai plus.

Références mentionnées

Brandes, U. , 2001,  A faster Algorithm for Betweenness Bentrality. Journal of Mathematical Sociology, Vol 25(2), 163-177.

Hansen, W. G. , 1959, How Accessibility Shapes Land Use. Journal of the American Planning Association, 25(2), 73-76.

Hillier & Hanson, 1984, The Social Logic of Space. Cambridge: Cambridge University Press.

Porta, Crucitti et al, 2005, The network analysis of urban streets: a primal approach. Environment and Planning B, 35(5), 705-725.

Sevtsuk, A. , 2010, Path and Place: A Study of Urban Geometry and Retail Activity in Cambridge and Somerville, MA. PhD Dissertation. Cambridge: MIT

Vragovic, I., Louis, E., & Diaz-Guilera, A., 2005, Efficiency of information transfer in regular and complex networks. Physics Review E., 71(026122).

Pour en savoir plus sur le projet:

http://cityform.mit.edu/projects/urban-network-analysis.html

 

Françoise Bahoken

Géographe et cartographe, je suis accueillie en détachement depuis décembre 2010 à l'IFSTTAR ; je suis par ailleurs membre-associée de l'UMR 8504 Géographie-Cités.

More Posts