Ein räumlicher Index wird durch Verwendung von Umschlägen erstellt. Der Umschlag ist selbst eine Geometrie und stellt den Minimal- und Maximalbereich für X und Y einer Geometrie dar. Für die meisten Geometrien ist der Umschlag ein Kasten; für horizontale und vertikale Linienfolgen ist es jedoch eine Zwei-Punkt-Linienfolge. Für Punkte ist der Umschlag selbst ein Punkt. Weitere Informationen zu Umschlägen finden Sie im Abschnitt Umschlag.
Der räumliche Index wird in einer räumlichen Spalte konstruiert; hierzu werden ein oder mehrere Einträge für die Schnittpunkte der Umschläge der einzelnen Geometrien mit dem Gitter vorgenommen. Ein Schnittpunkt wird als interne ID der Geometrie und als Mindestkoordinaten für X und Y der geschnittenen Gitterzellen aufgezeichnet. Das Polygon in Abbildung 7 schneidet beispielsweise das Gitter an den Koordinaten (20,30), (30,30), (40,30), (20,40), (30,40), (40,40), (20,50), (30,50) und (40,50). Siehe Tabelle 38 für Mindestwerte der X- und Y-Koordinaten für alle Geometrien in Abbildung 7.
Wenn mehrere Gitterstufen vorhanden sind, versucht der DB2 Spatial Extender, die niedrigste mögliche Gitterstufe zu verwenden. Wenn eine Geometrie vier oder mehr Gitterzellen auf einer angegebenen Ebene geschnitten hat, wird sie auf die nächsthöhere Stufe hochgestuft. Bei einem räumlichen Index mit den drei Gitterstufen 10.0e0, 100.0e0 und 1000.0e0 schneidet der DB2 Spatial Extender daher zunächst jede Geometrie mit dem Gitter der Ebene 10.0e0. Wenn eine Geometrie vier oder mehr 10.0e0-Gitterzellen schneidet, wird sie hochgestuft und mit dem Gitter der Ebene 100.0e0 geschnitten. Wenn sich vier oder mehr Schnittpunkte auf der Ebene 100.0e0 ergeben, wird die Geometrie auf die Ebene 1000.0e0 hochgestuft. Auf der Ebene 1000.0e0 müssen die Schnittpunkte im räumlichen Index eingegeben werden, da dies die höchste mögliche Ebene ist.
Abbildung 7 verdeutlicht, wie vier verschiedene Arten von Geometrien ein 10.0e-Gitter schneiden. Alle 23 Schnittpunkte für die vier Geometrien werden im räumlichen Index aufgezeichnet.
Abbildung 7. Anwendung einer 10.0e0-Gitterstufe
Tabelle 38 listet die Geometrien und ihre entsprechenden
Gitterschnittpunkte auf. Die Umschläge der vier verschiedenen
Geometrietypen schneiden das 10.0e-Gitter. Die
Mindestkoordinaten für X und Y jeder geschnittenen Gitterzelle werden in dem
räumlichen Index eingegeben.
Tabelle 38. Die 10.0e0-Gitterzelleneinträge für die Beispielgeometrien
Geometrie | Gitter X | Gitter Y |
---|---|---|
Polygon
|
20.0
|
30.0
|
Polygon
|
30.0
|
30.0
|
Polygon
|
40.0
|
30.0
|
Polygon
|
20.0
|
40.0
|
Polygon
|
30.0
|
40.0
|
Polygon
|
40.0
|
40.0
|
Polygon
|
20.0
|
50.0
|
Polygon
|
30.0
|
50.0
|
Polygon
|
40.0
|
50.0
|
Vertikale Linienfolge
|
50.0
|
30.0
|
Vertikale Linienfolge
|
50.0
|
40.0
|
Vertikale Linienfolge
|
50.0
|
50.0
|
Punkt
|
20.0
|
20.0
|
Horizontale Linienfolge
|
20.0
|
20.0
|
Horizontale Linienfolge
|
30.0
|
20.0
|
Horizontale Linienfolge
|
40.0
|
20.0
|
Horizontale Linienfolge
|
50.0
|
20.0
|
Horizontale Linienfolge
|
60.0
|
20.0
|
Horizontale Linienfolge
|
20.0
|
30.0
|
Horizontale Linienfolge
|
30.0
|
30.0
|
Horizontale Linienfolge
|
40.0
|
30.0
|
Horizontale Linienfolge
|
50.0
|
30.0
|
Horizontale Linienfolge
|
60.0
|
30.0
|
Abbildung 8 zeigt, wie die Anzahl der Schnittpunkte erheblich auf acht reduziert werden kann durch Hinzufügen der Gitterstufen 30.0e0 und 60.0e0. In diesem Fall werden das als Geometrie 1 gekennzeichnete Polygon auf die Gitterstufe 30.0e0 und die als Geometrie 4 gekennzeichnete Linienfolge auf die Gitterstufe 60.0e0 hochgestuft. Statt der neun und zehn Schnittpunkte, die die Geometrien auf der Stufe 10.0e0 hatten, haben sie nach dem Hochstufen nur noch zwei Schnittpunkte.
Abbildung 8. Auswirkung beim Hinzufügen der Gitterstufen 30.0e0 und 60.0e0. Der Umschlag des als Geometrie 1 gekennzeichneten Umschlags schneidet neun Gitterzellen. Der Umschlag der als Geometrie 2 vertikalen Linienfolge schneidet drei Gitterzellen. Der Umschlag des als Geometrie 3 gekennzeichneten Punkts schneidet nur eine Gitterzelle. Der Umschlag der als Geometrie 4 gekennzeichneten Linienfolge schneidet zehn Gitterzellen.
Der DB2 Spatial Extender verwendet die in der Anweisung CREATE INDEX
angegebenen Gitterstufenparameter und prüft jedes räumliche Objekt, um die
Koordinaten und die Anzahl der Gitterblöcke, in denen die Objekte enthalten
sind, festzustellen. In Abbildung 8 sind die Gitterstufen 10.0e0, 30.0e0 und
60.0e0 dargestellt mit zunehmenden Linienstärken und unterschiedlichen
Grauschattierungen. Die Zellenschnittpunkte der vertikalen
Linienfolgen- und des Punktumschlags werden in dem Index auf der Stufe
10.0e0 eingegeben, da beide weniger als vier Schnittpunkte
erzeugen. Das Polygon schneidet neun 10.0e0-Gitterzellen und
wird daher hochgestuft auf die 30.0e0-Stufe. Auf dieser Stufe
schneidet das Polygon zwei Gitterzellen, die in den Index eingegeben
werden. Die als Geometrie 4 gekennzeichnete Linienfolge schneidet zehn
10.0e0-Gitterzellen und wird daher hochgestuft auf die
30.0e0-Gitterstufe. Auch auf dieser Stufe schneidet sie noch
sechs Gitterzellen und wird daher erneut hochgestuft auf die
60.0e0-Gitterstufe, wo sie noch zwei Schnittpunkte generiert.
Die 60.0e0-Gitterschnittpunkte der Linienfolge werden anschließend in
den Index eingegeben. Hätte die Linienfolge auf dieser Ebene vier oder
mehr Schnittpunkte generiert, wären diese dennoch in den Index eingetragen
worden, da dies die höchste Stufe ist, auf die eine Geometrie hochgestuft
werden kann.
Tabelle 39. Die Schnittpunkte der Geometrien im dreistufigen Index
Geometrie
|
Gitter X
|
Gitter Y
|
---|---|---|
Die Schnittpunkte zwischen der vertikalen Linienfolge und dem Punkt auf der Stufe 1 (10.0e0-Gittergröße) | ||
2
|
50.0
|
30.0
|
2
|
50.0
|
40.0
|
2
|
50.0
|
50.0
|
3
|
20.0
|
20.0
|
Die Schnittpunkte des Polygons auf der Stufe 2 (30.0e0-Gittergröße) | ||
1 | 0.0 | 30.0 |
1 | 30.0 | 30.0 |
Die Schnittpunkte der Linienfolge auf der Stufe 3 (60.0e0-Gittergröße) | ||
4 | 0.0 | 0.0 |
4 | 60.0 | 0.0 |
Der DB2 Spatial Extender erstellt nicht wirklich eine Polygongitterstruktur. Der DB2 Spatial Extender manifestiert jede Gitterstufe parametrisch durch die Definition des Ursprungs am Abstand X,Y des räumlichen Bezugssystems der Spalten. Anschließend wird das Gitter in den positiven Koordinatenbereich erweitert. Mit einem parametrischen Gitter generiert der DB2 Spatial Extender die Schnittpunkte mathematisch.