Conseils relatifs aux performances des services de géotraitement
Les services de géotraitement doivent être rapides et efficaces. Les clients souhaitent et attendent un service rapide. Comme ArcGIS Server peut prendre en charge plusieurs clients à la fois, des services inefficaces risquent de surcharger votre serveur. À ressources informatiques équivalentes, plus vos services sont efficaces, plus nombreux sont les clients pouvant être pris en charge.
Vous trouverez ci-dessous des conseils et des techniques pour optimiser les performances de vos services. Ces techniques sont généralement classées : celles qui assurent des améliorations de performances conséquentes sont présentées en premier. Les derniers conseils peuvent vous faire gagner quelques dixièmes de seconde sur votre temps d'exécution, ce qui peut être utile pour certaines tâches.
Utilisez des répertoires de tâches locaux
Si votre configuration ArcGIS Server comporte plusieurs ordinateurs, configurez des répertoires des tâches locaux sur chacun d'entre eux. Cela améliorera considérablement le temps d'exécution. La configuration de répertoires de tâches locaux est une tâche d'administrateur système.
Utilisez des chemins d'accès locaux aux données et aux ressources
Si possible, stockez les données utilisées par votre service sur l'ordinateur qui exécute le service. Ne les distribuez pas via le réseau local (LAN). La lecture de données sur le LAN est plus lente que la lecture à partir d'un disque local. Les chiffres des performances varient mais, de manière empirique, le transfert des données sur le LAN prend deux fois plus de temps que la lecture sur le disque local.
Ecrivez des données en mémoire.
Vous pouvez écrire des données intermédiaires en mémoire. L'écriture de données en mémoire est plus rapide que leur écriture sur disque. Vous pouvez également écrire des données en sortie en mémoire, tant que vous n'utilisez pas de service de carte obtenu. Vous ne pouvez pas écrire de rasters en mémoire.
Pour en savoir plus sur l'écriture de données dans la mémoire
Utilisez le format raster de grille ESRI
ArcGIS prend en charge plusieurs formats de données raster différents. Si votre tâche utilise des données raster, celles-ci doivent généralement être stockées au format GRID pour que tous les processus de modèle puissent fonctionner dans des quadrillages. (Vous pouvez utiliser l'outil Raster vers autre format ou l'outil Copier un raster pour prétraiter tout raster au format GRID.) Le format GRID est généralement plus rapide pour le traitement que d'autres types raster, mais vous pouvez utiliser tout type raster pris en charge dans vos modèles et vos scripts.
Si vous ne pouvez pas stocker vos données raster au format GRID, vous pouvez utiliser l'outil Copier un raster dans votre modèle ou votre script pour copier une partie de votre raster, puis ne traiter que la partie concernée. Pour copier une partie d'un raster, utilisez l'outil Copier un raster et définissez l'environnement de l'étendue en sortie du géotraitement. Seules les cellules comprises dans l'étendue seront copiées.
Utilisez des couches d'une carte source
Si votre service utilise une carte source, vos modèles et vos scripts peuvent utiliser des couches de la carte source. Une couche référence un jeu de données sur le disque et certaines couches mettent en cache des propriétés relatives au jeu de données. Cela est particulièrement vrai pour les couches de jeux de données réseau, comme indiqué dans Exemple de service de géotraitement : polygones de temps de conduite. L'utilisation de la couche de jeu de données réseau à 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.
Evitez des transformations de coordonnées inutiles
Pour plus d'informations, consultez Remarques concernant la référence spatiale pour les services de géotraitement.
Ajout d'un index attributaire
Si votre tâche sélectionne des données à l'aide de requêtes attributaires, créez un index attributaire pour chaque attribut utilisé dans les requêtes. Vous pouvez utiliser l'outil Ajouter un index attributaire. Vous n'avez à créer l'index qu'une seule fois. Vous devez effectuer cette opération en dehors de votre modèle ou de votre script.
Ajout d'index spatiaux
Si votre modèle ou votre script formule des requêtes spatiales sur des fichiers de formes, créez un index spatial pour le fichier de formes à l'aide de l'outil Ajouter un index spatial. Si vous utilisez des classes d'entités de géodatabase, les index spatiaux sont créés automatiquement et mis à jour pour vous. Dans certains cas, recalculer un index spatial permet d'améliorer les performances, comme indiqué dans la rubrique Définition des index spatiaux
Prétraitez les données utilisées par vos tâches
Les services de géotraitement sont censés être des applications spécialisées offrant des réponses aux requêtes spatiales spécifiques posées par les clients Web. Les tâches ayant tendance à être des requêtes spécifiques sur des données connues, cela vous permet habituellement de prétraiter les données en vue d'optimiser la requête. Par exemple, l'ajout d'un attribut ou d'un index spatial est un prétraitement simple, qui ne doit être effectué qu'une seule fois, en dehors de votre tâche.
Voici quelques exemples de prétraitement issus des exemples de services de géotraitement fournis avec les données du didacticiel :
- Dans l'exemple de Service de géotraitement pas à pas : bassin versant, un raster d'accumulation et de direction de flux est créé pour prétraiter des données hydrologiques.
- Le modèle Sélectionner les terrains d'impôt par voisinage (optimisé) qui figure dans Exemple de service de géotraitement : sélection de données prétraite les données à l'aide de l'outil Intersecter.
- Pour les réseaux, utilisez l'outil Calculer les emplacements pour précalculer l'emplacement de points fixes sur le réseau. Consultez la rubrique Exemple de service de géotraitement : recherche d'entités à proximité sur un réseau de transport pour obtenir un exemple d'utilisation de l'outil Calculer les emplacements.
Ecrivez des données dans les fichiers de formes.
L'écriture de données dans des fichiers de formes est plus rapide que dans de nombreux autres formats (seule l'écriture de données dans la mémoire est plus rapide). Les fichiers de formes présentent toutefois de sérieuses limitations : nom des champs limité à 10 caractères, valeurs Null non prises en charge et prise en charge limitée de la date et de l'heure, par exemple. Ces limitations peuvent perturber votre modèle ou votre script. Pour plus d'information sur la sortie des fichiers de formes, consultez Remarques concernant le géotraitement pour la sortie de fichiers de formes.
Réduisez la taille de données
Tous les logiciels de traitement de données fonctionnent plus rapidement quand le jeu de données est petit. Il existe plusieurs manières de réduire la taille de vos données géographiques :
- Supprimez les attributs inutiles avec l'outil Supprimer un champ.
- Les entités linéaires et surfaciques possèdent des sommets qui définissent leur forme. Chaque sommet est une coordonnée x,y. Vos entités possèdent peut-être plus de sommets que nécessaire, ce qui augmente inutilement la taille de votre jeu de données.
- Si vos données proviennent d'une source externe, elles peuvent contenir des sommets en double ou des sommets si proches les uns des autres qu'ils ne contribuent pas à la définition de l'entité.
- Le nombre de sommets n'est pas ajusté à l'échelle d'analyse. Par exemple, vos entités contiennent des détails qui sont adaptés à une grande échelle, mais votre analyse ou votre présentation est à une petite échelle.
Utilisez des tâches synchrones plutôt qu'asynchrones
Synchrone signifie que le client attend la fin de l'exécution de la tâche par le serveur. Asynchrone signifie que le client peut effectuer d'autres travaux pendant que le serveur exécute la tâche. L'exécution de la même tâche en mode synchrone est un dixième de seconde plus rapide que son exécution en mode asynchrone.