Benutzer- und Referenzhandbuch
DB2 Spatial Extender hat verschiedene Funktionen, die Geometrien aus
ESRI-Formdarstellungen generieren. Zusätzlich zu den von der bekannten
binären GIS-Darstellung unterstützten zweidimensionalen Darstellungen
unterstützt die ESRI-Formdarstellung auch auch wahlfreie Z-Koordinaten und
Maße. Die folgenden Funktionen generieren Geometrien aus einer
ESRI-Form:
- ST_GeometryFromShape
- Erstellt eine Geometrie aus einer Formdarstellung eines beliebigen
Geometrietyps.
- ST_PointFromShape
- Erstellt einen Punkt aus einer Formdarstellung eines Punkts.
- ST_LineFromShape
- Erstellt eine Linienfolge aus einer Formdarstellung einer
Linienfolge.
- ST_PolyFromShape
- Erstellt ein Polygon aus einer Formdarstellung eines Polygons.
- ST_MPointFromShape
- Erstellt eine Mehrpunktangabe aus einer Formdarstellung einer
Mehrpunktangabe.
- ST_MLineFromShape
- Erstellt eine Mehrlinienfolge aus einer Formdarstellung einer
Mehrlinienfolge.
- ST_MPolyFromShape
- Erstellt ein Multipolygon aus einer Formdarstellung eines
Multipolygons.
Die allgemeine Syntax dieser Funktionen ist gleich. Das erste
Argument ist die Formdarstellung, die als BLOB-Datentyp (großes Binärobjekt)
eingegeben wird. Das zweite Argument ist die Kennung des räumlichen
Bezugs, die der Geometrie zugeordnet werden soll. Die Funktion
GeometryFromShape hat die folgende Syntax:
db2gse.GeometryFromShape(ShapeGeometry Blob(1M), cr db2gse.coordref)
Da diese Formfunktionen die Definition von C-Programmstrukturen für die
Zuordnung der Binärdarstellung erfordern, sind diese Funktionen für Sprachen
der dritten Generation (3GL) konzipiert und für Umgebungen der
vierten Generation nicht geeignet. Die Funktion AsShape setzt den
Geometriewert um in eine ESRI-Formdarstellung.
Der Formtyp 0 kennzeichnet eine Nullform ohne geometrische Daten für die
Form.
Wert
| Formtyp
|
0
| Nullform (Null Shape)
|
1
| Punkt (Point)
|
3*
| Mehrfachlinie (PolyLine)
|
5
| Polygon
|
8
| Mehrpunktangabe (MultiPoint)
|
11
| PunktZ (PointZ)
|
13
| MehrfachlinieZ (PolyLineZ)
|
15
| PolygonZ (PolygonZ)
|
18
| MehrpunktangabeZ (MultiPointZ)
|
21
| PunktM (PointM)
|
23
| MehrfachlinieM (PolyLineM)
|
25
| PolygonM (PolygonM)
|
28
| MehrpunktangabeM (MultiPointM)
|
Anmerkung: | * Die in dieser Liste nicht angegebenen Formtypen (2, 4, 6
usw.) sind zur späteren Verwendung reserviert.
|
Ein Punkt besteht aus einem Paar Koordinaten mit doppelter Genauigkeit
in der Anordnung X, Y.
Tabelle 66.
Punkt-Bytestrom, Inhalt
Position
|
Feld
|
Wert
|
Typ
|
Anzahl
|
Anordnung
|
Byte 0
|
Shape Type
|
1
|
Integer
|
1
|
Little
|
Byte 4
|
X
|
X
|
Double
|
1
|
Little
|
Byte 12
|
J
|
J
|
Double
|
1
|
Little
|
Eine Mehrpunktangabe besteht aus einer Gruppe von Punkten. Der
Begrenzungsrahmen wird in der Anordnung Xmin, Ymin, Xmax, Ymax
gespeichert.
Tabelle 67.
Mehrpunkt-Bytestrom, Inhalt
Position
|
Feld
|
Wert
|
Typ
|
Anzahl
|
Anordnung
|
Byte 0
|
Shape Type
|
8
|
Integer
|
1
|
Little
|
Byte 4
|
Box
|
Box
|
Double
|
4
|
Little
|
Byte 36
|
NumPoints
|
NumPoints
|
Integer
|
1
|
Little
|
Byte 40
|
Points
|
Points
|
Point
|
NumPoints
|
Little
|
Eine Mehrfachlinie ist eine geordnete Gruppe von Scheitelpunkten, die
aus einem oder mehreren Teilen bestehen. Ein Teil ist eine verbundene
Sequenz von zwei oder mehr Punkten. Punkte können miteinander verbunden
sein oder auch nicht. Teile können sich schneiden oder auch
nicht.
Da diese Spezifikation aufeinanderfolgende Punkte mit identischen
Koordinaten zuläßt, müssen diese Fälle beim Lesen der Formdatei berücksichtigt
werden. Andererseits sind degenerierte Teile mit einer Länge Null nicht
zulässig.
Die Felder für eine Mehrfachlinie sind:
- Box
- Der Begrenzungsrahmen der Mehrfachlinie, gespeichert in der Anordnung
Xmin, Ymin, Xmax, Ymax.
- NumParts
- Die Anzahl der Teile in der Mehrfachlinie.
- NumPoints
- Die gesamte Anzahl von Punkten für alle Teile.
- Parts
- Eine Feldgruppe von Längen-NumParts. Jede Mehrfachlinie speichert
den Index ihres ersten Punkts in der Punktfeldgruppe.
Feldgruppenindizes sind auf Null bezogen.
- Points
- Eine Feldgruppe von Längen-NumPoints. Die Punkte für jedes Teil in
der Mehrfachlinie werden von Ende zu Ende gespeichert. Die Punkte für
Teil 2 folgen den Punkten für Teil 1, usw. Die Teilefeldgruppen
enthalten den Feldgruppenindex des Startpunkts für jedes Teil. Es gibt
keine Begrenzer in der Punktfeldgruppe zwischen den Teilen.
Tabelle 68.
Mehrfachlinien-Bytestrom, Inhalt
Position
|
Feld
|
Wert
|
Typ
|
Anzahl
|
Anordnung
|
Byte 0
|
Shape Type
|
3
|
Integer
|
1
|
Little
|
Byte 4
|
Box
|
Box
|
Double
|
4
|
Little
|
Byte 36
|
NumParts
|
NumParts
|
Integer
|
1
|
Little
|
Byte 40
|
NumPoints
|
NumPoints
|
Integer
|
1
|
Little
|
Byte 44
|
Parts
|
Parts
|
Integer
|
NumParts
|
Little
|
Byte X
|
Points
|
Points
|
Point
|
NumPoints
|
Little
|
Anmerkung: | X = 44 + 4 * NumParts.
|
Ein Polygon besteht aus einem oder mehreren Ringen. Ein Ring ist
eine verbundene Folge von vier oder mehr Punkten, die eine geschlossene
Schleife bilden, die sich nicht selbst schneidet. Ein Polygon kann
mehrere äußere Ringe enthalten. Die Anordnung der Scheitelpunkt oder
die Ausrichtung eines Rings gibt an, welche Seite des Rings der Innenbereich
des Polygons ist. Der Bereich, der beim Entlanggehen am Ring in
Richtung der Scheitelpunkte auf der rechten Seite liegt, ist der Innenbereich
des Polygons. Scheitelpunkte von Polygonen, die Löcher in Polygonen
definieren, sind gegen den Uhrzeigersinn angeordnet. Scheitelpunkte für
einen einzelnen Polygonring sind daher immer im Uhrzeigersinn
angeordnet. Die Ringe eines Polygons werden als Teile
bezeichnet.
Da diese Spezifikation aufeinanderfolgende Punkte mit identischen
Koordinaten zuläßt, müssen diese Fälle beim Lesen der Formdatei berücksichtigt
werden. Andererseits sind degenerierte Teile mit einer Länge oder
Fläche Null nicht zulässig.
Die Felder für ein Polygon sind:
- Box
- Der Begrenzungsrahmen des Polygons, gespeichert in der Anordnung Xmin,
Ymin, Xmax, Ymax.
- NumParts
- Die Anzahl der Ringe in dem Polygon.
- NumPoints
- Die gesamte Anzahl von Punkten für alle Ringe.
- Parts
- Eine Feldgruppe von Längen-NumParts. Speichert für jeden Ring den
Index seines ersten Punkts in der Punktfeldgruppe. Feldgruppenindizes
sind auf Null bezogen.
- Points
- Eine Feldgruppe von Längen-NumPoints. Die Punkte für jeden Ring in
dem Polygon werden von Ende zu Ende gespeichert. Die Punkte für Ring 2
folgen den Punkten für Ring 1, usw. Die Teilefeldgruppen enthalten den
Feldgruppenindex des Startpunkts für jeden Ring. Es gibt keine
Begrenzer in der Punktfeldgruppe zwischen den Ringen.
- Wichtiger Hinweis zu Polygonformen:
-
- Die Ringe sind geschlossen (der erste und letzte Scheitelpunkt
eines Rings MÜSSEN identisch sein).
- Die Reihenfolge der Ringe in der Punktfeldgruppe ist nicht von
Bedeutung.
- In einer Formdatei gespeicherte Polygone müssen rein sein. Ein
reines Polygon ist wie folgt definiert:
- Es schneidet sich nicht selbst. Dies bedeutet, daß ein Segment, das
zu einem Ring gehört, kein Segment schneidet, das zu einem anderen Ring
gehört. Die Ringe eines Polygons können sich an den Schnittpunkten
berühren, aber nicht entlang ihrer Segmente. Kolineare Segmente werden
als schneidend betrachtet.
- Die Innenseite des Polygons befindet sich auf der "richtigen" Seite der
Linie, durch die es definiert ist. Der Bereich, der beim Entlanggehen
am Ring in Richtung der Scheitelpunkte auf der rechten Seite liegt, ist der
Innenbereich des Polygons. Scheitelpunkte für einen einzelnen
Polygonring sind daher immer im Uhrzeigersinn angeordnet. Ringe, die
Löcher in diesen Polygonen definieren, sind gegen den Uhrzeigersinn
angeordnet.
"Nicht reine" Polygone liegen vor, wenn die Ringe, die Löcher in dem
Polygon definieren, ebenfalls im Uhrzeigersinn angeordnet sind; dies
bewirkt ein Überlappen der Innenbereiche.
Abbildung 40. Ein Polygon mit einem Loch und acht Scheitelpunkten

Abbildung 41. Inhalt des Polygon-Bytestroms. NumParts ist 2 und NumPoints ist 10. Beachten Sie, daß die Anordnung der Punkte für die Innenfläche (das Loch) umgekehrt ist.

Tabelle 69.
Polygon-Bytestrom, Inhalt
Position
|
Feld
|
Wert
|
Typ
|
Anzahl
|
Anordnung
|
Byte 0
|
Shape Type
|
5
|
Integer
|
1
|
Little
|
Byte 4
|
Box
|
Box
|
Double
|
4
|
Little
|
Byte 36
|
NumParts
|
NumParts
|
Integer
|
1
|
Little
|
Byte 40
|
NumPoints
|
NumPoints
|
Integer
|
1
|
Little
|
Byte 44
|
Parts
|
Parts
|
Integer
|
NumParts
|
Little
|
Byte X
|
Points
|
Points
|
Point
|
NumPoints
|
Little
|
Anmerkung: | X = 44 + 4 * NumParts.
|
Ein PunktM besteht aus einem Paar Koordinaten mit doppelter Genauigkeit
in der Anordnung X, Y sowie einem Maß M.
Tabelle 70.
PunktM-Bytestrom, Inhalt
Position
|
Feld
|
Wert
|
Typ
|
Anzahl
|
Anordnung
|
Byte 0
|
Shape Type
|
21
|
Integer
|
1
|
Little
|
Byte 4
|
X
|
X
|
Double
|
1
|
Little
|
Byte 12
|
J
|
J
|
Double
|
1
|
Little
|
Byte 20
|
M
|
M
|
Double
|
1
|
Little
|
Die Felder für eine MehrpunktangabeM sind:
- Box
- Der Begrenzungsrahmen der MehrpunktangabeM, gespeichert in der Anordnung
Xmin, Ymin, Xmax, Ymax.
- NumPoints
- Die Anzahl der Punkte.
- Points
- Eine Feldgruppe von Punkten von Längen-NumPoints.
- NumMs
- Die Anzahl der folgenden Maße. NumMs kann nur zwei Werte
haben: Null, wenn diesem Feld keine Maße folgen, oder gleich NumPoints,
wenn Maße vorhanden sind.
- M Range
- Minimum und Maximum für das Maß für MehrpunktangabeM, gespeichert in der
Reihenfolge Mmin, Mmax.
- M Array
- Eine Feldgruppe von Maßen von Längen-NumPoints.
Tabelle 71.
MehrpunktangabeM-Bytestrom, Inhalt
Position
|
Feld
|
Wert
|
Typ
|
Anzahl
|
Anordnung
|
Byte 0
|
Shape Type
|
28
|
Integer
|
1
|
Little
|
Byte 4
|
Box
|
Box
|
Double
|
4
|
Little
|
Byte 36
|
NumPoints
|
NumPoints
|
Integer
|
1
|
Little
|
Byte 40
|
Points
|
Points
|
Point
|
NumPoints
|
Little
|
Byte X
|
NumMs
|
NumMs
|
Integer
|
1
|
Little
|
Byte X+4*
|
Mmin
|
Mmin
|
Double
|
1
|
Little
|
Byte X+12*
|
Mmax
|
Mmax
|
Double
|
1
|
Little
|
Byte X+20*
|
Marray
|
Marray
|
Double
|
NumPoints
|
Little
|
Anmerkungen:
- X = 40 + (16 * NumPoints)
- * wahlfrei
Eine Formdatei-MehrfachlinieM besteht aus einem oder mehreren
Teilen. Ein Teil ist eine verbundene Sequenz von zwei oder mehr
Punkten. Teile können miteinander verbunden sein oder auch
nicht. Teile können sich schneiden oder auch nicht.
Die Felder für eine MehrfachlinieM sind:
- Box
- Der Begrenzungsrahmen der MehrfachlinieM, gespeichert in der Anordnung
Xmin, Ymin, Xmax, Ymax.
- NumParts
- Die Anzahl der Teile in der MehrfachlinieM.
- NumPoints
- Die gesamte Anzahl von Punkten für alle Teile.
- Parts
- Eine Feldgruppe von Längen-NumParts. Speichert für jeden Teil den
Index seines ersten Punkts in der Punktfeldgruppe. Feldgruppenindizes
sind auf Null bezogen.
- Points
- Eine Feldgruppe von Längen-NumPoints. Die Punkte für jedes Teil in
der MehrfachlinieM werden von Ende zu Ende gespeichert. Die Punkte für
Teil 2 folgen den Punkten für Teil 1, usw. Die Teilefeldgruppen
enthalten den Feldgruppenindex des Startpunkts für jedes Teil. Es gibt
keine Begrenzer in der Punktfeldgruppe zwischen den Teilen.
- NumMs
- Die Anzahl der folgenden Maße. NumMs kann nur zwei Werte
haben: Null, wenn diesem Feld keine Maße folgen, oder gleich NumPoints,
wenn Maße vorhanden sind.
- M Range
- Minimum und Maximum für das Maß für MehrfachlinieM, gespeichert in der
Reihenfolge Mmin, Mmax.
- M Array
- Eine Feldgruppe von Längen-NumPoints. Die Maße für jedes Teil in
der MehrfachlinieM werden von Ende zu Ende gespeichert. Die Maße für
Teil 2 folgen den Maßen für Teil 1, usw. Die Teilefeldgruppen enthalten
den Feldgruppenindex des Startpunkts für jedes Teil. Es gibt keine
Begrenzer in der Maßfeldgruppe zwischen den Teilen.
Tabelle 72.
MehrfachlinieM-Bytestrom, Inhalt
Position
|
Feld
|
Wert
|
Typ
|
Anzahl
|
Anordnung
|
Byte 0
|
Shape Type
|
13
|
Integer
|
1
|
Little
|
Byte 4
|
Box
|
Box
|
Double
|
4
|
Little
|
Byte 36
|
NumParts
|
NumParts
|
Integer
|
1
|
Little
|
Byte 40
|
NumPoints
|
NumPoints
|
Integer
|
1
|
Little
|
Byte 44
|
Parts
|
Parts
|
Integer
|
NumParts
|
Little
|
Byte X
|
Points
|
Points
|
Point
|
NumPoints
|
Little
|
Byte Y
|
NumMs
|
NumMs
|
Integer
|
1
|
Little
|
Byte Y+4*
|
Mmin
|
Mmin
|
Double
|
1
|
Little
|
Byte Y+12*
|
Mmax
|
Mmax
|
Double
|
1
|
Little
|
Byte Y+20*
|
Marray
|
Marray
|
Double
|
NumPoints
|
Little
|
Anmerkungen:
- X = 44 + (4 * NumParts), Y = X
+ (16 * NumPoints).
- * wahlfrei
Ein PolygonM besteht aus einer Anzahl von Ringen. Ein Ring ist
eine geschlossene Schleife, die sich nicht selbst schneidet. Beachten
Sie, daß Schnittmengen im XY-Raum berechnet werden, nicht im
XYM-Raum. Ein PolygonM kann mehrere äußere Ringe enthalten. Die
Ringe eines PolygonM werden als Teile bezeichnet.
Die Felder für ein PolygonM sind:
- Box
- Der Begrenzungsrahmen des PolygonM, gespeichert in der Anordnung Xmin,
Ymin, Xmax, Ymax.
- NumParts
- Die Anzahl der Ringe in dem PolygonM.
- NumPoints
- Die gesamte Anzahl von Punkten für alle Ringe.
- Parts
- Eine Feldgruppe von Längen-NumParts. Speichert für jeden Ring den
Index seines ersten Punkts in der Punktfeldgruppe. Feldgruppenindizes
sind auf Null bezogen.
- Points
- Eine Feldgruppe von Längen-NumPoints. Die Punkte für jeden Ring in
dem PolygonM werden von Ende zu Ende gespeichert. Die Punkte für Ring 2
folgen den Punkten für Ring 1, usw. Die Teilefeldgruppen enthalten den
Feldgruppenindex des Startpunkts für jeden Ring. Es gibt keine
Begrenzer in der Punktfeldgruppe zwischen den Ringen.
- NumMs
- Die Anzahl der folgenden Maße. NumMs kann nur zwei Werte
haben: Null, wenn diesem Feld keine Maße folgen, oder gleich NumPoints,
wenn Maße vorhanden sind.
- M Range
- Minimum und Maximum für das Maß für das PolygonM, gespeichert in der
Reihenfolge Mmin, Mmax.
- M Array
- Eine Feldgruppe von Längen-NumPoints. Die Maße für jeden Ring in
dem PolygonM werden von Ende zu Ende gespeichert. Die Maße für Ring 2
folgen den Maßen für Ring 1, usw. Die Teilefeldgruppen enthalten den
Feldgruppenindex des Startmaßes für jeden Ring. Es gibt keine Begrenzer
in der Maßfeldgruppe zwischen den Ringen.
- Wichtige Hinweise zu PolygonM-Formen:
-
- Die Ringe sind geschlossen (der erste und letzte Scheitelpunkt
eines Rings müssen identisch sein).
- Die Reihenfolge der Ringe in der Punktfeldgruppe ist nicht von
Bedeutung.
Tabelle 73.
PolygonM-Bytestrom, Inhalt
Position
|
Feld
|
Wert
|
Typ
|
Anzahl
|
Anordnung
|
Byte 0
|
Shape Type
|
15
|
Integer
|
1
|
Little
|
Byte 4
|
Box
|
Box
|
Double
|
4
|
Little
|
Byte 36
|
NumParts
|
NumParts
|
Integer
|
1
|
Little
|
Byte 40
|
NumPoints
|
NumPoints
|
Integer
|
1
|
Little
|
Byte 44
|
Parts
|
Parts
|
Integer
|
NumParts
|
Little
|
Byte X
|
Points
|
Points
|
Point
|
NumPoints
|
Little
|
Byte Y
|
NumMs
|
NumMs
|
Integer
|
1
|
Little
|
Byte Y+4*
|
Mmin
|
Mmin
|
Double
|
1
|
Little
|
Byte Y+12*
|
Mmax
|
Mmax
|
Double
|
1
|
Little
|
Byte Y+20*
|
Marray
|
Marray
|
Double
|
NumPoints
|
Little
|
Anmerkungen:
- X = 44 + (4 * NumParts), Y = X
+ (16 * NumPoints).
- * wahlfrei
Ein PunktZ besteht aus einem Triplet Koordinaten mit doppelter
Genauigkeit in der Anordnung X, Y, Z sowie einem Maß M.
Tabelle 74.
PunktZ-Bytestrom, Inhalt
Position
|
Feld
|
Wert
|
Typ
|
Anzahl
|
Anordnung
|
Byte 0
|
Shape Type
|
11
|
Integer
|
1
|
Little
|
Byte 4
|
X
|
X
|
Double
|
1
|
Little
|
Byte 12
|
J
|
J
|
Double
|
1
|
Little
|
Byte 20
|
Z
|
Z
|
Double
|
1
|
Little
|
Byte 28
|
Measure
|
M
|
Double
|
1
|
Little
|
Ein MehrpunktangabeZ stellt eine PunktZ-Gruppe dar wie folgt:
- Der Begrenzungsrahmen wird in der Anordnung Xmin, Ymin, Xmax, Ymax
gespeichert.
- Die Z-Begrenzung wird in der Anordnung Zmin, Zmax gespeichert. Die
M-Begrenzung wird in der Anordnung Mmin, Mmax gespeichert.
Tabelle 75.
MehrpunktangabeZ-Bytestrom, Inhalt
Position
|
Feld
|
Wert
|
Typ
|
Anzahl
|
Anordnung
|
Byte 0
|
Shape Type
|
18
|
Integer
|
1
|
Little
|
Byte 4
|
Box
|
Box
|
Double
|
4
|
Little
|
Byte 36
|
NumPoints
|
NumPoints
|
Integer
|
1
|
Little
|
Byte 40
|
Points
|
Points
|
Point
|
NumPoints
|
Little
|
Byte X
|
Zmin
|
Zmin
|
Double
|
1
|
Little
|
Byte X+8
|
Zmax
|
Zmax
|
Double
|
1
|
Little
|
Byte X+16
|
Zarray
|
Zarray
|
Double
|
NumPoints
|
Little
|
Byte Y
|
NumMs
|
NumMs
|
Integer
|
1
|
Little
|
Byte Y+4*
|
Mmin
|
Mmin
|
Double
|
1
|
Little
|
Byte Y+12*
|
Mmax
|
Mmax
|
Double
|
1
|
Little
|
Byte Y+20*
|
Marray
|
Marray
|
Double
|
NumPoints
|
Little
|
Anmerkungen:
- X = 40 + (16 * NumPoints); Y
= X + 16 + (8 * NumPoints)
- * wahlfrei
Eine MehrfachlinieZ besteht aus einem oder mehreren Teilen. Ein
Teil ist eine verbundene Sequenz von zwei oder mehr Punkten. Teile
können miteinander verbunden sein oder auch nicht. Teile können sich
schneiden oder auch nicht.
Die Felder für eine MehrfachlinieZ sind:
- Box
- Der Begrenzungsrahmen der MehrfachlinieZ, gespeichert in der Anordnung
Xmin, Ymin, Xmax, Ymax.
- NumParts
- Die Anzahl der Teile in der MehrfachlinieZ.
- NumPoints
- Die gesamte Anzahl von Punkten für alle Teile.
- Parts
- Eine Feldgruppe von Längen-NumParts. Speichert für jeden Teil den
Index seines ersten Punkts in der Punktfeldgruppe. Feldgruppenindizes
sind auf Null bezogen.
- Points
- Eine Feldgruppe von Längen-NumPoints. Die Punkte für jedes Teil in
der MehrfachlinieZ werden von Ende zu Ende gespeichert. Die Punkte für
Teil 2 folgen den Punkten für Teil 1, usw. Die Teilefeldgruppen
enthalten den Feldgruppenindex des Startpunkts für jedes Teil. Es gibt
keine Begrenzer in der Punktfeldgruppe zwischen den Teilen.
- Z Range
- Die Minimum- und Maximum-Z-Werte für die MehrfachlinieZ, gespeichert in
der Anordnung Zmin, Zmax.
- Z Array
- Eine Feldgruppe von Längen-NumPoints. Die Z-Werte für jedes Teil in
der MehrfachlinieZ werden von Ende zu Ende gespeichert. Die Z-Werte für
Teil 2 folgen den Z-Werten für Teil 1, usw. Die Teilefeldgruppen
enthalten den Feldgruppenindex des Startpunkts für jedes Teil. Es gibt
keine Begrenzer in der Z-Feldgruppe zwischen den Teilen.
- NumMs
- Die Anzahl der folgenden Maße. NumMs kann nur zwei Werte
haben: Null, wenn diesem Feld keine Maße folgen, oder gleich NumPoints,
wenn Maße vorhanden sind.
- M Range
- Minimum und Maximum für das Maß für die MehrfachlinieZ, gespeichert in der
Reihenfolge Mmin, Mmax.
- M Array
- Eine Feldgruppe von Längen-NumPoints. Die Maße für jedes Teil in
der MehrfachlinieZ werden von Ende zu Ende gespeichert. Die Maße für
Teil 2 folgen den Maßen für Teil 1, usw. Die Teilefeldgruppen enthalten
den Feldgruppenindex des Startmaßes für jedes Teil. Es gibt keine
Begrenzer in der Maßfeldgruppe zwischen den Teilen.
Tabelle 76.
MehrfachlinieZ-Bytestrom, Inhalt
Position
|
Feld
|
Wert
|
Typ
|
Anzahl
|
Anordnung
|
Byte 0
|
Shape Type
|
13
|
Integer
|
1
|
Little
|
Byte 4
|
Box
|
Box
|
Double
|
4
|
Little
|
Byte 36
|
NumParts
|
NumParts
|
Integer
|
1
|
Little
|
Byte 40
|
NumPoints
|
NumPoints
|
Integer
|
1
|
Little
|
Byte 44
|
Parts
|
Parts
|
Integer
|
NumParts
|
Little
|
Byte X
|
Points
|
Points
|
Point
|
NumPoints
|
Little
|
Byte Y
|
Zmin
|
Zmin
|
Double
|
1
|
Little
|
Byte Y+8
|
Zmax
|
Zmax
|
Double
|
1
|
Little
|
Byte Y+16
|
Zarray
|
Zarray
|
Double
|
NumPoints
|
Little
|
Byte Z
|
NumMs
|
NumMs
|
Integer
|
1
|
Little
|
Byte Z+4*
|
Mmin
|
Mmin
|
Double
|
1
|
Little
|
Byte Z+12*
|
Mmax
|
Mmax
|
Double
|
1
|
Little
|
Byte Z+20*
|
Marray
|
Marray
|
Double
|
NumPoints
|
Little
|
Anmerkungen:
- X = 44 + (4 * NumParts), Y = X
+ (16 * NumPoints), Z = Y + 16 +
(8 * NumPoints)
- * wahlfrei
Ein PolygonZ besteht aus einer Anzahl von Ringen. Ein Ring ist
eine geschlossene Schleife, die sich nicht selbst schneidet. Ein
PolygonZ kann mehrere äußere Ringe enthalten. Die Ringe eines PolygonZ
werden als Teile bezeichnet.
Die Felder für ein PolygonZ sind:
- Box
- Der Begrenzungsrahmen des PolygonZ, gespeichert in der Anordnung Xmin,
Ymin, Xmax, Ymax.
- NumParts
- Die Anzahl der Ringe in dem PolygonZ.
- NumPoints
- Die gesamte Anzahl von Punkten für alle Ringe.
- Parts
- Eine Feldgruppe von Längen-NumParts. Speichert für jeden Ring den
Index seines ersten Punkts in der Punktfeldgruppe. Feldgruppenindizes
sind auf Null bezogen.
- Points
- Eine Feldgruppe von Längen-NumPoints. Die Punkte für jeden Ring in
dem PolygonZ werden von Ende zu Ende gespeichert. Die Punkte für Ring 2
folgen den Punkten für Ring 1, usw. Die Teilefeldgruppen enthalten den
Feldgruppenindex des Startpunkts für jeden Ring. Es gibt keine
Begrenzer in der Punktfeldgruppe zwischen den Ringen.
- Z Range
- Die Minimum- und Maximum-Z-Werte für den Bogen, gespeichert in der
Anordnung Zmin, Zmax.
- Z Array
- Eine Feldgruppe von Längen-NumPoints. Die Z-Werte für jeden Ring in
dem PolygonZ werden von Ende zu Ende gespeichert. Die Z-Werte für Ring
2 folgen den Z-Werten für Ring 1, usw. Die Teilefeldgruppen enthalten
den Feldgruppenindex des Start-Z-Werts für jeden Ring. Es gibt keine
Begrenzer in der Z-Werte-Feldgruppe zwischen den Ringen.
- NumMs
- Die Anzahl der folgenden Maße. NumMs kann nur zwei Werte
haben: Null, wenn diesem Feld keine Maße folgen, oder gleich NumPoints,
wenn Maße vorhanden sind.
- M Range
- Minimum und Maximum für das Maß für das PolygonZ, gespeichert in der
Reihenfolge Mmin, Mmax.
- M Array
- Eine Feldgruppe von Längen-NumPoints. Die Maße für jeden Ring in
dem PolygonZ werden von Ende zu Ende gespeichert. Die Maße für Ring 2
folgen den Maßen für Ring 1, usw. Die Teilefeldgruppen enthalten den
Feldgruppenindex des Startmaßes für jeden Ring. Es gibt keine Begrenzer
in der Maßfeldgruppe zwischen den Ringen.
- Wichtige Hinweise zu PolygonZ-Formen:
-
- Die Ringe sind geschlossen (der erste und letzte Scheitelpunkt
eines Rings MÜSSEN identisch sein).
- Die Reihenfolge der Ringe in der Punktfeldgruppe ist nicht von
Bedeutung.
Tabelle 77.
PolygonZ-Bytestrom, Inhalt
Position
|
Feld
|
Wert
|
Typ
|
Anzahl
|
Anordnung
|
Byte 0
|
Shape Type
|
15
|
Integer
|
1
|
Little
|
Byte 4
|
Box
|
Box
|
Double
|
4
|
Little
|
Byte 36
|
NumParts
|
NumParts
|
Integer
|
1
|
Little
|
Byte 40
|
NumPoints
|
NumPoints
|
Integer
|
1
|
Little
|
Byte 44
|
Parts
|
Parts
|
Integer
|
NumParts
|
Little
|
Byte X
|
Points
|
Points
|
Point
|
NumPoints
|
Little
|
Byte Y
|
Zmin
|
Zmin
|
Double
|
1
|
Little
|
Byte Y+8
|
Zmax
|
Zmax
|
Double
|
1
|
Little
|
Byte Y+16
|
Zarray
|
Zarray
|
Double
|
NumPoints
|
Little
|
Byte Z
|
NumMs
|
NumMs
|
Integer
|
1
|
Little
|
Byte Z+4*
|
Mmin
|
Mmin
|
Double
|
1
|
Little
|
Byte Z+12*
|
Mmax
|
Mmax
|
Double
|
1
|
Little
|
Byte Z+20*
|
Marray
|
Marray
|
Double
|
NumPoints
|
Little
|
[ Seitenanfang | Vorherige Seite | Nächste Seite | Inhaltsverzeichnis | Index ]