Guide d'utilisation et de référence


Utilisation des index spatiaux

Extension Spatiale recourt à un index spatial pour améliorer les performances d'une analyse spatiale. Prenons l'analyse spatiale la plus élémentaire et probablement la plus utilisée : l'analyse par boîte. Elle consiste à demander à Extension Spatiale de renvoyer toutes les géométries qui sont contenues partiellement ou en totalité dans une boîte définie par l'utilisateur. Si aucun index n'existe, Extension Spatiale doit comparer toutes les géométries à la boîte. Par contre, avec un index, Extension Spatiale peut localiser toutes les entrées d'index dont la coordonnée gauche la plus basse est supérieure ou égale à celle de la boîte et dont la coordonnée droite la plus haute est plus petite ou égale à celle de la boîte. L'index étant classé d'après ce système de coordonnées, Extension Spatiale peut obtenir rapidement la liste des géométries susceptibles de répondre aux conditions requises. Il s'agit du processus appelé première passe.

Une seconde passe détermine si l'enveloppe de chacune des géométries présélectionnées génère des intersections avec la boîte. En effet, une géométrie qui remplit les conditions de la première passe parce que l'enveloppe associée à ses cellules de grille forme des intersections avec la boîte, peut avoir elle-même une enveloppe qui n'en forme pas.

Une troisième passe compare les coordonnées réelles de la géométrie présélectionnée avec la boîte afin de déterminer si une partie quelconque de cette géométrie se trouve réellement dans la boîte. Ce dernier processus de comparaison plutôt complexe est exécuté sur une liste de géométries présélectionnées composée d'un sous-ensemble de la population totale, considérablement réduite par les deux premières passes.

Toutes les analyses spatiales exécutent ces trois passes, sauf la fonction EnvelopesIntersect. Celle-ci n'effectue que les deux premières passes. En effet, la fonction EnvelopesIntersect a été conçue pour les opérations d'affichage qui utilisent souvent leurs propres routine intégrées de découpage et ne requièrent pas la granularité de la troisième passe.

Sélection de la taille des cellules de la grille

La forme irrégulière des enveloppes des géométries complique la sélection de la taille des cellules de la grille. En effet, certaines enveloppes forment des intersections avec plusieurs grilles alors que d'autres sont entièrement contenues dans une seule cellule de grille. Inversement, en fonction de la répartition spatiale des données, certaines cellules de grille peuvent générer des intersections avec de nombreuses enveloppes de géométries.

Pour qu'un index spatial remplisse bien sa fonction, il est essentiel de sélectionner correctement le nombre et la trame des grilles. Prenons une colonne spatiale contenant des géométries de taille uniforme. Dans ce cas, il suffit d'un seul niveau de grille. Choisissez tout d'abord une taille de cellule de grille qui contienne l'enveloppe de géométrie moyenne. En testant votre application, vous constaterez éventuellement qu'en augmentant la taille de la cellule, vous améliorez les performances de vos requêtes. Cela s'explique par le fait que chaque cellule de grille contient plusieurs géométries et que la première passe a permis d'écarter plus rapidement celles qui ne remplissaient pas les conditions requises. Toutefois, vous constaterez que les performances se dégradent à mesure que vous continuez à augmenter la taille de la cellule. Cela est dû au fait que la seconde passe devra éventuellement traiter plus de candidats.

Sélection du nombre de niveaux

Si les objets à index sont d'une taille relative à peu près identique, vous pouvez utiliser un seul niveau de grille. Bien que cela soit vrai, toutes les colonnes ne contiennent pas des géométries de même taille relative. En règle générale, les géométries des colonnes spatiales peuvent être regroupées en plusieurs plages de tailles. Prenons l'exemple d'un réseau routier dans lequel les géométries sont réparties en rues, routes principales et autoroutes. Les rues sont toutes à peu près de la même longueur et peuvent être regroupées dans une même plage de tailles. Il en va de même pour les routes principales et les autoroutes. Par conséquent, les rues représentant une plage de taille peuvent être regroupées dans un premier niveau de grille, les routes principales dans un second et les autoroutes dans un troisième. Un autre exemple comprend une colonne parcelles d'un comté comportant des groupes de petites parcelles urbaines entourées de parcelles rurales de grande taille. Dans ce cas, il existe deux plages de taille et deux niveaux de grille, un pour les petites parcelles urbaines et l'autre pour les grandes parcelles rurales. Cela arrive fréquemment et nécessite l'utilisation d'une grille à plusieurs niveaux.

Pour sélectionner la taille de cellule associée à chaque niveau de grille, sélectionnez des tailles légèrement supérieures à chaque plage de tailles. Testez ensuite l'index en exécutant des analyses sur la colonne spatiale.

Chaque niveau supplémentaire exige un nouveau balayage de l'index. Diminuez ou augmentez légèrement les tailles des grilles pour déterminer si on peut obtenir un gain de performances sensible.


[ Début de page | Page précédente | Page suivante | Table des matières | Index ]