ArcGIS utilise les index spatiaux pour améliorer les performances de la requête spatiale sur les classes d’entités. Pour identifier une entité, sélectionner des entités en pointant ou en traçant un cadre et effectuer des déplacements et des zooms, vous devez disposer d'ArcGIS Pro afin d'utiliser l'index spatial pour localiser les entités.
Lorsque vous créez une classe d'entités vide ou que vous importez des données pour créer une classe d'entités dans une géodatabase depuis ArcGIS, un index spatial est créé sur la classe d'entités. L'index spatial est utilisé pendant l'interrogation et la modification des données.
Remarque :
Db2 est une exception à cette règle. Lorsque vous créez des classes d'entités vides dans des géodatabases dans Db2, aucun index spatial n'est créé.
Types d'index spatiaux
Les index spatiaux fonctionnent différemment selon la source de données. Les classes d'entités dans les types de géodatabases suivants utilisent des index spatiaux basés sur des grilles.
- Géodatabases fichier
- Géodatabases dans Db2
- Géodatabases dans Oracle si la classe d'entités contient une colonne Esri ST_Geometry
Les classes d’entités dans Oracle contenant un type de géométrie Oracle Spatial (SDO_Geometry) utilisent des index spatiaux d’arborescence R.
Les classes d'entités dans PostgreSQL utilisent les index GiST (Generalized Search Tree).
Les classes d'entités dans Microsoft SQL Server contenant une colonne spatiale de géométrie ou de géographie utilisent un index spatial d'arborescence B modifié. L’index spatial sur une colonne spatiale de géométrie stocke également les coordonnées d’emprise. Consultez la documentation Microsoft SQL Server pour plus d’informations sur l’emprise.
Gestion des index spatiaux dans ArcGIS
La façon dont ArcGIS crée ou recrée les index spatiaux dépend du type de géodatabase et, dans le cas des géodatabases d'entreprise, varie en fonction du système de gestion de bases de données utilisé. Les deux sections suivantes présentent ces différences de fonctionnalités.
Index spatiaux dans les géodatabases fichiers
- Lorsque vous créez une classe d’entités, ArcGIS crée un index spatial.
- Si vous copiez une classe d’entités à partir d’une géodatabase vers une géodatabase fichier, l’index spatial est copié avec les données sources si la classe d’entités source utilise un index basé sur une grille (Oracle Esri ST_Geometry, Db2, ou une géodatabase fichier). L’index spatial est recréé dans la géodatabase fichier de destination si les données sources utilisent tout autre type d’index.
- 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.
Index spatiaux dans les géodatabases d’entreprise
Les listes suivantes décrivent la façon dont ArcGIS gère l’index spatial sur une classe d’entités dans une géodatabase de chaque système de gestion de base de données pris en charge :
- Db2
- Lorsque vous créez une classe d'entités, ArcGIS ne crée pas d’index spatial.
- Lorsque vous enregistrez des modifications d’entités dans une classe d’entités n’ayant pas d’index spatial, cela crée un index spatial.
- Si vous copiez une classe d’entités à partir d’une géodatabase vers une géodatabase dans Db2, l’index spatial est copié avec les données sources si la classe d’entités source utilise un index basé sur une grille (Oracle Esri ST_Geometry, Db2, ou une géodatabase fichier). Si les données sources utilisent tout autre type d’index, ArcGIS crée l’index spatial dans la géodatabase de destination dans Db2 en fonction des entités copiées.
- Oracle
- Lorsque vous créez une classe d’entités, ArcGIS crée un index spatial.
- Lorsque vous enregistrez des modifications d’entités dans une classe d’entités n’ayant pas d’index spatial, cela crée un index spatial.
- Si vous copiez une classe d’entités à partir d’une géodatabase vers une géodatabase dans Oracle et que vous utilisez le type Esri ST_Geometry pour la classe d’entités, l’index spatial est copié avec les données sources si la classe d’entités source utilise un index basé sur une grille (Oracle Esri ST_Geometry, Db2, ou une géodatabase fichier). Si les données sources utilisent tout autre type d’index, ArcGIS crée l’index spatial dans la géodatabase de destination dans Oracle en fonction des entités copiées.
- PostgreSQL
- Lorsque vous créez une classe d’entités, ArcGIS crée un index spatial.
- Lorsque vous enregistrez des modifications d’entités dans une classe d’entités n’ayant pas d’index spatial, cela crée un index spatial.
- Si vous copiez une classe d’entités à partir d’une géodatabase vers une géodatabase dans PostgreSQL, ArcGIS crée un index spatial sur la classe d’entités dans PostgreSQL en fonction des entités copiées.
- SQL Server
- Lorsque vous créez une classe d’entités, ArcGIS crée un index spatial.
- Enregistrer des modifications d’entités dans une classe d’entités n’ayant pas d’index spatial, ne crée pas d’index spatial.
- Si vous copiez une classe d’entités à partir d’une géodatabase vers une géodatabase dans SQL Server, ArcGIS crée un index spatial sur la classe d’entités dans SQL Server en fonction des entités copiées.
- SAP HANA n’utilise pas d’index spatial pour assurer les performances des requêtes. Par conséquent, ArcGIS ne crée ni ne conserve d’index spatial.
Quand mettre à jour l'index spatial
Pour les classes d’entités dans SQL Server utilisant le type spatial de géométrie, l’index spatial utilise une emprise devant être mise à jour manuellement, lors de l’insertion et de la suppression d’entités. Afin de déterminer le moment où vous devez recalculer l’index spatial d’une classe d’entités dans SQL Server, utilisez l’opération de Validate (Validation) dans la boîte de dialogue Feature Class Properties (Propriétés de la classe d’entités).
Pour tous les autres types spatiaux et de géodatabases, vous devez rarement gérer l’index spatial. Cependant, si vous remarquez une diminution de la performance de la requête spatiale après l’ajout ou la suppression d’un grand nombre d’entités, vous pouvez vous référer à la performance de la requête spatiale améliorée si vousregénérez (Oracle) ou recréez l’index spatial dans la classe d’entités affectée.
Vous avez un commentaire à formuler concernant cette rubrique ?