Notions de base sur les index spatiaux

8

Je demandais sur un forum si cela pouvait être une bonne idée de créer des index spatiaux sur des sous-ensembles d'une table lorsque votre application n'affiche sur la carte que ces sous-ensembles et jamais la table entière.

Je posais cette question parce que je pensais que les sous-ensembles n'ayant pas les mêmes étendues que l'ensemble de la table, il serait peut-être plus rapide d'afficher les sous-ensembles avec leurs propres index spatiaux.

La réponse que j'ai reçue était que les index spatiaux n'affectent pas le temps d'affichage mais uniquement utilisés pour les requêtes spatiales telles que l'union ou l'intersection. Est-ce vrai??? Mon expérience avec le SIG et la base de données est quand une table n'a pas d'index spatial, l'affichage sur la carte est beaucoup plus lent. J'ai toujours pensé qu'à l'affichage, le tableau était interrogé pour montrer les entités qui coupent l'étendue de la fenêtre de carte actuelle, de sorte que les entités extérieures ne sont pas chargées pour rien. Est-ce vraiment ainsi que cela fonctionne? Ceci est une sorte de requête spatiale non?

Quelle est la vérité? Est-ce une bonne idée de créer des index spatiaux sur des sous-ensembles?

Sous le radar
la source

Réponses:

13

Pour l'affichage, il est toujours bon d'utiliser un index spatial. Cela améliorera la vitesse du rendu et des requêtes spatiales. Cependant, si vous prévoyez de mettre à jour de grandes quantités d'objets, il peut être judicieux de supprimer l'index spatial lors de la mise à jour. Sinon, le processus de mise à jour deviendra beaucoup plus lent, car à chaque mise à jour, l'index spatial doit également être mis à jour. Après la mise à jour, vous pouvez à nouveau ajouter un index spatial.

Mark Verschuur
la source
Pour ajouter aux commentaires Marks, un Shapefile ESRI est souvent créé sans index spatial et en ajouter un peut considérablement améliorer l'affichage dans ArcMap. Si vos données se trouvent dans une géodatabase personnelle ou de fichier, celles-ci ont automatiquement un index spatial. Comment pouvez-vous dire? Eh bien, dans ArcMap, le champ Forme aura une petite étoile à côté lorsque vous afficherez les données en mode tableau.
Hornbydd
5

Sur les grandes bases de données ou une base de données avec des changements, il peut être très important d'avoir des index spatiaux en place et mis à jour régulièrement.

(Garder les choses simples ici)

Par exemple, pour les capacités d'indexation d'Oracle Spatial dans le moteur de base de données Oracle est une caractéristique clé du produit Spatial. Un index spatial, comme tout autre index, fournit un mécanisme pour limiter les recherches , mais dans ce cas basé sur des critères spatiaux tels que l'intersection et le confinement. Un indice spatial est nécessaire pour:

  • Rechercher des objets dans un espace de données indexées qui chevauchent un point ou une zone d'intérêt donné (requête de fenêtre)
  • Trouver des paires d'objets dans deux espaces de données indexés qui interagissent spatialement les uns avec les autres (jointure spatiale)

Indexation spatiale avec Oracle 11.2g

http://docs.oracle.com/cd/E11882_01/appdev.112/e11830/sdo_index_query.htm

Mapperz
la source
+1 Pour une discussion sur SQL Server, consultez le billet de blog d' Isaac Kunen sur les grilles multiniveaux de base .
Kirk Kuykendall
Mais, si vous effectuez un nombre important de modifications, il est possible que l'index spatial réduise la vitesse d'accès. Autrement dit, à chaque modification, si la base de données recalcule l'index, vous pouvez subir un impact important sur les performances. Le calendrier des mises à jour dans un environnement à forte utilisation est important.
Jay Laura
1
Jay dépend de si la base de données est configurée pour transactionnel (lecture / écriture rapide) ou entrepôt de données (longs chargements de données et données en lecture seule) ss64.com/ora/syntax-architecture.html
Mapperz