<< Klicken um das Inhaltsverzeichnis anzuzeigen >> Aufbau Shape-Datei |
Die detaillierte technische Spezifikation von Shape-Dateien aller Typen (Punkt, Linie, Polygon, Multipoint etc.) kann hier von der ESRI-Homepage als PDF-Datei abgerufen werden. Der Aufbau der Shape-Dateien vom Typ Punkt wird im folgenden erklärt. Dies stellt die einfachste Variante einer Shape-Datei dar und ist für Fremdprogramme, die Daten an den Karten-Explorer übergeben wollen am relevantesten.
Ein Shape-Datei besteht obligatorisch aus 3 Dateien:
1.*.shp (z.B. rinder.shp) enthält die Geometrie der darzustellenden Objekte und differiert im Aufbau stark mit dem Typ der Shape-Datei. Für den Typ 1=Punkt jedoch ist der Aufbau einfach strukturiert, da ein Punkt hier immer aus 2 Koordinaten besteht.
2.*.shx (z.B. rinder.shx) ist eine Index-Datei mit festem Aufbau, die einen Zeiger auf jedes Element in der Geometrie-Datei (*.shp) enthält. Da die Geometrie-Datei i.d.R. nicht fest strukturiert ist, Polygone beispielsweise zwischen 3 und ∞ viele Punkte enthalten können, ist diese Datei für den nichtsequentiellen Zugriff auf die Geometriedaten unerlässlich.
3.*.dbf (z.B. rinder.dbf) stellt eine dBase-Datei dar, die die Attribute, die mit dem Geo-Objekt assoziiert sind, enthält.
Zusätzlich können u.a. Dateien (*.sbn, *.sbx, *.prj, *.avl, *.lyr, *.lyr.xml, *.cpg) mit einer Shape-Datei assoziiert sein, die z.B. Attribute-Indizes, räumliche Indizes, Angaben über Projektion, Legenden, Einfärbungen und Codepages enthalten. Diese Dateien sind fakultativ und werden hier nicht näher erläutert.
Datei-Header (100 Byte) |
|
Datensatz-Header (8 Byte) |
Datensatz-Inhalt (? Byte, bei Punkt 20 Byte) |
Datensatz-Header ... |
Datensatz-Inhalt ... |
Position |
Feld |
Wert |
Typ |
Byte-Order |
Byte 0 |
Datei-Code |
9994 |
Long (Integer) |
Big (endian) |
Byte 4..23 |
nicht benutzt |
0 |
Long (Integer) |
Big |
Byte 24 |
Dateilänge |
Länge in 16-bit-Words bei Punkt 50+14*Datensätze |
Long (Integer) |
Big |
Byte 28 |
Version |
1000 |
Long (Integer) |
Little |
Byte 32 |
Shape-Typ |
1=Punkt (3=Linie, 5=Polygon, 8=Multipoint) |
Long (Integer) |
Little |
Byte 36 |
Ausdehnung |
Xmin |
Real8 (Double) |
Little |
Byte 44 |
Ausdehnung |
Ymin |
Real8 (Double) |
Little |
Byte 52 |
Ausdehnung |
Xmax |
Real8 (Double) |
Little |
Byte 60 |
Ausdehnung |
Ymax |
Real8 (Double) |
Little |
Byte 68..99 |
nicht benutzt |
0 |
Real8 (Double) |
Little |
Der Karten-Explorer kann ungenutzte Bereiche des Datei-Headers verwenden, um die Angaben zur Projektion (Koordinatensystem, Bezugssystem und Streifen) mit der Shape-Datei zu speichern.
Position |
Feld |
Wert |
Typ |
Byte-Order |
Byte 88 |
Koordinatensystem |
0=unbekannt 1..n Konstanten |
Long (Integer) |
Little |
Byte 92 |
Bezugssystem |
0=unbekannt 1..n Konstanten |
Long (Integer) |
Little |
Byte 96 |
Streifen |
0=unbekannt 1..n Konstanten |
Long (Integer) |
Little |
Position |
Feld |
Wert |
Typ |
Byte-Order |
Byte 0 |
Datensatz |
Datensatz-Nummer |
Long (Integer) |
Big |
Byte 4 |
Länge |
Länge des Datensatzes in 16-bit-Words, beim Typ Punkt immer 10 Byte, bei Polygon usw. ist der Wert von der Anzahl der Punkte abhängig. |
Long (Integer) |
Big |
Position |
Feld |
Wert |
Typ |
Byte-Order |
Byte 0 |
Shape-Typ |
1 |
Long (Integer) |
Little |
Byte 4 |
X |
X bzw. Rechtswert |
Real8 (Double) |
Little |
Byte 12 |
Y |
Y bzw. Hochwert |
Real8 (Double) |
Little |
Shape-Dateien verwenden für alle Variablen, die die Dateiorganisation betreffen (Datei- und Datensatzlänge, Offsets) das Mainframe-Format "Big Endian" (Sun, Motorola), für alle datenbezogenen Adressen das Format "Little Endian" (Intel).
Big Endian: Ein Datenformat für die Übertragung oder Speicherung binärer Daten, in denen das höchstwertige Byte an erster Stelle kommt. Intel-basierte Systeme verwenden einen entgegen gesetzte Byte-Reihenfolge, so dass ggf. folgende Konvertierung für Variablen vom Typ Long vorgenommen werden muss:
Byte1Byte2Byte3Byte4 > Byte4Byte3Byte2Byte1
Der Datei-Header ist identisch mit dem der Geometriedatei, wobei die Dateilänge sich aus 50+4*Anzahl der Datensätze ergibt.
Position |
Feld |
Wert |
Typ |
Byte-Order |
Byte 0 |
Offset |
Anzahl der 16-bit-Words vom Dateistart bis zum Beginn des Datensatzes in der Geometrie-Datei
bei Punkt: 50*(Datensatz-1)*14 |
Long (Integer) |
Big |
Byte 4 |
Länge |
Länge des Datensatzes in 16-bit-Words in der Geometrie-Datei (bei Punkt immer 10) |
Long (Integer) |
Big |
Es handelt sich um eine dBase-Datei im Format dBase III oder dBase IV. Jeder Datensatz entspricht einem Geo-Objekt. Anzahl und Reihenfolge der Datensätze in Geometrie-Datei und dBase-Datei stimmen überein.