VTK Legacy Reader/Writer Information Format#

Overview#

The legacy vtk data file readers / writers store certain vtkInformation entries that are set on vtkAbstractArray’s GetInformation() object. Support is currently limited to numeric and string information keys, both single- and vector-valued. Only the information objects attached to arrays are encoded.

Array Metadata Blocks#

A block of metadata may immediately follow the specification of an array. Whitespace is permitted between the array data and the opening METADATA tag. The metadata block is terminated by an empty line.

# vtk DataFile Version 4.1
vtk output
ASCII
DATASET UNSTRUCTURED_GRID
POINTS 6 float
0 0 0 1 0 0 0.5 1 0
0.5 0.5 1 0.5 -1 0 0.5 -0.5 1

METADATA
COMPONENT_NAMES
X%20coordinates
Y%20coordinates
Z%20coordinates
INFORMATION 8
NAME Double LOCATION TestKey
DATA 1
NAME DoubleVector LOCATION TestKey
DATA 3 1 90 260
NAME IdType LOCATION TestKey
DATA 5
NAME String LOCATION TestKey
DATA Test%20String!%0ALine2
NAME Integer LOCATION TestKey
DATA 408
NAME IntegerVector LOCATION TestKey
DATA 3 1 5 45
NAME StringVector LOCATION TestKey
DATA 3
First
Second%20(with%20whitespace!)
Third%20(with%0Anewline!)
NAME UnsignedLong LOCATION TestKey
DATA 9

CELLS 3 15
4 0 1 2 3
4 0 4 1 5
4 5 3 1 0

CELL_TYPES 3
10
10
10

CELL_DATA 3
FIELD FieldData 1
vtkGhostType 1 3 unsigned_char
0 1 1
METADATA
COMPONENT_NAMES
Ghost%20level%20information
INFORMATION 1
NAME UNITS_LABEL LOCATION vtkDataArray
DATA radians

As shown, a metadata block can have two sections, COMPONENT_NAMES and INFORMATION. The INFORMATION tag is followed by the number of information keys that follow.

COMPONENT_NAMES#

If the METADATA block contains the line COMPONENT_NAMES, the following lines are expected to be encoded strings containing the names of each component. There must be one line per component.

INFORMATION#

If the METADATA block contains the line INFORMATION, the number of information keys is read from the INFORMATION line and vtkInformation data that follows is parsed. The general form of a single valued information entry is:

NAME [key name] LOCATION [key location (e.g. class name)]
DATA [value]

A vector information key is generally represented as:

NAME [key name] LOCATION [key location (e.g. class name)]
DATA [vector length] [value0] [value1] [value2] ...

The exception is a string vector, which contains encoded entries separated by newlines.

Specific examples of supported key types:

vtkInformationDoubleKey#

NAME Double LOCATION TestKey
DATA 1

vtkInformationDoubleVectorKey#

NAME DoubleVector LOCATION TestKey
DATA 3 1 90 260

vtkInformationIdTypeKey#

NAME IdType LOCATION TestKey
DATA 5

vtkInformationStringKey#

NAME String LOCATION TestKey
DATA Test%20String!%0ALine2

vtkInformationIntegerKey#

NAME Integer LOCATION TestKey
DATA 408

vtkInformationIntegerVectorKey#

NAME IntegerVector LOCATION TestKey
DATA 3 1 5 45

vtkInformationStringVectorKey#

NAME StringVector LOCATION TestKey
DATA 3
First
Second%20(with%20whitespace!)
Third%20(with%0Anewline!)

vtkInformationUnsignedLongKey#

NAME UnsignedLong LOCATION TestKey
DATA 9