ArcGIS: Analyse des services les plus proches avec le Network Analyst

Les SIG sont capables de faire plusieurs types d'analyse réseau, comme le calcul du chemin le plus court ou le plus rapide, trouver l'installation la plus proche, ou de calculer des aires de services. Ce tutoriel montre un exemple concret d'une telle analyse avec le Network Analyst d'ArcGIS

Préparer le réseau routier

Pour commencer, créer un nouveau projet ArcGIS Pro. Utilisez le template "Map" pour cela. ArcGIS va directement créer une File Geodatabase pour votre travail.

Une analyse de réseau nécessite que la Geodatabase contient un "Feature Dataset". Pour rappel, une couche ordinaire est dans ArcGIS une "Feature Class". Un "Feature Dataset" est simplement une collection de couches qui partagent le même système de coordonnées.

Nous devons donc créer un nouveau "Feature Dataset" dans notre File Geodatabase. Pour cela, nous ouvrons le "Catalog". Le File Geodatabase du projet se trouve sous "Folders". L’outil pour créer un nouveau "Feature Dataset" est disponible dans le menu contextuel après un clic droite sur la Geodatabase, sous "New > Feature Dataset". Dans le dialogue qui suit, donner comme nom du "Feature Dataset" service, et sélectionnez le bon système de coordonnées (CH1903+ / LV95).

Une fois que vous avez créez le Feature Dataset, importez la couche des routes OSM dans votre Geodatabase. Nommez cette couche routes_osm. Elle peut se trouver dans le Feature Dataset ou non, car nous n’allons pas l’utiliser directement dans l’analyse.

Sélectionnez ensuite uniquement les routes qui sont potentiellement utiles pour se rendre à la poste en voiture. La classe de la route est indiquée dans l’attribut fclass. Sélectionnez les routes dont la valeur de fclass est: motorway, motorway_link, primary, primary_link, secondary, secondary_link, tertiary, tertiary_link, trunk, residential, living_street, trunk_link, ou unclassified.

Pour faire cette sélection, choisissez l’onglet "Map" et ensuite l’outil "Select By Attributes" dans la section "Selection". Créez une nouvelle sélection à l’aide d’une expression SQL:

L’expression SQL doit être quelque chose comme ça:

fclass IN ( motorway, motorway_link, primary, ... )

où il faut compléter la liste des types de routes selon la liste ci-dessus. Ensuite on peut cliquer sur "OK" pour effectuer la sélection.

Nous devons maintenant sauvegarder les routes sélectionnées dans une nouvelle couche que nous appelons routes_sel (pour routes sélectionnées). Cette couche ("Feature Class") doit se trouver à l’intérieur du "Feature Dataset" services que nous avons créé avons. Pour ce faire, il faut faire un clic droite sur la couche routes_osm, ensuite menu "Data > Export Features". Il faut encore indiquer le nom de la nouvelle couche. ArcGIS va exporter automatiquement uniquement les entités sélectionnées.

Finalement, pour éviter tout problème, il est une bonne idée d’enlever la couche routes_osm du projet ArcGIS, et de la supprimer également de la File Geodatabase. Pour supprimer la couche de la Geodatabase, on peut aller simplement dans le "Catalog" et naviguer jusqu’à la couche. Un clic droit sur la couche donne accès à l’option "Delete".

La carte se présentera ensuite à peu près comme ça (ici pour la région de La Chaux-de-Fonds):

Maintenant, nous avons une couche des routes que nous considérons comme propre. Par contre, pour un jeu de données de réseau routier, il serait bien de connaître la vitesse de circulation. Dans le jeu de données OpenStreetMap, il y a en effet l’attribut maxspeed qui renseigne exactement cette donnée. Cependant, il y a beaucoup de tronçons routiers pour lesquelles la vitesse maximale est de 0. Dans le cadre de cet exercice, nous allons simplement définir une valeur par défaut pour tous les tronçons avec vitesse 0. Dans la pratique, nous pourrions évidemment faire des estimations plus précises.

Concrètement, nous créons un nouvel attribut vitesse (pour ne pas modifier la donnée d’origine) qui contient la valeur de maxspeed où elle n’est pas 0, et pour les autres tronçons nous mettons une valeur de 30 km/h:

Pour les calculs le long du réseau routier, on aimerait connaître le chemin le plus rapide. Le chemin le plus rapide est celui où la somme des temps de passage est minimal, contre le chemin le plus court où la somme des longueurs des tronçons doit être minimal. Le temps de passage (resp. la longueur dans le cas du chemin le plus court) est le critère de coût. Nous allons donc calculer un autre attribut qui contient ce "coût", en l’occurrence le nombre de secondes qu’il faut pour traverser un tronçon avec la vitesse maximale autorisée.

Dans le calculateur de champ d’ArcGIS Pro, il est possible de déterminer la longueur d’un tronçon avec le "champ" Shape_Length.

Quant à la vitesse, nous allons la convertir en mètres / seconde. Vu qu’une heure contient $60 * 60 = 3600$ secondes, 1 m/s correspond à 3’600 m/h ce qui est la même chose que 3,6 km/h. Il faut donc diviser les km/h par 3,6 pour obtenir des m/s.

Ensuite, on peut calculer le temps qu’il faut pour traverser le tronçons du début à la fin, en divisant la longueur du tronçon par la vitesse en m/s (donc par exemple pour un tronçon de 100 mètres de longueur et une vitesse de 10 m/s (36 km/h), il faudra 10 secondes pour le traverser).

La formule finale pour le calcul du coût est donc:

temps en secondes = longueur / (vitesse / 3.6)

Créez donc un nouveau champ cout_sec (coût en secondes) avec la calculatrice des champs. Assurez-vous que le nouvel attribut est de type "Double" (nombre avec décimales, double précision). Faites le calcul en suivant la formule ci-dessus (formule qui doit évidemment être adaptée pour ArcGIS). N’oubliez pas de mettre les parenthèses dans ArcGIS, ou d’adapter la formule pour qu’elle ne contienne pas de parenthèses.

Vérifiez le calcul fait dans la table d’attributs. Est-ce que les valeurs calculées sont raisonnables ? Vérifiez à l’aide d’un exemple que vous connaissez pour évaluer si l’ordre de grandeur des chiffres calculés sont correctes.

Une fois l’attribut cout_sec créé, nous considérons notre réseau routier comme étant prêt. Évidemment, on pourrait encore mieux adapter nos données, p.ex. en introduisant un coût séparé par direction, pour pouvoir modéliser des sens uniques. On pourrait aussi calculer un coût par moyen de transport (et tenir compte de la pente pour les vélos p.ex.). Mais pour cet exercice, le réseau préparé sera suffisant.