Exemple de service de géotraitement : itinéraire le plus court sur un réseau de transport

Complexité : Intermédiaire Exigences relatives aux données : ArcGIS Tutorial Data Setup Chemin des données : C:\ArcGIS\ArcTutor\GP Service Examples\ShortestRoute Objectif : Créez, publiez et utilisez un service de géotraitement qui recherche l'itinéraire le plus court sur un réseau de transport et génère des trajets.

Dossier

ShortestRoute

Objet

Crée l'itinéraire le plus court entre des points donnés d'un réseau de transport et génère des trajets au format texte ou HTML.

Services

  • SanFranciscoBaseMap (service de carte)
  • ShortestRouteService (service de géotraitement)

Tâches de géotraitement

  • Calculer l'itinéraire le plus court et les feuilles de route texte
  • Calculer l'itinéraire le plus court et les feuilles de route HTML

Entrées

Au moins deux points numérisés par l'utilisateur

Sorties

  • L'itinéraire le plus court entre les points spécifiés par l'utilisateur en fonction du temps de trajet.
  • Un fichier HTML ou texte (selon la tâche utilisée) qui contient les feuilles de route.

Données

Utilise un jeu de données de réseau de transport pour la zone de San Francisco fournie dans le dossier ToolData.

Extensions

Network Analyst

A remarquer

  • Démontre comment réutiliser une couche d'analyse de réseau d'itinéraires existante à chaque exécution de la tâche.
  • La tâche Calculer l'itinéraire le plus court et les feuilles de route HTML indique comment utiliser une bibliothèque externe Python à partir d'un outil de script pour convertir des feuilles de route XML au format HTML.

A propos de cet exemple

Dossier correspondant

C:\arcgis\ArcTutor\GP Service Examples\ShortestRoute contient l'intégralité des modèles et des données, ainsi que l'outil de script.

A propos de cet exemple

Le service ShortestRouteService créé dans cet exemple vous explique comment publier des tâches de géotraitement qui calculent l'itinéraire le plus court sur un réseau de transport entre des points spécifiés par l'utilisateur et comment générer un fichier qui contient les trajets. La tâche Calculer l'itinéraire le plus court et les feuilles de route texte génère des trajets au format texte, tandis que la tâche Calculer l'itinéraire le plus court et les feuilles de route HTML génère des trajets au format HTML. Ces deux tâches génèrent également l'itinéraire le plus court sous la forme d'un jeu d'entités.

Exemple de sortie de la tâche Calculer l'itinéraire le plus court et les feuilles de route texte
Exemple de sortie de la tâche Calculer l'itinéraire le plus court et les feuilles de route texte

Données

Les données de cet exemple proviennent de C:\arcgis\ArcTutor\GP Service Examples\ShortestRoute.

Contenu du dossier ShortestRoute
Contenu du dossier ShortestRoute

Jeu de données réseau

Le dossier ToolData contient une géodatabase fichier (SanFrancisco.gdb). Cette géodatabase comporte un jeu de données réseau (Streets_ND) dans le jeu de données d'entité Transport. Ce jeu de données réseau modélise le réseau de transport d'une zone de San Francisco. Il fournit un attribut de réseau (TravelTime), qui indique la durée nécessaire pour parcourir chaque segment de rue en minutes.

Fond de carte

La couche de fond de carte se trouvant dans SanFranciscoBaseMap.mxd possède une couche (Streets), comme indiqué ci-dessous. Cette couche affiche l'étendue du jeu de données réseau. Cela signifie que cette tâche permet uniquement de déterminer l'itinéraire le plus court dans cette étendue.

Fond de carte de San Francisco indiquant l'étendue du jeu de données réseau
Fond de carte de San Francisco indiquant l'étendue du jeu de données réseau

SanFranciscoBaseMap.mxd est publié en tant que service de carte.

Boîte à outils et carte

La boîte à outils du service de géotraitement est ShortestRouteService, tandis que la carte source du service est ShortestRouteService.mxd. ShortestRouteService contient deux modèles et un outil de script (Convert directions to HTML). Cet outil de script est utilisé dans le modèle Calculer l'itinéraire le plus court et les feuilles de route HTML. ShortestRouteService.mxd contient deux couches de données sources : Streets_ND (jeu de données réseau) et Route (couche d'analyse de réseau).

Modèle

Vue d'ensemble des modèles

Le modèle Calculer l'itinéraire le plus court et les feuilles de route texte est illustré ci-dessous. Un paramètre en entrée (Input Stops) est constitué de points. L'itinéraire le plus court passe par les arrêts basés sur la séquence numérisée. Le modèle ajoute les points numérisés par l'utilisateur en tant qu'arrêts à une couche d'analyse de réseau Route existante, effectue un calcul pour déterminer l'itinéraire le plus court, génère des trajets et les écrit dans un fichier texte.

Modèle Calculer l'itinéraire le plus court et les feuilles de route texte

Utilisation d'une couche d'analyse de réseau existante

Dans ce modèle, aucune couche d'analyse réseau n'est créée comme dans l'exemple DriveTimePolygonsService. C'est la couche d'itinéraires existante (Route) qui est utilisée à la place. (Cette couche a été créée à l'aide de l'outil Générer une couche d'itinéraires.) La couche existante peut être utilisée, car aucune des propriétés d'analyse de la couche d'itinéraires, telle que l'attribut d'impédance, ne se présente sous la forme de paramètres de modèle. Dans l'exemple DriveTimePolygonsService, la valeur des bornes par défaut (une propriété d'analyse pour les couches de zones de desserte) a été présentée sous la forme d'un paramètre de modèle, ce qui implique l'utilisation de l'outil Générer une couche de zones de desserte en tant que processus de modèle.

Notez que si l'une des propriétés d'analyse d'itinéraires (attribut d'impédance, par exemple) doit être présentée sous la forme de paramètres de modèle, l'outil Générer une couche d'itinéraires doit alors être utilisé comme processus initial dans le modèle.

Pour créer la couche Route et l'utiliser en tant que variable en entrée dans le modèle, commencez par ajouter le jeu de données réseau Streets_ND à ShortestRouteService.mxd, puis utilisez l'outil Générer une couche d'itinéraires. Dans cet exemple, les paramètres suivants ont été utilisés pour l'outil Générer une couche d'itinéraires. Les valeurs par défaut sont utilisées pour les paramètres non mentionnés dans cette table.

Paramètre

Valeur

Réseau d’analyse en entrée

Streets_ND

Nom de la couche en sortie

Itinéraire

Attribut d’impédance

Temps de trajet

Accumulateurs

TravelTime;Meters

Règle de demi-tour

ALLOW_DEAD_ENDS_AND_INTERSECTIONS_ONLY

Valeurs des paramètres utilisées avec l'outil Générer une couche d'itinéraires
Création d'une couche d'itinéraires
Création d'une couche d'itinéraires

Processus de modèle

L'outil Ajouter des emplacements ajoute les points numérisés par l'utilisateur en tant qu'arrêts à la couche d'itinéraires. Le paramètre Emplacements en entrée de l'outil est spécifié via un paramètre de modèle (Input Stops). Le type de données de ce paramètre est jeu d'entités. La structure et la symbologie du jeu d'entités proviennent du fichier InputStops.lyr qui se trouve dans le dossier ToolData.

La structure du jeu d'entités Input Stops contient un champ de texte (Name). Ce champ permet de fournir des noms d'arrêts, tout en générant des trajets en établissant une correspondance entre la propriété Name et le champ de nom dans Appariement de champs, comme illustré ci-dessous. Si la valeur du champ de nom n'est pas spécifiée par l'utilisateur, les valeurs par défaut Emplacement 1, Emplacement 2 et ainsi de suite sont utilisées pour les noms d'arrêt.

Etant donné que la même couche d'itinéraire est utilisée pour chaque exécution de modèle, tous les arrêts existants doivent être supprimés avant d'en ajouter de nouveaux. Pour supprimer des arrêts existants, décochez l'option Ajouter aux emplacements existants illustrée ci-dessous.

Ajout d'arrêts
Ajout d'arrêts

L'outil Rechercher calcule l'itinéraire le plus court en fonction de l'attribut de réseau DriveTime et d'autres options spécifiées dans la couche Route. L'itinéraire calculé est écrit dans la sous-couche Routes de la couche d'itinéraires en sortie.

Les couches d'analyse de réseau (Route, par exemple) ne sont pas des types de données de paramètre en sortie pris en charge pour les clients ArcGIS Server. L'outil Sélectionner des données permet d'obtenir la sous-couche Routes à partir de la couche Route.

L'outil Directions permet de générer les itinéraires et de les exporter dans un fichier texte. Le fichier texte en sortie qui contient les trajets est créé dans le répertoire des tâches sur le serveur à l'aide de la variable en ligne %scratchworkspace%. La variable SolveSucceeded dérivée de l'outil Rechercher est utilisée en tant que précondition pour l'outil Directions. En d'autres termes, le fichier de trajet n'est généré que si l'outil Rechercher parvient à trouver un itinéraire entre des points en entrée.

Génération de trajets
Génération de trajets

Couche d'outils

Pour créer la couche d'outils Calculer l'itinéraire le plus court et les feuilles de route texte, faites glisser le modèle Calculer l'itinéraire le plus court et les feuilles de route texte vers la table des matières d'ArcMap. Etant donné que le modèle actualise la couche d'itinéraires existante, la sortie de la couche d'outils dérive sa symbologie de la sous-couche Itinéraire de la couche d'itinéraires de la table des matières.

Symbologie de la couche d'outils
Symbologie de la couche d'outils

Publication

SanFranciscoBaseMap.mxd est publié en tant que service de carte. ShortestRouteService.mxd est publié en tant que service de géotraitement sans service de carte obtenu, comme suit :

  1. Dans la fenêtre Catalogue, cliquez avec le bouton droit sur SanFranciscoBaseMap.mxd, puis cliquez sur Publier sur un serveur ArcGIS.
  2. Acceptez toutes les valeurs par défaut.
  3. Dans la fenêtre Catalogue, accédez à votre connexion administrateur de serveur sous le nœud Serveurs SIG, cliquez dessus avec le bouton droit, puis choisissez Ajouter un nouveau service. Nommez le service ShortestRouteService et sélectionnez Service de géotraitement comme type.
  4. Cliquez sur Suivant.
  5. Dans le volet suivant, sélectionnez Synchrone comme Type d'exécution. Pour l'option Les outils présentés par le service de géotraitement sont stockés dans, choisissez Une carte et spécifiez ShortestRouteService.mxd pour Carte. Comme vous allez tester votre service, cochez Afficher les messages.
    Publication de ShortestRouteService
    Publication de ShortestRouteService
  6. Cliquez sur Suivant. A partir de ce point, vous pouvez accepter les valeurs par défaut fournies par l'assistant et créer le service.

Utilisation

  1. Démarrez ArcMap avec un document vide.
  2. Créez, le cas échéant, une connexion utilisateur à ArcGIS Server à partir de la fenêtre Catalogue.
  3. Ajoutez le service de carte SanFranciscoBaseMap à la table des matières d'ArcMap.
  4. Dans la fenêtre Catalogue, sous votre nœud de connexion utilisateur Serveurs SIG, développez la boîte à outils ShortestRouteService et ouvrez l'outil Calculer l'itinéraire le plus court et les feuilles de route texte. Le résultat obtenu après avoir suivi cette procédure est illustré ci-dessous.
    Tâche Calculer l'itinéraire le plus court et les feuilles de route texte dans une session ArcMap
  5. Ajoutez au moins deux points pour créer des arrêts. Vous pouvez également spécifier des noms pour chacun des arrêts et cliquez sur OK pour exécuter la tâche.

    Une fois la tâche exécutée, la table des matières contient la couche en sortie Shortest Route, comme illustré ci-dessous. Les arrêts en entrée ne font pas l'objet d'une sortie dans le cadre de cette tâche. Pour les ajouter à la table des matières, passez par le nœud Entrées dans la fenêtre Résultats.

    Résultat de la tâche
    Résultat de la tâche
  6. Le fichier texte contenant les trajets est copié du répertoire de tâches du serveur vers l'espace de travail temporaire pour la session ArcMap en cours. Double-cliquez sur le fichier texte qui contient les trajets pour l'afficher dans la fenêtre Résultats.
    Affichage du fichier de trajet
    Affichage du fichier de trajet

Génération de feuilles de route HTML

L'outil Directions utilisé dans le modèle Calculer l'itinéraire le plus court et les feuilles de route texte peut générer des trajets au format texte ou XML. Les trajets au format XML peuvent être convertis en fichier HTML correctement formaté en appliquant une feuille de style à l'aide d'un script Python. Ce script (ApplyStyleSheet.py), qui se trouve dans le dossier Scripts du dossier ShortestRoute, permet de convertir des feuilles de route du format XML vers le format HTML. Le dossier de scripts contient également la feuille de style Dir2WebDocumentNoMaps.xsl qui spécifie le format du fichier HTML.

Contenu du dossier de scripts
Contenu du dossier de scripts

Installation de la bibliothèque Python externe

Le script ApplyStyleSheet.py utilise une bibliothèque externe Python (libxml2). Cette bibliothèque n'est pas fournie avec ArcGIS et n'est pas prise en charge par ESRI. Il s'agit d'un logiciel tiers externe. Vous devrez télécharger et installer cette bibliothèque sur vos machines conteneur ArcGIS Server. Accédez à http://xmlsoft.org/sources/win32/python/, téléchargez la dernière version de libxml2 pour Python 2.6 (par exemple, libxml2-python-2.7.4.win32-py2.6.exe, les versions antérieures risquant de ne pas fonctionner). Une fois le téléchargement terminé, double-cliquez sur le fichier exécutable pour installer la bibliothèque.

Création de l'outil de script

Pour utiliser le script ApplyStyleSheet.py qui figure dans le modèle, ajoutez-le à la boîte à outils ShortestRouteService en tant qu'outil de script nommé Convert Directions to HTML. Cet outil de script accepte la feuille de style et le fichier XML comme entrée et génère un fichier HTML en sortie.

Ajout de l'outil de script
Ajout de l'outil de script

Ajout de l'outil de script au modèle

Le modèle Générer l'itinéraire le plus court et les feuilles de route texte est renommé Générer l'itinéraire le plus court et les feuilles de route HTML pour que l'outil de script Convert Directions to HTML soit ajouté. Dans ce modèle, le paramètre du type de fichier en sortie pour l'outil Directions est converti en XML. Ce fichier XML et le fichier Dir2WebDocumentNoMaps.xsl sont utilisés comme variables en entrée pour l'outil de script. Le fichier HTML en sortie est écrit dans le répertoire des tâches du serveur à l'aide de la variable de ligne %scratchworkspace%.

Modèle Calculer l'itinéraire le plus court et les feuilles de route texte

Publication et utilisation

Vous pouvez publier le modèle Calculer l'itinéraire le plus court et les feuilles de route HTML en tant que nouvelle tâche dans le service de géotraitement ShortestRouteService créé précédemment, en procédant comme suit :

  1. Pour créer la couche d'outils Calculer l'itinéraire le plus court et les feuilles de route HTML dans ShortestRouteService.mxd, faites glisser le modèle Calculer l'itinéraire le plus court et les feuilles de route HTML de la fenêtre Catalogue vers la table des matières d'ArcMap.
  2. Enregistrez ShortestRouteService.mxd.
  3. Dans la fenêtre Catalogue, arrêtez et redémarrez le service de géotraitement ShortestRouteService.

Le service ShortestRouteService doit maintenant posséder une deuxième tâche nommée Calculer l'itinéraire le plus court et les feuilles de route HTML. Cette tâche est semblable à la tâche Calculer l'itinéraire le plus court et les feuilles de route texte, si ce n'est qu'elle génère les trajets au format HTML.

Feuilles de route au format HTML
Feuilles de route au format HTML

Rubriques associées


3/6/2012