PolyLineZ

A PolyLineZ consists of one or more parts. A part is a connected sequence of two or more points. Parts may or may not be connected to one another. Parts may or may not intersect one another.

The following fields are for a PolyLineZ:
Box
The bounding box for the PolyLineZ, stored in the order Xmin, Ymin, Xmax, Ymax
NumParts
The number of parts in the PolyLineZ
NumPoints
The total number of points for all parts
Parts
An array of length NumParts

Stores, for each part, the index of its first point in the points array.

Array indexes are numbered with respect to 0.

Points
An array of length NumPoints

The points for each part in the PolyLineZ are stored end to end. The points for part 2 follow the points for part 1, and so on. The parts array holds the array index of the starting point for each part. There is no delimiter in the points array between parts.

Z Range
The minimum and maximum Z values for the PolyLineZ stored in the order Zmin, Zmax
Z Array
An array of length NumPoints

The Z values for each part in the PolyLineZ are stored end to end. The Z values for part 2 follow the Z values for part 1, and so on. The parts array holds the array index of the starting point for each part. There is no delimiter in the Z Array between parts.

The following table shows PolyLineZ byte stream contents
Position Field Value Type Number Byte order
Byte 0 Shape Type 10 Integer 1 Little endian
Byte 4 Box Box Double 4 Little endian
Byte 36 NumParts NumParts Integer 1 Little endian
Byte 40 NumPoints NumPoints Integer 1 Little endian
Byte 44 Parts Parts Integer NumParts Little endian
Byte X Points Points Point NumPoints Little endian
Byte Y Zmin Zmin Double 1 Little endian
Byte Y+8 Zmax Zmax Double 1 Little endian
Byte Y+16 Z Array Z Array Double NumPoints Little endian
Tip: X = 44 + (4 * NumParts), Y = X + (16 * NumPoints)