Traitement tuilé de jeux de données volumineux

Une logique opérationnelle appelée traitement de subdivision adaptative est appliquée afin d’améliorer la performance et l’évolutivité des outils de superposition d’entités tels que Agréger et Intersecter. L’utilisation de cette logique est déclenchée lorsque les données ne peuvent pas être traitées avec la quantité de mémoire virtuelle disponible. Afin de respecter la mémoire virtuelle disponible, ce qui permet d’améliorer considérablement les performances, le traitement est réalisé de manière incrémentielle sur des subdivisions de l’étendue d’origine. Les entités à cheval sur les limites de ces subdivisions (également appelées tuiles) sont fractionnées le long de la limite de la tuile et réassemblées en une seule entité pendant la dernière étape du traitement. Les sommets ajoutés à ces limites de tuile sont conservés dans les entités en sortie. Des limites de tuile peuvent également subsister dans la classe d’entités en sortie lorsqu’une entité en cours de traitement est si grande que le processus de subdivision ne peut pas la restituer dans son état d’origine en raison d’un manque de mémoire virtuelle.

La logique de traitement de subdivision adaptative est dynamique. Elle repose sur la mémoire virtuelle disponible et la complexité des données. L’exécution de la même opération de superposition sur la même machine peut avoir pour résultat de diviser différemment les données en tuiles si la quantité de mémoire disponible change de quelque façon que ce soit.

Une optimisation du traitement de subdivision adaptative s’ajoute au traitement parallèle des tuiles. Lorsque le traitement parallèle est activé, chaque tuile traitée par un cœur différent partage la quantité totale de mémoire virtuelle sur le système. Cela signifie que pour traiter plusieurs tuiles à la fois, chaque tuile doit être plus petite que si elle était traitée séquentiellement. Le traitement de subdivision adaptative garde une trace de la taille de chacune des tuiles pour s’assurer que les tuiles traitées simultanément au cours du traitement parallèle ne dépasse pas la quantité totale de mémoire virtuelle disponible. Il est possible que le traitement parallèle ne soit pas toujours plus rapide. Pour parler de gains en termes de performances, la taille et la complexité des données doivent être supérieures aux frais engendrés par la gestion des processus parallèles. Consultez la documentation de chaque outil pour savoir comment activer le traitement parallèle pour les outils qui le permettent.

Avantages de subdiviser des données

Les outils donnent les meilleurs résultats lorsque le traitement peut être réalisé dans la mémoire virtuelle disponible de l’ordinateur (mémoire libre non utilisée par le système ou d’autres applications). Cela peut parfois s’avérer impossible lors de l’utilisation de jeux de données contenant un grand nombre d’entités, des entités complexes présentant des interactions complexes ou des entités contenant des centaines de milliers ou des millions de sommets (ou une association de ces trois caractéristiques). Sans l’utilisation du tuilage, la mémoire disponible est rapidement épuisée et le système d’exploitation commence à paginer (utiliser le stockage secondaire comme s’il s’agissait de la mémoire principale). La pagination entraîne une dégradation des performances et finit par épuiser les ressources du système, aboutissant à l’échec de l’opération. Le tuilage permet d’éviter la pagination. Dans des cas extrêmes, la gestion de la mémoire de traitement est transmise au système afin que l’opération puisse être terminée. Le système d’exploitation utilise alors toutes les ressources à sa disposition pour ce faire.

Lorsque les applications 64 bits sont devenues la norme, tout le monde pensait que tout irait plus vite. Cela n’est toutefois pas toujours le cas. L’utilisation du traitement 64 bits permet de réaliser plus d’opérations en même temps, ce qui peut donner l’impression de performances accrues. Certaines opérations sont pourtant ralenties si on considère l’accroissement de travail. Une autre idée reçue consiste à penser que le traitement sera plus rapide si vous transférez toutes vos données en mémoire. Même si cela peut être le cas pour les données simples, cela n’est pas le cas pour les opérations spatiales de grand envergure et complexes. Pour le traitement des outils de superposition, rassembler toutes les données en mémoire et les analyser toutes en même temps s’apparente au traitement de la tuile unique de niveau supérieur indiqué plus haut. Cela est plus lent que le tuilage des données de manière plus extensive. Le tuilage peut être réduit, mais pas éliminé, pour optimiser les performances. L’utilisation du traitement 64 bits permet également le traitement parallèle des tuiles. Cela peut entraîner une amélioration des performances dans de nombreux cas.

Traitement des tuiles

Chaque processus commence avec une seule tuile qui couvre toute l'étendue des données. Si les données de la tuile unique sont trop volumineuses pour être traitées dans la mémoire virtuelle disponible, elle est subdivisée en quatre tuiles égales. Le traitement commence alors sur une sous-tuile, à nouveau sous-divisée si les données de ce deuxième niveau de tuiles sont trop volumineuses. Cette opération se poursuit jusqu’à ce que les données de chaque tuile puissent être traitées dans la mémoire virtuelle disponible. Voir l'exemple ci-dessous :

Etendue des jeux de données en entrée

Commencez avec l’emprise de l’ensemble des entités en entrée.

Niveau de tuile de géotraitement 1

Le processus commence avec une tuile qui couvre toute l'étendue de l'ensemble des jeux de données. Elle est désignée par le niveau de tuile 1.

Niveau de tuile de géotraitement 2

Si les données sont trop volumineuses pour le traitement en mémoire, la tuile de niveau 1 est subdivisée en quatre tuiles égales. Ces quatre sous-tuiles sont appelées tuiles de niveau 2.

Tuile de géotraitement adaptatives

Selon la taille des données de chaque tuile, certaines tuiles sont encore subdivisées, contrairement à d’autres.

Outils qui utilisent les subdivisions

Les outils suivants de la boîte d’outils Outils d’analyse utilisent une logique de subdivision lors du traitement de données volumineuses :

  • Zone tampon : lors de l’utilisation de l’option de fusion.
  • Découpage : pas dans tous les cas. Un traitement par lots interne est maintenant employé dans de nombreux cas.
  • Effacer
  • Identité
  • Intersecter
  • Fractionnement
  • Différence symétrique
  • Agréger
  • Mettre à jour

Les outils suivants de la boîte d’outils Gestion des données utilisent également une logique de subdivision lors du traitement de jeux de données volumineux :

  • Fusionner
  • Entités vers lignes
  • Entités vers polygones
  • Polygone vers ligne

Indication de la progression au cours de la subdivision adaptative

La subdivision adaptative est dynamique. Elle repose sur la quantité de ressources disponibles sur la machine où le traitement s’exécute. Il n’y a pas de nombre défini d’étapes pour réaliser l’analyse. Au cours du traitement d’une tuile, il est possible que cette dernière ne puisse pas être traitée dans la mémoire disponible. Ce tuile est alors divisée et les nouvelles tuiles (divisées) sont traitées. Il est également possible qu’une ou que toutes ces nouvelles tuiles ne puissent pas non plus être traitées dans les limites de la mémoire disponible. Comme aucune méthode ne permet de déterminer efficacement le nombre de tuiles requises avant le traitement, il n’est pas possible de fournir un message de progression de décompte standard. Par conséquent, les messages et la barre de progression que vous voyez pour les outils qui utilisent la logique de subdivision indiquent uniquement la progression de chaque tuile traitée

Échec d’un processus avec une erreur de mémoire insuffisante ou une dégradation des performances a lieu

La subdivision peut être inutile pour le traitement d’entités extrêmement grandes (comportant plusieurs millions de sommets). Le fractionnement et le réassemblement répété d’entités extrêmement grandes le long des limites de tuile est coûteux en termes de mémoire et peut provoquer des erreurs de mémoire insuffisante ou de performances dégradées si l’entité est trop grande. Quelle est la taille acceptée ? Cela dépend de la quantité de mémoire virtuelle disponible (mémoire libre non utilisée par le système ou d’autres applications) sur l’ordinateur exécutant le traitement. Moins la mémoire disponible est importante et plus l’entité considérée comme trop volumineuse est petite. Certaines grandes entités peuvent ralentir les performances ou provoquer des erreurs de mémoire insuffisante sur une configuration d’ordinateur et pas sur une autre. Des performances ralenties ou une erreur de mémoire insuffisante peut survenir de manière aléatoire sur une même machine, en fonction des ressources utilisées par d’autres applications. Les entités très grandes comportant de nombreux sommets peuvent correspondre par exemple aux bordures de route pour une ville entière ou à un polygone représentant un estuaire de rivière complexe.

Certaines méthodes permettent de gérer les entités trop volumineuses. Une technique conseillée consiste à utiliser l'outil Dés pour diviser de grandes entités en entités plus réduites avant le traitement.

Il est également possible d’utiliser l’outil Multi-parties vers une partie sur les grandes entités. Avant d’exécuter l’outil, vérifiez que la classe d’entités possède un champ d’identifiant unique de sorte qu’après l’exécution de l’outil Multi-parties vers une partie, chacune des parties disposera de l’identifiant de l’entité d’origine à laquelle elle appartient. Si l’entité volumineuse comporte plusieurs parties (par exemple des entités individuelles avec des centaines de milliers de parties), sa conversion en une seule partie vous permet de traiter les parties individuellement. Le cas échéant, après l’exécution de l’outil de superposition de votre choix sur la version de partie unique des données, vous pouvez recréer l’entité multi-parties en fusionnant le champ d’identifiant unique.

Des erreurs de mémoire insuffisante ou une dégradation des performances peuvent également survenir lors du traitement de zones présentant un chevauchement extrême. Un exemple de chevauchement extrême consiste à exécuter l’outil Agréger ou Intersecter sur les résultats d’une opération de zone tampon qui a été exécutée sur un ensemble de points très denses. La zone tampon en sortie contient de nombreuses entités de zone tampon superposées. Lorsque vous sélectionnez un point dans une zone d’entités de zone tampon très denses, des milliers, des dizaines de milliers ou même des centaines de milliers de zones tampon superposées peuvent être renvoyées. L’exécution de l’outil Intersecter ou Agréger dans cette zone tampon en sortie permet de créer quantités de nouvelles entités qui représentent chaque relation de chevauchement unique.

Par exemple, deux couches d'entités sont illustrées ci-dessous. L'une contient 10 entités (des zones tampon autour des points) et l'autre contient une entité (un carré).

Entrée 1

L'entrée 1 contient 10 entités surfaciques superposées, étiquetées par OID.

Entrée 2

Entrée 2 : 1 polygone, étiqueté par OID.

L'illustration ci-dessous présente le résultat de l'outil Intersection avec les deux couches d'entités ci-dessus. Notez que toutes les superpositions (intersections) parmi toutes les entités sont calculées, quelle que soit la couche d'entités en entrée à laquelle elles appartiennent. Ceci peut générer un bien plus grand nombre d'entités que celui des entrées d'origine. La sortie compte plus de polygones (167 entités) qu'il n'y en avait dans les entrées combinées (le total des entrées était de 11 entités). Avec cette augmentation du nombre de nouvelles entités dans l'outil Intersection, la sortie peut croître très rapidement, selon la complexité de la superposition dans les entrées.

Sortie de l’outil Intersecter
La sortie de l’outil Intersecter montre 167 entités en sortie, étiquetées par OID.

Pour éviter les erreurs de mémoire insuffisante ou une dégradation des performances avec des jeux de données volumineux complexes, vous pouvez traiter vos données en supprimant une partie de la complexité de chevauchement et en exécutant de manière itérative le traitement de superposition. Vous pouvez également examiner les outils Superposition deux par deux pour voir si l’un d’entre eux offre des fonctions similaires à ce que vous tentez de réaliser.

Remarque :
Pour utiliser les outils de superposition deux par deux, vous pouvez être amené à modifier votre processus en raison des différences de fonctions et de sorties. Consultez la documentation de l’outil pour en savoir plus.

Une erreur de mémoire insuffisante peut également se produire si une deuxième application ou un deuxième traitement est exécuté pendant le traitement par un outil. Ce deuxième traitement peut utiliser une partie de la mémoire libre que le processus de subdivision doit utiliser, obligeant le processus de subdivision à demander plus de mémoire que l’espace réellement disponible. Il est déconseillé d’effectuer d’autres opérations sur un ordinateur lors du traitement de jeux de données volumineux.

Formats des données volumineuses

Les géodatabases d’entreprise et fichier prennent en charge les jeux de données très volumineux. Il est conseillé de les utiliser comme espace de travail en sortie lorsque vous traitez des jeux de données très volumineux ou complexes. Pour les géodatabases d’entreprise, consultez l’administrateur de base de données pour plus d’informations sur les règles de chargement de données. L’exécution d’opérations de chargement imprévu ou non autorisé de volumes de données importants peut être restreinte.