Concepts clés des services de géotraitement
Un service de géotraitement contient des tâches de géotraitement auxquelles les clients Web peuvent accéder. Les tâches sont créées en publiant des outils de modèle et de script de géotraitement.
Il existe deux façons de créer un service de géotraitement dans ArcGIS Desktop :
- Publier une boîte à outils de géotraitement. Chaque outil de la boîte à outils devient une tâche du service de géotraitement.
- Publier un document ArcMap qui contient des couches d'outils de géotraitement. Chaque couche d'outils devient une tâche du service de géotraitement.
Les services de géotraitement et leurs tâches sont accessibles via le réseau Internet public et les intranets privés et peuvent être utilisés dans ArcGIS Desktop, ArcGIS Explorer et les applications Web (site Web créé avec le Gestionnaire ArcGIS Server, par exemple). Dans ArcGIS Desktop, les services de géotraitement peuvent être ajoutés à la fenêtre ArcToolbox en tant que boîte à outils, les tâches devenant des outils de la boîte à outils.
Le reste de cette rubrique aborde les principaux principes de conception, règles et conseils relatifs aux services de géotraitement et tâches.
Elaboration d'un service de géotraitement
Les clients Web sont des applications légères. Elles peuvent uniquement envoyer des paquets de données simples, telles que du texte, des nombres et des entités géographiques peu complexes, à un serveur. Un service de géotraitement utilise ces données simples, les traite et génère une sortie significative et utile : par exemple, zone d'évacuation possible en cas de fuite chimique dangereuse, étendue et force prévues d'un ouragan en approche, carte d'occupation du sol dans un bassin versant défini par l'utilisateur, plan parcellaire avec l'historique des détails de propriété ou permis pour un itinéraire de parade à travers un centre-ville. Ces services proposent d'innombrables possibilités.
Le géotraitement propose des outils de base, à la fois complets et performants, qui vous permettent d'élaborer un service qui traite les données en entrée. Si vous utilisez déjà le géotraitement, vous savez probablement comment créer des outils à l'aide de modèles et de scripts. Vous pouvez maintenant être amené à apprendre à concevoir votre outil de manière à utiliser les données en entrée les plus simples pour atteindre le plus grand nombre de clients possible.
Par exemple, supposez que vous disposez d'un modèle qui calcule un bassin versant en amont à partir d'un ensemble de points et qui extrait des polygones du bassin versant calculé. Les paramètres en entrée de ce modèle seraient :
- Un modèle numérique de terrain raster (MNT)
- Une classe d'entités ponctuelles
- Une classe d'entités surfaciques
Ce modèle est approprié pour ArcGIS Desktop, mais pas pour un service de géotraitement. Il doit être modifié comme suit :
- Au lieu de fonctionner dans une zone d'étude définie par l'utilisateur, il doit fonctionner dans une zone d'étude spécifique. Comme le modèle possède une zone d'étude connue et fonctionne sur un MNT spécifique, le MNT n'est plus un paramètre en entrée.
- En tant que service de géotraitement, les clients ne peuvent pas télécharger de classes d'entités. A la place, l'utilisateur numérise dans l'application cliente des points qui représentent des points d'écoulement de bassin versant. Le service capture ces points au MNT à l'aide d'une distance de capture pré-calculée adaptée à la résolution du MNT.
- Au lieu d'extraire des polygones à partir d'une classe d'entités en entrée, le modèle fonctionne sur un ensemble connu de données (polygones d'occupation du sol, par exemple). La sortie est constituée de polygones d'occupation du sol dans le bassin versant calculé. Le polygone en entrée n'est plus nécessaire.
Le modèle modifié utilise des entrées simples et répond à une requête spatiale spécifique : quelle est l'occupation du sol dans le bassin versant définie par ce point pour la zone d'étude ? Le modèle est publié en tant que service de géotraitement et utilisé dans un site Web destiné aux gestionnaires de l'aménagement du territoire dans la zone d'étude.
Cela ne signifie pas que vous ne pouvez pas créer services génériques à l'aide d'ArcGIS Server. L'exemple de service de bufferisation des points est un service entièrement générique qui met en zone tampon tout jeu d'entités ponctuelles. ArcGIS Server est flexible, et vous permet de créer, grâce à certaines techniques avancées ou programmations personnalisées, des services génériques qui traitent des jeux de données volumineux soumis par les utilisateurs. Mais la majorité des services sont axés sur des zones géographiques spécifiques, répondent à des requêtes spatiales spécifiques et fonctionnent sur des clients légers. La conception de services de géotraitement ArcGIS Server est motivée par le besoin de créer et distribuer ces types de services spécifiques.
Configuration du service de géotraitement
Vous pouvez créer des services de géotraitement en publiant deux ressources ArcGIS Desktop différentes : une boîte à outils de géotraitement ou un document ArcMap (.mxd) contenant des couches d'outils.
- Lorsque vous publiez une boîte à outils, tous les outils qu'elle contient deviennent des tâches du service de géotraitement.
- Lorsque vous publiez un document ArcMap, toutes les couches d'outils de la carte deviennent des tâches de géotraitement dans le service de géotraitement. (Les couches d'outils sont créées par glisser-déplacer des outils dans la table des matières ArcMap.)
- Lors de la publication d'un document ArcMap contenant des couches d'outils, vous pouvez aussi spécifier que vous souhaitez définir le document ArcMap comme un service de carte qui sera utilisé pour dessiner la sortie des tâches. Un service de carte qui dessine des sorties de tâche est appelé un service de carte obtenu.
Ces trois configurations sont illustrées ci-dessous.
Service de géotraitement à partir d'une boîte à outils
Lorsque vous publiez une boîte à outils, tous les outils qu'elle contient deviennent des tâches de géotraitement. La sortie des données par les tâches est renvoyée au client.
Service de géotraitement avec une carte source
Si vous avez utilisé des outils de géotraitement dans une session ArcMap, vous savez que ces outils peuvent souvent utiliser des couches qui figurent dans la table des matières d'ArcMap, ainsi que des données sur le disque.
De même, votre tâche de géotraitement peut utiliser des couches disponibles dans sa carte source. La carte source, dans ce cas, fait office de conteneur de couches. Vous pouvez générer des couches dans les paramètres en entrée de la carte source de votre tâche. Dans le graphique ci-dessous, la variable Données à extraire est un paramètre en entrée qui permet à l'utilisateur de choisir des couches dans la carte source.
Les tâches de géotraitement peuvent accéder uniquement aux couches disponibles dans sa carte source. Elles ne peuvent pas accéder aux couches disponibles dans d'autres services de carte ou dans l'application cliente.
L'utilisation de couches à partir d'une carte source de votre processus de modèle ou de script présente des avantages en termes de performances. L'illustration suivante montre un modèle qui utilise un jeu de données réseau (StreetsNetwork) pour construire une couche d'analyse d'itinéraires. La variable StreetsNetwork peut référencer une couche (c'est ici le cas) ou un jeu de données sur le disque. L'ouverture d'un jeu de données réseau est onéreuse par rapport à d'autres types de jeux de données, car les jeux de données réseau contiennent plusieurs structures et tables de données avancées qui doivent être lues et mises en cache. L'utilisation de la couche à la place du jeu de données présente un avantage en termes de performances, car ArcMap ouvre le jeu de données une fois, met en cache des propriétés de base du jeu de données et garde le jeu de données ouvert. A l'exécution du modèle, il n'est pas nécessaire de rouvrir le jeu de données, car la carte source l'a déjà ouvert, ce qui améliore les performances. Inversement, si la variable StreetsNetwork a directement référencé le jeu de données, ce dernier est ouvert à chaque exécution du modèle, ce qui dégrade les performances.
Pour l'analyse de réseau, vous souhaitez toujours utiliser le jeu de données réseau comme couche dans la carte source et utiliser cette couche dans les variables de modèle. Pour d'autres types de jeux de données, comme les entités et les rasters, l'utilisation de couches dans la carte source présente un maigre avantage en termes de performances.
Services de géotraitement avec un service de carte obtenu
Les services de géotraitement peuvent utiliser un service de carte obtenu pour créer une carte de type image numérique des résultats de tâche. Les cartes numériques contiennent des représentations visuelles de jeux de données géographiques qui communiquent des informations. Les cartes numériques sont transférées sur le Web en tant qu'images (.jpg, par exemple). Une carte de type image contient, à nombre d'octets égal, beaucoup plus informations pouvant être interprétées par l'homme que les entités brutes figurant dans une classe d'entités. Les cartes de type image sont également gérables. Elles sont facilement compressibles et peuvent être fractionnées en unités gérables. Il existe également des méthodes établies pour les transporter et les afficher sur le Web.
Les cartes de type image, qui sont créées par un service de carte ArcGIS Server, sont issues de la publication d'un document ArcMap (.mxd). En raison de ses caractéristiques, vous pouvez créer une carte de type image pour les résultats de votre tâche de géotraitement, puis transférer l'image sur le Web à la place du jeu ou des jeux de données obtenus. Les services de géotraitement peuvent disposer d'un service de carte obtenu utilisé par ArcGIS Server pour créer des cartes de type image de vos données en sortie.
Les services de carte obtenus sont utilisés dans les cas suivants :
- Le résultat de votre tâche est un jeu de données (potentiellement) important.
- Le type de données de votre sortie n'est pas pris en charge par le client, comme les rasters dans ArcGIS Explorer. Dans ce cas, utilisez le service de carte obtenu pour afficher la sortie.
- Vous souhaitez protéger le résultat de votre tâche en autorisant uniquement son affichage sous forme de carte et non son téléchargement en tant que jeu de données.
- Vous avez une cartographie complexe qui doit être dessinée par le service de carte obtenu et non par le client.
Lorsque vous utilisez des services de carte obtenus, vous devez tenir compte du fait qu'il existe deux services : le service de géotraitement et le service de carte obtenu. Ces deux services s'exécutent indépendamment l'un de l'autre. À l'exécution de la tâche, ArcGIS Server exécute d'abord la tâche de géotraitement, puis le service de carte obtenu pour dessiner la sortie du service de géotraitement. A cause de cet ordre d'exécution, le service de carte obtenu a besoin de jeux de données sur le disque produits par le service de géotraitement. Cela signifie que la sortie des tâches dans le service de géotraitement doit correspondre à des jeux de données sur le disque, et non à des couches ni à des jeux de données en mémoire.
Fonds de carte pour votre service de géotraitement
Pour la plupart des tâches de géotraitement, l'utilisateur a besoin d'un fond de carte comme référence géographique. Il peut s'agir d'un fond de carte de routes, de zones peuplées, de points d'intérêt ou de toutes autres entités.
Votre service de géotraitement repose probablement sur un fond de carte particulier qui guide l'utilisateur lors de l'entrée d'emplacement. Par exemple, l'utilisateur génère un point qui doit tomber dans une limite de parcelles d'une ville donnée et le fond de carte doit indiquer les limites de parcelles de cette ville. De plus, votre service peut fonctionner uniquement dans une certaine zone d'étude, par opposition à un service qui fonctionne partout. La zone d'étude peut être considérée comme l'étendue de géotraitement, car le service a seulement connaissance des données de la zone d'étude.
Une erreur courante consiste à d'utiliser le service de carte obtenu pour afficher un fond de carte pour votre service de géotraitement. Par exemple, si l'utilisateur identifie une parcelle par pointer-cliquer et que votre tâche dessine la parcelle identifiée symbolisée par un attribut de la parcelle, vous pensez d'abord à utiliser le service de carte obtenu pour afficher les données de parcelles en entrée (le fond de carte), ainsi que la parcelle identifiée. Voici deux raisons de ne pas utiliser le service de carte obtenu comme un fond de carte :
- Quand un service de carte obtenu est ajouté à l'application, toutes les couches du service de carte sont visualisables. Ces couches incluent les couches d'outils de géotraitement utilisées pour dessiner la sortie, les couches susceptibles de contenir des données sensibles ou les couches utilisées par votre service de géotraitement mais qui ne semblent pas logiques pour l'utilisateur (comme les couches d'outils).
- Les fonds de carte sont multi-échelles et multi-résolutions. Lorsque vous effectuez un zoom avant ou arrière, le fond de carte change et affiche des détails à grande échelle et agrège des détails dans des généralisations à petite échelle (par exemple, les rivières se transforment d'entités linéaires à petite échelle en entités surfaciques à grande échelle). La création d'un fond de carte multi-échelles et multi-résolutions qui dessine rapidement n'est pas du ressort de votre service de carte obtenu. Sa fonction est de dessiner des sorties. Vous devez séparer la conception et l'implémentation de services de carte de fond de carte de celles des services de carte obtenus.
De retour dans l'application d'identification de la parcelle par pointer-cliquer, vous devez disposer d'un service de carte pour afficher les données de la parcelle (le fond de carte) et utiliser le service de carte obtenu pour renvoyer la parcelle à des fins d'affichage, tout en pouvant faire l'objet d'un codage par couleur par un attribut. Les deux services de carte utilisent le même jeu de données de parcelle (cela ne pose aucun problème). Il vous suffit de séparer la tâche d'affichage d'un fond de carte de référence de celle d'affichage des résultats.
Autre aspect à prendre en compte lors de la conception des services de carte : les caractéristiques du client. Pour une application Web, vous disposez d'un contrôle total sur la carte et les tâches de géotraitement disponibles dans l'application. Les services de carte obtenus ne doivent pas apparaître comme une couche de carte dans la table des matières de l'application Web. Les clients ArcMap et ArcGIS Explorer sont un peu plus problématiques, car, en pratique, les utilisateurs peuvent parcourir l'ensemble des cartes ou des services de géotraitement et obtenir, au final, des non-concordances entre l'étendue de fond de carte et celle de géotraitement. Lors de la publication des services, aucune option ne permet de spécifier "lorsque vous ajoutez ce service de géotraitement, ajoutez également ces autres services de carte". Vous pouvez toutefois distribuer des documents ArcMap (.mxd) ou ArcGIS Explorer (.nmf) qui contiennent les services corrects. Vous pouvez également intégrer une documentation sur les tâches pour vos services et tâches de géotraitement indiquant les services de carte nécessaires. La documentation de tâche est accessible par tous les clients.
Types de données et fonctionnalités du client
ArcGIS Explorer est une application cliente légère, ce qui implique une installation de petite taille, contrairement à ArcGIS Desktop. Les applications Web sont des sites Web accessibles via un navigateur Internet. Les navigateurs sont des clients très légers (ou minces). Du fait de la nature légère de ces clients, la plage complète des types de données en entrée et en sortie qui figurent dans ArcGIS Desktop n'est pas disponible pour ces clients ; sinon, le client serait trop lourd (ArcGIS Desktop, par exemple). Par exemple, les clients légers ne prennent pas en charge de rasters comme entrée d'une tâche de géotraitement.
Le tableau suivant récapitule les principaux types de données de paramètre en entrée pour les trois clients.
Type de données de paramètre en entrée |
Pris en charge sur les clients ArcGIS Desktop ? |
Pris en charge sur le client ArcGIS Explorer ? |
Pris en charge sur les clients d'application Web ? |
---|---|---|---|
Oui |
Oui |
Oui |
|
Oui |
Oui |
Oui |
|
Classe d'entités |
Non (mais l'entrée Classe d'entités est indirectement prise en charge avec le type de données Jeu d'entités) |
Non |
Non |
Table |
Non (mais l'entrée Table est indirectement prise en charge avec le type de données Jeu d'enregistrements) |
Non |
Non |
Raster |
Oui |
Non |
Non |
Types Standard (tel que Long, Double, Booléen, Date, Chaîne) et Unité Linéaire (par exemple, "1000 mètres") |
Oui |
Oui |
Oui |
Fichier (.zip ou .xml, par exemple) |
Oui |
Oui |
Oui |
Couche (tout type de couche ; par exemple, Couche d'entités, Couche Raster, Couche Network Analyst) |
Seulement les couches disponibles dans le service de carte obtenu ou la carte source |
Seulement les couches disponibles dans le service de carte obtenu ou la carte source |
Seulement les couches disponibles dans le service de carte obtenu ou la carte source |
Tout type de données non répertorié ci-dessus est converti en type de données de chaîne ou non autorisé. La rubrique Types de données en entrée et en sortie détaille davantage les types de données des services de géotraitement.
Il est très probable que vos modèles et scripts existants acceptent des classes d'entités et des tables en entrée, car ce sont les types de jeu de données les plus couramment utilisés dans le géotraitement. Cela signifie que ces modèles et scripts existants devront être modifiés avant leur publication en tant que tâches de géotraitement. Si votre modèle ou script accepte une classe d'entités en entrée, vous pouvez le modifier de sorte qu'il accepte un jeu d'entités à la place. Si votre modèle accepte une table en entrée, vous pouvez le modifier de sorte qu'il accepte un jeu d'enregistrements à la place.
Le tableau suivant récapitule les principaux types de données de paramètre en sortie pour les trois clients.
Type de données de paramètre en sortie |
Pris en charge sur les clients ArcGIS Desktop ? |
Pris en charge sur le client ArcGIS Explorer ? |
Pris en charge sur les clients d'application Web ? |
---|---|---|---|
Classe d'entités |
Oui |
Oui |
Oui |
Raster |
Oui |
Non (peut uniquement être affiché dans la carte à l'aide d'un service de carte obtenu) |
Non (peut uniquement être affiché dans la carte à l'aide d'un service de carte obtenu) |
Table |
Oui |
Non (les services qui possèdent un type de données de table en tant que paramètre en sortie ne sont pas affichés dans la liste des tâches disponibles) |
Oui |
Types Standard (tel que Long, Double, Booléen, Date, Chaîne) et Unité Linéaire (par exemple, "1000 mètres") |
Oui (affiché dans le résultat des services dans l'onglet Résultats de la fenêtre ArcToolbox) |
Oui (affiché dans le Résultat des tâches) |
Oui |
Fichier |
Oui |
Oui |
Oui |
Utilisation simultanée de données (%scratchworkspace%)
Une tâche de géotraitement peut être utilisée simultanément par plusieurs utilisateurs. Pour les données qui sont lues par votre modèle ou script, il n'existe pas de problèmes d'accessibilité simultanée. Tous les utilisateurs peuvent lire simultanément les mêmes données. Cependant, les données créées ou actualisées par votre service nécessitent une connaissance des problèmes d'écritures simultanée.
Création de données
En règle générale, les tâches de géotraitement créent des données intermédiaires et des données en sortie. ArcGIS Server fournit un mécanisme qui garantit l'absence de problèmes d'accessibilité simultanée avec les données intermédiaires et en sortie. Lorsqu'une tâche est exécutée, ArcGIS Server crée un dossier de tâche unique dans un répertoire de tâches. Ce dossier de tâches contient un dossier nommé Scratch, qui contient une géodatabase fichier nommée Scratch, comme illustré ci-dessous. Une fois la structure de ce dossier créée, ArcGIS Server définit la variable d'environnement de l'espace de travail temporaire de géotraitement sur le dossier temporaire (pas la géodatabase temporaire, mais le dossier). Pour que vos modèles et vos scripts puissent facilement détecter et utiliser cet espace de travail temporaire, entourez le nom de la variable d'environnement (%scratchworkspace%) de symboles de pourcentage. Vous devez écrire vos données intermédiaires données en sortie dans le dossier ou la géodatabase temporaire.
Il existe deux méthodes pour vous assurer que les données sont écrites dans le dossier ou la géodatabase temporaire :
- Dans ModelBuilder, cliquez avec le bouton droit sur une variable de données intermédiaire, puis sélectionnez Géré.Attention :
Ne définissez pas de variables en sortie sur Géré, mais uniquement les variables intermédiaires.
- Utilisez la substitution de variable (%scratchworkspace%) pour les chemins. Par exemple :
%scratchworkspace%/templines.shp %scratchworkspace%/scratch.gdb/outWatershed
Vous pouvez également écrire des données intermédiaires dans la mémoire. L'écriture de données dans la mémoire est plus rapide que l'écriture sur le disque. Si vous écrivez des données intermédiaires dans la mémoire, il n'est pas nécessaire de définir la variable de modèle comme étant intermédiaire ou gérée, car les données seront supprimées une fois la tâche exécutée.
Mise à jour de données existantes
Toute tâche qui actualise des données existantes est particulièrement intéressante. Par exemple, une tâche dans un service peut mettre à jour une table ou une classe d'entités existante, en ajoutant de nouvelles lignes ou entités (à l'aide de l'outil Ajouter, par exemple) ou en mettant à jour des attributs existants (à l'aide de l'outil Calculer une valeur, par exemple). Si le service de géotraitement est configuré pour autoriser les instances multiples simultanées (utilisateurs) et que des instances multiples s'exécutent, cela peut occasionner une collision d'instances multiples qui essaient d'actualiser le même jeu de données. Dans ces cas, vous devez limiter le nombre d'instances à une lors de la configuration du service. Ainsi, ArcGIS Server mettra en file d'attente les demandes et seule une instance accédera aux données à la fois. Le verrouillage constitue un autre problème. Si vous actualisez un jeu de données et que ce dernier est également une couche d'un service de carte, ce service verrouillera les données et la mise à jour échouera. Ne créez pas de services de carte qui affichent des données actualisées par un autre service.
Symbolisation des données
Vous disposez de deux choix pour dessiner les données en sortie d'une tâche :
- Le client dessine les données.
- Le service de carte obtenu dessine les données.
Lorsque le client dessine les données en sortie, deux informations sont envoyées au client : les données et une description du dessin d'une couche. La couche qui dessine la description contient les informations que vous spécifiez dans l'onglet Symbologie de la boîte de dialogue Propriétés d'une couche. Ces informations incluent la manière de grouper les données (la symbologie de couche) et les symboles à utiliser (types de symboles). Seuls quelques symbologies de couche et types de symboles sont pris en charge par les clients.
Quand un service de carte obtenu dessine les données, la symbologie de couche et les types de symbole disponibles dans la couche d'outils correspondante sont utilisés. Lors de l'utilisation d'un service de carte obtenu, vous pouvez utiliser n'importe quelle symbologie de couche et n'importe quel type de symbole, car ArcMap (exécuté sur le serveur) affichera les données et renverra une image de la carte complète au client. Les fonctions du client n'affectent pas l'affichage du résultat par ArcMap.
Pour en savoir plus sur la définition de la symbologie en sortie pour les tâches de géotraitement
Validation
Si vous avez utilisé des outils de géotraitement dans ArcGIS Desktop, vous avez probablement remarqué la manière dont les outils de géotraitement valident vos entrées. Une liste de champs qui changent en même temps qu'une table en entrée est un exemple de validation.
D'autres exemples de validation incluent des avertissements () et des erreurs (), la modification de valeurs par défaut en fonction des données en entrée, ainsi que l'activation et la désactivation de paramètres.
Aucune validation ne se produit avec les tâches de géotraitement. Par exemple, supposez que vous créez un modèle qui a un paramètre de couche et un paramètre de champ en entrée. La liste de champs affichée dans le paramètre de champ dépend de la valeur du paramètre de couche. Dans ArcGIS Desktop, si vous changez la couche, la liste de champs est modifiée. Ce n'est pas le cas avec une tâche :
- La liste des champs contient la liste au moment de la publication.
- Si l'utilisateur de votre tâche sélectionne une autre couche, la liste de champs ne sera pas actualisée.
Sécurité
Votre serveur SIG représente un investissement, en effort et en ressources, que vous voulez protéger. ArcGIS Server contient des mécanismes de protection qui empêchent les utilisateurs non autorisés d'accéder à vos services et applications. Vous pouvez aussi utiliser ArcGIS Server pour configurer des niveaux d'accès pour les différents groupes de votre organisation.
Un service de géotraitement propose deux propriétés de protection :
- Vous pouvez limiter le nombre d'entités ou d'enregistrements renvoyés par le service. Pour empêcher l'utilisateur de télécharger toutes les entités ou les enregistrements, vous pouvez définir cette limite sur zéro.
- Quand un service de géotraitement s'exécute, il écrit des messages qui peuvent être affichés par l'utilisateur. Certains de ces messages contiennent des chemins d'accès aux données, que vous ne souhaitez pas divulguer à l'utilisateur. Vous pouvez désactiver la messagerie pour un service de géotraitement.