Présentation rapide de la définition d'un index spatial
L'index spatial permet de localiser rapidement des entités lorsque vous affichez, mettez à jour ou interrogez des données. Par conséquent, il est important de créer un index spatial adéquat, notamment lorsque vous manipulez des volumes de données importants.
Les index spatiaux fonctionnent différemment selon la source de données. Les géodatabases fichier et ArcSDE dans DB2, les géodatabases ArcSDE dans Oracle et SQL Server qui utilisent le stockage de géométrie binaire et les géodatabases ArcSDE dans Oracle qui utilisent le stockage ST_Geometry utilisent un système comportant jusqu'à trois grilles comme index spatial. Les géodatabases personnelles utilisent une seule grille. Une grille est définie par une taille, appelée taille de grille. Il s'agit de la taille de chaque cellule de la grille, spécifiée dans les unités du système de coordonnées de la classe d'entités. Oracle Spatial, Informix et PostgreSQL n'utilisent pas de taille de grille, mais un index R-tree. De même, l'index spatial n'utilise pas de grilles avec les types spatiaux SQL Server.
Mode de gestion par ArcGIS des index dans les géodatabases fichier et ArcSDE
ArcGIS recrée automatiquement l'index spatial, à la fin de certaines opérations dans les géodatabases fichier et ArcSDE pour optimiser celui-ci. La section suivante explique comment ArcGIS gère l'index spatial :
- Lorsque vous créez une classe d'entités vide avec l'assistant Nouvelle classe d'entités, un index spatial est créé. Si la classe d'entités utilise une valeur de grille d'index spatial, l'index est créé avec des tailles de grille 0,0,0 sans être terminé. Après avoir chargé les données à l'aide du chargeur de données simples dans ArcCatalog ou à l'aide de l'outil Juxtaposer, ArcGIS crée entièrement l'index spatial au cours la dernière étape du chargement. Il calcule des tailles de grille qui soient adaptées aux entités qui viennent d'être ajoutées.
- Si vous importez des données à partir d'une géodatabase personnelle, d'un fichier de formes ou d'une couverture, ou que vous importez un dessin assisté par ordinateur (DAO) ou des données Smart Data Compression (SDC), un index spatial est calculé automatiquement pour la nouvelle classe d'entités.
- Lorsque vous utilisez les commandes Copier et Coller d'ArcCatalog pour copier une classe d'entités à partir d'une géodatabase personnelle, fichier ou ArcSDE, l'index spatial est automatiquement recréé. L'index spatial est également recréé si vous copiez une classe d'entités depuis Oracle Spatial, PostgreSQL ou Informix. Si vous copiez une classe d'entités d'une géodatabase fichier ou ArcSDE qui utilise des tailles de grille (types Oracle binaire et ST_Geometry, SQL Server binaire ou DB2) vers une autre géodatabase qui utilise des tailles de grille, l'index est copié avec les données source et non recalculé.
- Lorsque vous utilisez un outil de géotraitement qui crée une classe d'entités, les entités de la nouvelle classe d'entités sont examinées et un nouvel index spatial est calculé automatiquement.
- Lorsque vous enregistrez des mises à jour dans une classe d'entités de géodatabase fichier dans ArcMap, ArcGIS analyse l'index spatial. Si les tailles de grille sont définies sur 0,0,0, il recrée automatiquement l'index avec une taille de grille appropriée en fonction des entités qui viennent d'être ajoutées. Cela n'a pas lieu dans les géodatabases ArcSDE.
- Les classes d'entités de géodatabase fichier compressées n'utilisent pas le même type d'index spatial que les classes d'entités non compressées. Lorsque vous compressez une classe d'entités de géodatabase fichier, elle est automatiquement réindexée. Cet index ne peut pas être modifié. Lorsque vous décompressez la classe d'entités, le même index spatial que la classe d'entités avait avant la compression est rétabli automatiquement.
Quand mettre à jour l'index dans les géodatabases fichier et ArcSDE
Comme ArcGIS gère l'index spatial dans les géodatabases fichier et ArcSDE, vous devez rarement définir ou recalculer l'index manuellement. La modification ou le nouveau calcul de l'index n'est nécessaire que dans les cas suivants, qui restent rares :
- Recalculez l'index manuellement après avoir ajouté un grand nombre d'entités dont la taille est différente de celle des entités déjà présentes dans la classe d'entités. Cela s'applique exclusivement à l'ajout d'entités lors de sessions de mise à jour. Par exemple, vous avez pu démarrer une session de mise à jour et ajouter manuellement un grand nombre d'entités linéaires ou avoir utilisé le Chargeur d'objets pour les charger. Beaucoup des entités que vous avez ajoutées sont considérablement plus longues ou plus courtes que les entités figurant déjà dans la classe d'entités. L'index spatial doit être mis à jour pour garantir qu'il fonctionne de manière optimale avec les nouvelles entités. Si la classe d'entités utilise une valeur de grille d'index spatial, après avoir enregistré les modifications, mettez à jour l'index en accédant à l'onglet Index dans la boîte de dialogue Propriétés de la classe d'entités et en cliquant sur le bouton Recalculer.
- Si vous ajoutez des entités à une classe d'entités de géodatabase fichier avec des tailles de grille 0,0,0 et que vous enregistrez les mises à jour, l'index est créé automatiquement. En revanche, si vous continuez à ajouter des entités au cours de la même session de mise à jour, l'index ne sera pas recalculé au cours des enregistrements suivants, les tailles de grille étant différentes de 0,0,0. Une fois que vous avez terminé l'ajout des entités, cliquez sur le bouton Recalculer dans la boîte de dialogue Propriétés de la classe d'entités pour mettre à jour les tailles de grille. Toutefois, gardez à l'esprit que le nouveau calcul manuel de l'index après l'ajout d'entités dont la taille est similaire à celle des entités déjà présentes dans la classe d'entités ne changera quasiment rien (ou rien du tout) à l'index.
- Si vous souhaitez ajouter des entités de grande taille à une classe d'entités, il vous faudra peut-être supprimer l'index avant de pouvoir effectuer l'opération. Vous le saurez si, lorsque vous ajoutez les entités, un message d'erreur s'affiche pour vous avertir que la taille de grille de l'index spatial n'est pas correcte. Si cela se produit, arrêtez la mise à jour, affichez la boîte de dialogue Propriétés de la classe d'entités et supprimez l'index spatial. Redémarrez la session de mise à jour et ajoutez les nouvelles entités. Lorsque vous avez fini l'ajout des entités, recalculez un nouvel index.
Jusqu'ici, cette rubrique a essentiellement présenté l'utilisation des tailles de grille par défaut calculées par ArcGIS pour les valeurs de grille d'index spatial. Dans la plupart des cas, la taille de grille par défaut est appropriée pour les requêtes spatiales rapides. En revanche, cela peut ne pas être la taille optimale selon les caractéristiques de vos données et la manière dont vous y accédez. La définition de vos propres tailles de grille peut entraîner de meilleures performances. La recherche de tailles de grille optimales implique l'expérimentation avec des tailles différentes et l'exécution de tests de performance à chaque fois pour observer les effets. Toutefois, vous ne pourrez peut-être pas améliorer les performances ; la taille de grille est peut-être déjà optimale.
Si vous avez saisi manuellement des tailles de grille et que vous souhaitez revenir à une taille fournie par ArcGIS, vous pouvez recalculer une nouvelle taille de grille à tout moment. Cliquez sur le bouton Recalculer dans l'onglet Index de la boîte de dialogue Propriétés de la classe d'entités. ArcGIS peut également calculer une taille de grille appropriée avec l'outil de géotraitement Calculer la valeur d'index spatial par défaut, mais cela fournit la même taille que celle que vous obtiendriez avec le bouton Recalculer.
Si vous utilisez des index spatiaux Microsoft SQL Server, les grilles ne sont pas utilisées et, par conséquent, il est inutile de les recalculer.
Index spatiaux dans les géodatabases personnelles
Chaque fois que vous créez une classe d'entités dans une géodatabase personnelle à l'aide de l'assistant Nouvelle classe d'entités, d'un outil de géotraitement ou de toute autre méthode, la taille de grille de l'index spatial est calculée par le logiciel et ne peut pas être modifié. La taille de grille calculée est basée sur l'horizon du système de coordonnées de classe d'entités et sera toujours optimal.