ISO/IEC 18023-3 Transmittal format binary encoding

5 Encoding of data types

5.1 Introduction

5.1.1 Table of contents

The contents of this clause are summarized in Table 5.1

Table 5.1 — Table of contents

5 Encoding of data types

5.1 Introduction

5.1.1 Table of contents

5.1.2 Description

5.1.3 Notation conventions

5.2 Encoding of STF-specific data types

5.2.1 Rules for encoding data types

5.2.2 STF primitive data types

5.2.3 Integer representations

5.2.3.1 Overview

5.2.3.2 BCE8_Unsigned

5.2.3.3 BCE16_Unsigned

5.2.3.4 BCE8_Signed

5.2.3.5 STF_Byte_Unsigned

5.2.3.6 STF_Short_Integer

5.2.3.7 STF_Short_Integer_Unsigned

5.2.3.8 STF_Integer

5.2.3.9 STF_Integer_Unsigned

5.2.4 Floating point representations

5.2.5 Record representations<

5.2.5.1 Overview

5.2.5.2 STF_Data_Table_Extents

5.2.5.3 STF_Data_Table_Sentinel_Type

5.2.5.4 STF_FBO

5.2.5.5 STF_Index_Range

5.2.6 String representations

5.3 Encoding of SEDRIS data types

5.3.1 Overview

5.3.2 SEDRIS basic data types

5.3.2.1 Number data types

5.3.2.2 Floating point data types

5.3.2.3 Character data type<

5.3.3 SEDRIS enumerated data types

5.3.3.1 Overview

5.3.3.2 Boolean

5.3.3.3 Colour_Binding

5.3.3.4 Display_Type

5.3.3.5 Image_Scan_Direction

5.3.3.6 Image_Scan_Direction_Z

5.3.3.7 Interval_Type

5.3.3.8 LSR_Transformation_Axis

5.3.3.9 Model_Reference_Type

5.3.3.10 Month

5.3.3.11 Octant

5.3.3.12 Present_In

5.3.3.13 Quadrant

5.3.3.14 Reference_Surface_Elevation_Select

5.3.3.15 Reference_Surface_LOD_Select

5.3.3.16 Season

5.3.3.17 SRM_Direction

5.3.3.18 SRM_Hemisphere

5.3.3.19 SRM_PS_Pole

5.3.3.20 State_Mismatch_Behaviour

5.3.3.21 Time_Of_Day

5.3.4 SEDRIS selection data types

5.3.5 SEDRIS set data types

5.3.5.1 Overview

5.3.5.2 Display_Side

5.3.5.3 Display_Style

5.3.5.4 Polygon_Flags

5.3.5.5 Presentation_Domain

5.3.6 SEDRIS array data types

5.3.7 SEDRIS record data types

5.3.7.1 General form

5.3.7.2 Address

5.3.7.3 AEC_Coordinate_3D

5.3.7.4 AEC_Parameters_3D

5.3.7.5 ALCC_Coordinate_3D

5.3.7.6 ALCC_Parameters_3D

5.3.7.7 AM_Coordinate_3D

5.3.7.8 AM_Parameters_3D

5.3.7.9 Animation_Range

5.3.7.10 AOM_Coordinate_3D

5.3.7.11 AOM_Parameters_3D

5.3.7.12 APS_Coordinate_3D

5.3.7.13 APS_Parameters_3D

5.3.7.14 ATM_Coordinate_3D

5.3.7.15 ATM_Parameters_3D

5.3.7.16 AUPS_Coordinate_3D

5.3.7.17 AUPS_Parameters_3D

5.3.7.18 AUTM_Coordinate_3D

5.3.7.19 AUTM_Parameters_3D

5.3.7.20 CMY_Data

5.3.7.21 Contact_Information

5.3.7.22 EC_2D_Coordinate

5.3.7.23 EC_Parameters_2D

5.3.7.24 Element_Type

5.3.7.25 Float_Interval

5.3.7.26 GC_Coordinate_3D

5.3.7.27 GCS_Coordinate_3D

5.3.7.28 GCS_Parameters_3D

5.3.7.29 GD_Coordinate_2D

5.3.7.30 GD_Parameters_2D

5.3.7.31 GD_Coordinate_3D

5.3.7.32 GD_Coordinate_3D

5.3.7.33 GEI_Coordinate_3D

5.3.7.34 GEI_Parameters_3D

5.3.7.35 GM_Coordinate_3D

5.3.7.36 GM_Parameters_3D

5.3.7.37 GSE_Coordinate_3D

5.3.7.38 GSM_Coordinate_3D

5.3.7.39 HSV_Data

5.3.7.40 Image_MIP_Extents

5.3.7.41 Image_Texel_Location_3D

5.3.7.42 Integer_Interval

5.3.7.43 Integer_Unsigned_Interval

5.3.7.44 Interval_Axis_Value

5.3.7.45 Keyword_Structure

5.3.7.46 LCC_Coordinate_2D

5.3.7.47 LCC_Parameters_2D

5.3.7.48 Locale

5.3.7.49 LSR_Coordinate_2D

5.3.7.50 LSR_Coordinate_3D

5.3.7.51 LSR_Parameters_2D

5.3.7.52 LSR_Parameters_3D

5.3.7.53 LTP_Coordinate_2D

5.3.7.54 LTP_Coordinate_3D

5.3.7.55 LTP_Parameters_2D

5.3.7.56 LTP_Parameters_3D

5.3.7.57 M_Coordinate_2D

5.3.7.58 M_Parameters_2D

5.3.7.59 OM_Coordinate_2D

5.3.7.60 OM_Parameters_2D

5.3.7.61 Property_Data_Value

5.3.7.62 PS_Coordinate_2D

5.3.7.63 PS_Parameters_2D

5.3.7.64 RGB_Data

5.3.7.65 Rotation_Data

5.3.7.66 Security_Information

5.3.7.67 SM_Coordinate_3D

5.3.7.68 SRF_Parameters

5.3.7.69 String

5.3.7.70 Text_Font

5.3.7.71 TM_Coordinate_2D

5.3.7.72 TM_Parameters_2D

5.3.7.73 UPS_Coordinate_2D

5.3.7.74 UPS_Parameters_2D

5.3.7.75URN

5.3.7.76 UTM_Coordinate_2D

5.3.7.77 UTM_Parameters_2D

5.3.7.78 Vector_3

5.3.8 Other SEDRIS data types

5.1.2 Description

This clause specifies the manner in which data types used in binary-encoded SEDRIS transmittals are encoded.

5.1.3 Notation conventions

This part of ISO/IEC 18023 specifies data types using the following form:

name : data type

where name specifies the identifier of the data and data type specifies the data type.

The box may indicate the bit positions of data types that occupy single storage units (8, 16, 32, or 64 bits).  For 64-bit data types only the leading and trailing bit positions are indicated. The other bit positions are implied. If the box does not indicate bit positions, the box represents a complex data type such as an array data type or a record data type whose bit positions can be determined by expanding the data type into its constituent parts.

When a data type has internal fields where the fields represent different meanings, the following form is used:

7

6

5

4

3

2

1

0

A

BB

CC

DDD

where each letter group is the name of a subfield. The specification of the subfield is presented in text following the form. While an octet is shown here as an example, the size of the data type may be any of the supported storage units.

5.2 Encoding of STF-specific data types

5.2.1 Rules for encoding data types

Instances of the data types defined in part 1 of ISO/IEC 18023 and those defined in this part of ISO/IEC 18023 shall be encoded in the form specified in this part of ISO/IEC 18023.

For specifications containing multiple elements, the data shall be encoded in the order presented in this part of ISO/IEC 18023. For variant record types, the data shall be encoded to first encode the discriminant followed by the elements of the variant identified by the value of the discriminant.

2.2 STF primitive data types

These data types are used to store STF structural information as well as the information contained in the fields of object instances.

STF does not require alignment of data types to specific memory boundaries other than octet boundaries.

STF supports only big endian data types.

Figure 5.1 illustrates a big endian representation for the 16-bit word-oriented data types.

15

14

13

12

11

10

9

8

 

7

6

5

4

3

2

1

0

Byte 0

 

Byte 1

Figure 5.1 — Big-endian representation for 16-bit word-oriented data types

Figure 5.2 illustrates the big endian representation for the 32-bit word-oriented data types.

31

30

29

28

27

26

25

24

 

23

22

21

20

19

18

17

16

 

15

14

13

12

11

10

9

8

 

7

6

5

4

3

2

1

0

Byte 0

 

Byte 1

 

Byte 2

 

Byte 3

Figure 5.2 — Big-endian representation for 32-bit word-oriented data types

Figure 5.3 illustrates the big endian representation for the 64-bit word-oriented data types.

63

62

61

60

59

58

57

56

 

55

54

53

52

51

50

49

48

•••

15

14

13

12

11

10

9

8

 

7

6

5

4

3

2

1

0

Byte 0

 

Byte 1

 

Byte 6

 

Byte 7

Figure 5.3 — Big-endian representation for 64-bit word-oriented data types

5.2.3 Integer representations

5.2.3.1 Overview

Integers used for DRM content are represented as byte chain encoded (BCE) data types. These data types are of variable length with only the minimum number of octets needed to represent the value of any particular instance of an integer. Integers used in STF constructs are of fixed size from one to four octets.

5.2.3.2 BCE8_Unsigned

The length of a BCE8_Unsigned element is from one to five octets. The most significant bit (MSB) of each octet indicates whether another octet exists in the value. A MSB value of one indicates that another octet follows; a value of zero indicates that this is the last octet in the value. The LSB from the first octet forms the least significant bits of the integer value. The seven least significant bits (LSB) of subsequent octets are preconcatenated to form an Integer_Unsigned value. Figure 5.4 illustrates this data type.

7

6

5

4

3

2

1

0

 

7

6

5

4

3

2

1

0

 

7

6

5

4

3

2

1

0

1

a

b

c

d

e

f

g

 

1

h

i

j

k

l

m

n

 

0

o

p

q

r

s

t

u

Figure 5.4 — BCE8_Unsigned formulation

The 21 data bits identified by the letters a through u form the 21-bit non-negative integer

opqrstuhijklmnabcdefg

where zeroes fill the unspecified bits of an integer storage unit.

5.2.3.3 BCE16_Unsigned

The length of a BCE16_Unsigned element is from two to five octets. The MSB of the second octet indicates whether another octet exists in the value. All eight bits of the first octet are used as value bits and form the least significant bits of the integer value. This extends the range of two octet representations over that which can be provided by BCE8_Unsigned representations. Figure 5.5 specifies this data type.

7

6

5

4

3

2

1

0

 

7

6

5

4

3

2

1

0

 

7

6

5

4

3

2

1

0

a

b

c

d

e

f

g

h

 

x

i

j

k

l

m

n

o

 

0

p

q

r

s

t

u

v

Figure 5.5 — BCE16_Unsigned formulation

The 22 data bits identified by the letters a through v form the 22-bit non-negative integer

pqrstuvijklmnoabcdefgh

where zeros fill the unspecified bits of an integer’s storage unit. The bit identified as x indicates whether the third octet is present:  x = 1 indicates that the octet is present. The high-order bit of the third octet is always zero.

5.2.3.4 BCE8_Signed

The length of a BCE8_Signed element is from one to five octets. The most significant bit (MSB) of each octet indicates whether another octet exists in the value. A MSB value of one indicates that another octet follows; a value of zero indicates that this is the last octet in the value. The LSB from the first octet forms the least significant bits of the integer value. The seven least significant bits (LSB) of subsequent octets are preconcatenated to form an Integer value. Figure 5.6 specifies this data type.

7

6

5

4

3

2

1

0

 

7

6

5

4

3

2

1

0

 

7

6

5

4

3

2

1

0

1

a

b

c

d

e

f

g

 

1

h

i

j

k

l

m

n

 

0

o

p

q

r

s

t

u

Figure 5.6 — BCE8_Signed formulation

The 21 data bits identified by the letters a through u form the 21-bit two’s-complement integer:

opqrstuhijklmnabcdefg

where bit o is sign-extended to fill an integer storage unit.

5.2.3.5 STF_Byte_Unsigned

The length of an STF_Byte_Unsigned element is one octet.  Figure 5.7 specifies this data type. When included in the more complex constructs, the meaning of bits is specified.

7

6

5

4

3

2

1

0

a

b

c

d

e

f

g

h

Figure 5.7 — STF_Byte_Unsigned formulation

where the bit sequence abcdefgh forms an eight-bit unsigned integer value.

5.2.3.6 STF_Short_Integer

The length of an STF_Short_Integer element is 16 bits.  Figure 5.8 specifies this data type.

15

14

13

12

11

10

9

8

7

6

5

4

3

2

1

0

a

b

c

d

e

f

g

h

i

j

k

l

m

n

o

p

Figure 5.8 — STF_Short_Integer formulation

where the bit sequence specified by abcdefghijklmnop forms a 16-bit signed integer.

5.2.3.7 STF_Short_Integer_Unsigned

The length of an STF_Short_Integer_Unsigned element is two octets.  Figure 5.9 specifies this data type. This data type is always used to represent non-negative numbers.

15

14

13

12

11

10

9

8

7

6

5

4

3

2

1

0

a

b

c

d

e

f

g

h

i

j

k

l

m

n

o

p

Figure 5.9 — STF_Short_Integer_Unsigned formulation

where the bit sequence abcdefghijklmnop forms a non-negative 16-bit integer.

5.2.3.8 STF_Integer

The length of an STF_Integer element is four octets.  Figure 5.10 specifies this data type.

31

30

29

28

27

26

25

24

23

22

21

20

19

18

17

16

15

14

13

12

11

10

9

8

7

6

5

4

3

2

1

0

a

b

c

d

e

f

g

h

i

j

k

l

m

n

o

p

q

r

s

t

u

v

w

x

y

z

0

1

2

3

4

5

Figure 5.10 — STF_Integer formulation

where the bit sequence abcdefghijklmnopqrstuvwxyz012345 forms a 32-bit signed integer.

5.2.3.9 STF_Integer_Unsigned

The length of an STF_Integer_Unsigned element is four octets.  Figure 5.11 specifies this data type. This data type is always used to represent non-negative numbers.

31

30

29

28

27

26

25

24

23

22

21

20

19

18

17

16

15

14

13

12

11

10

9

8

7

6

5

4

3

2

1

0

a

b

c

d

e

f

g

h

i

j

k

l

m

n

o

p

q

r

s

t

u

v

w

x

y

z

0

1

2

3

4

5

Figure 5.11 — STF_Integer_Unsigned formulation

where the bit sequence abcdefghijklmnopqrstuvwxyz012345 forms a 32-bit unsigned integer.

5.2.4 Floating point representations

This format supports two types of floating point representations: single-precision and double-precision. These are encoded as specified in 2.[IEC60559].

In this part of ISO/IEC 18023, single precision elements will be depicted as shown in Figure 5.12:

31

30

29

28

27

26

25

24

23

22

21

20

19

18

17

16

15

14

13

12

11

10

9

8

7

6

5

4

3

2

1

0

single-precision floating point

Figure 5.12 — single-precision floating point formulation

where the 32 bits specify a single-precision field or element.

Similarly, double-precision elements will be depicted as shown in Figure 5.13.

63

62

61

60

59

58

57

56

• • •

7

6

5

4

3

2

1

0

double-precision floating point

Figure 5.13 — Double-precision floating point formulation

where the 64 bits specify a double-precision field or element.

No attempt is made to show the characteristic and the mantissa. Such information may be found in 2.[IEC60559].

Record representations

5.2.5.1 Overview

Within the encoding format, data types that are a composite of basic data types are used. These are specified below.

5.2.5.2 STF_Data_Table_Extents

axes_bounds : STF_Index_Range[axes_count : Short_Integer_Unsigned]

5.2.5.3 STF_Data_Table_Sentinel_Type

sentinel_value : Property_Data_Value

mapped_sentinel_value : Integer_Unsigned

5.2.5.4 STF_FBO

file_index : BCE8_Unsigned (range: [1,30000])

block_index : BCE16_Unsigned (range:  [0,4095])

object_index : Byte_Unsigned (range:  [0,255])

5.2.5.5 STF_Index_Range

first_index : Integer_Unsigned

last_index : Integer_Unsigned

5.2.6 String representations

STF specifies the use of null-terminated strings in the headers of its constructs. Such strings are formed by a series of UTF-8 characters followed by the NULL character (‘00’). This string data types is called STF_Characters.

5.3 Encoding of SEDRIS data types

5.3.1 Overview

The data types specified in part 1 of ISO/IEC 18023 are termed “SEDRIS data types”. These are represented explicitly as required by part 1 of ISO/IEC 18023 (see 2.[I18023-1]) or are mapped to the encoding specific data types specified in this part of ISO/IEC 18023. Only the data types specified in part 1 of ISO/IEC 18023 that may exist as part of a SEDRIS transmittal shall be encoded. Data types specified in part 1 of ISO/IEC 18023 that are not part of a SEDRIS transmittal shall not be encoded.

5.3.2 SEDRIS basic data types

5.3.2.1 Number data types

The following numeric data types specified in part 1 of ISO/IEC 18023 shall be encoded as specified in 5.4.2.2 BCE8_Unsigned:

Short_Integer_Unsigned
Integer_Unsigned
Short_Integer_Positive
Integer_Positive
SRM_Short_Integer_Positive
SRM_Short_Integer_Unsigned

The following numeric data types specified in part 1 of ISO/IEC 18023 shall be encoded as specified in 5.4.2.4 BCE8_Signed:

Short_Integer
Integer
EDCS_Integer
EDCS_Enumerant_Code
SRM_Integer

The following numeric data types specified in part 1 of ISO/IEC 18023 shall be encoded as 8-bit octets:

Byte
Byte_Unsigned
Byte_Positive
SRM_Byte_Positive

5.3.2.2 Floating point data types

All floating point data types specified by part 1 of ISO/IEC 18023 shall be encoded as specified in 2.[IEC60559]. The following is a list of all floating point types specified in part 1 of ISO/IEC 18023 that are so encoded:

Float
Long_Float
SRM_Long_Float

5.3.2.3 Character data type

All characters are encoded in UTF-8 as specified in 2.[I10646]. This results in individual characters that may occupy from one to six octets. The following is a list of all SEDRIS data types that are so encoded:

Character

5.3.3 SEDRIS enumerated data types

5.3.3.1 Overview

All SEDRIS enumerated data types are encoded as BCE8_Unsigned as specified in 5.2.2.2 BCE8_Unsigned. The enumerants have values as shown below.

5.3.3.2 Boolean

FALSE  → 0
TRUE   → 1

5.3.3.3 Colour_Binding

NORMAL           → 0
PARENT_OVERRIDE  → 1

5.3.3.4 Display_Type

RASTER       → 0
CALLIGRAPHIC → 1

5.3.3.5 Image_Scan_Direction

RIGHT_UP   → 0
RIGHT_DOWN → 1
DOWN_RIGHT → 2
DOWN_LEFT  → 3
LEFT_UP    → 4
LEFT_DOWN  → 5
UP_RIGHT   → 6
UP_LEFT    → 7

5.3.3.6 Image_Scan_Direction_Z

Z_NONE     → 0
Z_BACK     → 1
Z_FRONT    → 2

5.3.3.7 Interval_Type

OPEN                     → 0
CLOSED                   → 1
LOWER_CLOSED_UPPER_OPEN  → 2
UPPER_CLOSED_LOWER_OPEN  → 3

5.3.3.8 LSR_Transformation_Axis

X                      → 0
Y                      → 1
Z                      → 2
ALL                    → 3
AXIS_REFERENCE_VECTOR  → 4

5.3.3.9 Model_Reference_Type

COMPONENT           → 0
ROOT                → 1
ROOT_AND_COMPONENT  → 2

5.3.3.10 Month

JANUARY    → 0
FEBRUARY   → 1
MARCH      → 2
APRIL      → 3
MAY        → 4
JUNE       → 5
JULY       → 6
AUGUST     → 7
SEPTEMBER  → 8
OCTOBER    → 9
NOVEMBER   → 10
DECEMBER   → 11

5.3.3.11 Octant

UPPER_SOUTHWEST    → 0
UPPER_NORTHWEST    → 1
LOWER_SOUTHWEST    → 2
LOWER_NORTHWEST    → 3
UPPER_SOUTHEAST    → 4
UPPER_NORTHEAST    → 5
LOWER_SOUTHEAST    → 6
LOWER_NORTHEAST    → 7

5.3.3.12 Present_In

NONE                         → 0
ENVIRONMENT_ROOT             → 1
MODELS                       → 2
ENVIRONMENT_ROOT_AND_MODELS  → 3

5.3.3.13 Quadrant

NORTHWEST  → 0
NORTHEAST  → 1
SOUTHWEST  → 2
SOUTHEAST  → 3

5.3.3.14 Reference_Surface_Elevation_Select

CLOSEST_TO_ORM_CENTRE      → 0
CLOSEST_TO_VERTICAL_DATUM  → 1
HIGHEST                    → 2

5.3.3.15 Reference_Surface_LOD_Select

FULL           → 0
LEAST_DETAILED → 1

5.3.3.16 Season

SPRING     → 0
SUMMER     → 1
AUTUMN     → 2
WINTER     → 3
DRY        → 4
WET        → 5

5.3.3.17 SRM_Direction

POSITIVE_PRIMARY_AXIS    → 0
POSITIVE_SECONDARY_AXIS  → 1
POSITIVE_TERTIARY_AXIS   → 2
NEGATIVE_PRIMARY_AXIS    → 3
NEGATIVE_SECONDARY_AXIS  → 4
NEGATIVE_TERTIARY_AXIS   → 5

5.3.3.18 SRM_Hemisphere

NORTHERN   → 0
SOUTHERN   → 1

5.3.3.19 SRM_PS_Pole

NORTH      → 0
SOUTH      → 1

5.3.3.20 State_Mismatch_Behaviour

LAST       → 0
DEFAULT    → 1
NONE       → 2

5.3.3.21 Time_Of_Day

DAWN       → 0
MORNING    → 1
DAY        → 2
AFTERNOON  → 3
DUSK       → 4
EVENING    → 5
NIGHT      → 6

5.3.4 SEDRIS selection data types

All selection data types are encoded as BCE8_Signed as specified in 5.2.2.4 BCE8_Signed. The following is a list of SEDRIS selection data types that may be encoded in an STF:

Axis_Alignment
Camera_Projection_Type
CI_RoleCode
Colour_Mapping
Colour_Model
DRM_Class
EDCS_Attribute_Code
EDCS_Classification_Code
EDCS_Enumeration_Code
EDCS_Scale_Code
EDCS_Unit_Code
EDCS_Value_Characteristics_Code
Element_Type_Code
Feature_Topology_Level
Feature_Union_Reason
Font_Style
Geometry_Topology_Level
Grid_Overlap_Operator
Image_Component_Type
Image_Mapping_Method
Image_Projection_Type
Image_Signature
Image_Wrap
Index_Code
Interpolation_Type
Keyword_Type_Code
LOD_Data_Type
Lookup_Signature
Lookup_Type
Media_Format
Ordering_Reason
Pixel_Fill_Method
Predefined_Function
Property_Data_Value_Type
Reference_Vector_Type
Security_Restriction_Type
Shading_Method
Sound_Format
Spacing_Type
Spatial_Index_Spacing_Unit
SRM_Elevation_Unit
SRM_Epoch
SRM_Horizontal_Datum_Code
SRM_SRF_Type
SRM_Vertical_Datum_Code
Symbol_Format
Time_Configuration
Time_Data_Type
Time_Measurement_Type
Time_Significance
Traversal_Order
Underline_Style
Unmatched_State_Behaviour
Variable_Code
Volumetric_Shape

5.3.5 SEDRIS set data types

5.3.5.1 Overview

SEDRIS set data types are all encoded as 32-bit integers with different set members mapped to individual bits as shown below. The general bit layout for a set data type is depicted in Figure 5.14. Each set data type specifies a particular number of bits to be used. All other bit positions shall be set to 0. A value of 1 in a bit position indicates that that set member is part of the set. A value of zero in a bit position indicates that that set member is not part of the set.

31

30

29

28

27

26

25

24

23

22

21

20

19

18

17

16

15

14

13

12

11

10

9

8

7

6

5

4

3

2

1

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Figure 5.14 — Set data type formulation

5.3.5.2 Display_Side

FRONT → Bit 0
BACK   → Bit 1

5.3.5.3 Display_Style

SOLID   → Bit 0
WIREFRAME → Bit 1

5.3.5.4 Polygon_Flags

TERRAIN → Bit 0
HAT_TEST                      → Bit 1
COLLIDIBLE                    → Bit 2
PROJECTILE_COLLIDIBLE         → Bit 3
BACKDROP_SKY                  → Bit 4
BACKDROP_GROUND               → Bit 5
CUT                           → Bit 6
RAISED                        → Bit 7
DECAL                         → Bit 8
INACTIVE                      → Bit 9
INVISIBLE                     → Bit 10
FOOTPRINT                     → Bit 11
WATER                         → Bit 12
CLUTTER_ENHANCED              → Bit 13
SHADOW                        → Bit 14
SUN_ILLUMINATED               → Bit 15
MOON_REFLECTION               → Bit 16
ENABLE_FRACTAL                → Bit 17
CUT_IMAGERY                   → Bit 18
VISIBLE_PERIMETER             → Bit 19
VISIBLE_INTERIOR              → Bit 20
VISIBLE_FLOOR                 → Bit 21
OPAQUE_TOP                    → Bit 22
LASER_RANGE_FINDING           → Bit 23
REFLECTIVE                    → Bit 24
SITE_OCCULTING                → Bit 25
ENABLE_POLYGON_RANGE_BLENDING → Bit 26
ENABLE_FEATURE_SIZE_BLENDING  → Bit 27
CONCAVE                       → Bit 28
DO_NOT_DRAPE                  → Bit 29

5.3.5.5 Presentation_Domain

OTW           → Bit 0
IR_HI_BAND    → Bit 1
IR_LOW_BAND   → Bit 2
NVG           → Bit 3
DAY_TV_COLOUR → Bit 4
DAY_TV_BW     → Bit 5
RADAR         → Bit 6
SAR           → Bit 7
THERMAL       → Bit 8
LOW_LIGHT_TV  → Bit 9

5.3.6 SEDRIS array data types

Fixed length arrays shall be encoded as a sequence of the base data type for the array. If the array is two-dimensional, the sequence shall be sorted such that all the elements of a row are represented before the first element of the next row.

Variable length arrays shall be encoded by first encoding the sizes of each dimension of the array before encoding the array. Once the dimensions are encoded, the array shall be encoded as for fixed length arrays. Some variable length arrays have their lengths specified by other parameters. In this case, the length specified by the other parameter shall be used and only the array content shall be encoded.

An example of how array data types are specified is shown in Figure 5.15:

content_name : Content_Data_Type[length_name : Length_Data_Type]

Figure 5.15 Variable array formulation

This indicates that the first element of the array encoding is an element of type “Length_Data_Type” followed by “length_name” occurrences of an element of type “Content_Data_Type”.

All elements of the array are packed; there are no padding elements.

The following is a list of specially defined array data types from part 1 of ISO/IEC 18023 that may be encoded in an STF-encoded SEDRIS transmittal:

Matrix_3x3
Matrix_4x4
Vector_3

Since these three data types are of fixed size, no length field shall be provided.

Array data types may also be formed from any of the other SEDRIS array types.

5.3.7 SEDRIS record data types

5.3.7.1 General form

Record data types shall be encoded as a sequence of the fields comprising the record. Each field of the record shall be encoded individually according to the requirements of the specified data type until the entire record is encoded.

Variant record data types have different encoding depending on the value of the discriminant. Thus, the value of the discriminant shall first be encoded as appropriate for the data type of the discriminant followed immediately by the encoding of the first field that corresponds with the definition of the record for that discriminant value.

All elements of the record shall be packed; there shall be no padding elements.

The following defines the specific encoding of all SEDRIS record data types that may be exist in an STF.

5.3.7.2 Address

delivery_point : String

city : String

administrative_area : String

postal_code : String

country : String

5.3.7.3 AEC_Coordinate_3D

x : Long_Float

y : Long_Float

z : Long_Float

5.3.7.4 AEC_Parameters_3D

horizontal_datum : SRM_Horizontal_Datum_Code

vertical_datum : SRM_Vertical_Datum_Code

geodetic_latitude : SRM_Long_Float

geodetic_longitude : SRM_Long_Float

x_offset : SRM_Long_Float

y_offset : SRM_Long_Float

central_scale_factor : SRM_Long_Float

z_unit : SRM_Elevation_Unit

5.3.7.5 ALCC_Coordinate_3D

x : Long_Float

y : Long_Float

z : Long_Float

5.3.7.6 ALCC_Parameters_3D

horizontal_datum : SRM_Horizontal_Datum_Code

vertical_datum : SRM_Vertical_Datum_Code

north_parallel_geodetic_latitude : SRM_Long_Float

south_parallel_geodetic_latitude : SRM_Long_Float

geodetic_latitude : SRM_Long_Float

geodetic_longitude : SRM_Long_Float

z_unit : SRM_Elevation_Unit

x : Long_Float

y : Long_Float

z : Long_Float

5.3.7.8 AM_Parameters_3D

horizontal_datum : SRM_Horizontal_Datum_Code

vertical_datum : SRM_Vertical_Datum_Code

geodetic_longitude : SRM_Long_Float

central_scale_factor : SRM_Long_Float

x_offset : SRM_Long_Float

y_offset : SRM_Long_Float

z_unit : SRM_Elevation_Unit

5.3.7.9 Animation_Range

beginning_frame : Short_Integer_Unsigned

ending_frame : Short_Integer_Unsigned

5.3.7.10 AOM_Coordinate_3D

x : Long_Float

y : Long_Float

z : Long_Float

5.3.7.11 AOM_Parameters_3D

horizontal_datum : SRM_Horizontal_Datum_Code

vertical_datum : SRM_Vertical_Datum_Code

geodetic_latitude_1 : SRM_Long_Float

geodetic_longitude_1 : SRM_Long_Float

geodetic_latitude_2 : SRM_Long_Float

geodetic_longitude_2 : SRM_Long_Float

x_offset : SRM_Long_Float

y_offset : SRM_Long_Float

central_scale_factor : SRM_Long_Float

z_unit : SRM_Elevation_Unit

5.3.7.12 APS_Coordinate_3D

x : Long_Float

y : Long_Float

z : Long_Float

5.3.7.13 APS_Parameters_3D

horizontal_datum : SRM_Horizontal_Datum_Code

vertical_datum : SRM_Vertical_Datum_Code

pole : SRM_PS_Pole

geodetic_longitude : SRM_Long_Float

central_scale_factor : SRM_Long_Float

z_unit : SRM_Elevation_Unit

x_offset : SRM_Long_Float

y_offset : SRM_Long_Float

5.3.7.14 ATM_Coordinate_3D

x : Long_Float

y : Long_Float

z : Long_Float

5.3.7.15 ATM_Parameters_3D

horizontal_datum : SRM_Horizontal_Datum_Code

vertical_datum : SRM_Vertical_Datum_Code

geodetic_latitude : SRM_Long_Float

geodetic_longitude : SRM_Long_Float

x_offset : SRM_Long_Float

y_offset : SRM_Long_Float

central_scale_factor : SRM_Long_Float

z_unit : SRM_Elevation_Unit

5.3.7.16 AUPS_Coordinate_3D

x : Long_Float

y : Long_Float

z : Long_Float

5.3.7.17 AUPS_Parameters_3D

horizontal_datum : SRM_Horizontal_Datum_Code

vertical_datum : SRM_Vertical_Datum_Code

pole : SRM_PS_Pole

x_offset : SRM_Long_Float

y_offset : SRM_Long_Float

z_unit : SRM_Elevation_Unit

5.3.7.18 AUTM_Coordinate_3D

x : Long_Float

y : Long_Float

z : Long_Float

5.3.7.19 AUTM_Parameters_3D

horizontal_datum : SRM_Horizontal_Datum_Code

vertical_datum : SRM_Vertical_Datum_Code

x_offset : SRM_Long_Float

y_offset : SRM_Long_Float

z_unit : SRM_Elevation_Unit

zone : SRM_Byte_Positive

hemisphere : SRM_Hemisphere

5.3.7.20 CMY_Data

cyan : Long_Float

magenta : Long_Float

yellow : Long_Float

5.3.7.21 Contact_Information

person_name : String

 position_name : String

organization : String

address : Address

voice_phone : String

fax_phone : String

tdd_tty_phone : String

email_address : data_type

web_site : String

hours_of_service : String

other : String

5.3.7.22 EC_Coordinate_2D

x : Long_Float

y : Long_Float

5.3.7.23 EC_Parameters_2D

horizontal_datum : SRM_Horizontal_Datum_Code

geodetic_latitude : SRM_Long_Float

geodetic_longitude : SRM_Long_Float

x_offset : SRM_Long_Float

y_offset : SRM_Long_Float

central_scale_factor : SRM_Long_Float

5.3.7.24 Element_Type

code_type : Element_Code_Type

For code_type = ATTRIBUTE_CODE:

attribute : EDCS_Attribute_Code

For code_type = INDEX_CODE:

index : Index_Code

For code_type = VARIABLE_CODE:

variable : Variable_Code

5.3.7.25 Float_Interval

type: Interval_Type

upper_bound : EDCS_Float

lower_bound : EDCS_Float

5.3.7.26 GC_Coordinate_3D

x : Long_Float

y : Long_Float

z : Long_Float

5.3.7.27 GCS_Coordinate_3D

x : Long_Float

y : Long_Float

z : Long_Float

5.3.7.28 GCS_Parameters_3D

cell_id : SRM_Short_Integer_Positive

x_offset : SRM_Long_Float

y_offset : SRM_Long_Float

5.3.7.29 GD_Coordinate_2D

geodetic_longitude : Long_Float

geodetic_latitude : Long_Float

5.3.7.30 GD_Parameters_2D

horizontal_datum : SRM_Horizontal_Datum_Code

5.3.7.31 GD_Coordinate_3D

geodetic_longitude : Long_Float

geodetic_latitude : Long_Float

elevation : Long_Float

5.3.7.32 GD_Coordinate_3D

horizontal_datum : SRM_Horizontal_Datum_Code

vertical_datum : SRM_Vertical_Datum_Code

z_unit : SRM_Elevation_Unit

5.3.7.33 GEI_Coordinate_3D

right_ascension : Long_Float

declination : Long_Float

radius : Long_Float

5.3.7.34 GEI_Parameters_3D

epoch : SRM_Epoch

5.3.7.35 GM_Coordinate_3D

geomagnetic_longitude : Long_Float

geomagnetic_latitude : Long_Float

radius : Long_Float

5.3.7.36 GM_Parameters_3D

gm_epoch : SRM_Short_Integer_Unsigned

gm_earth_radius : SRM_Long_Float

5.3.7.37 GSE_Coordinate_3D

longitude : Long_Float

latitude : Long_Float

radius : Long_Float

5.3.7.38 GSM_Coordinate_3D

longitude : Long_Float

latitude : Long_Float

radius : Long_Float

5.3.7.39 HSV_Data

hue : Long_Float

saturation : Long_Float

value : Long_Float

5.3.7.40 Image_MIP_Extents

size_horizontal : Integer_Positive

size_vertical : Integer_Positive

size_z : Integer_Positive

5.3.7.41 Image_Texel_Location_3D

horizontal : Short_Integer_Unsigned

vertical : Short_Integer_Unsigned

z : Short_Integer_Unsigned

5.3.7.42 Integer_Interval

type : Interval_Type

lower_bound : EDCS_Integer

upper_bound : EDCS_Integer

5.3.7.43 Integer_Unsigned_Interval

type : Interval_Type

lower_bound : EDCS_Integer_Unsigned

upper_bound : EDCS_Integer_Unsigned

5.3.7.44 Interval_Axis_Value

value_minimum : Long_Float

value_maximum : Long_Float

5.3.7.45 Keyword_Structure

code : Keyword_Type_Code

thesaurus : String

keyword_list : String

5.3.7.46 LCC_Coordinate_2D

x : Long_Float

y : Long_Float

5.3.7.47 LCC_Parameters_2D

horizontal_datum : SRM_Horizontal_Datum_Code

north_parallel_geodetic_latitude : SRM_Long_Float

south_parallel_geodetic_longitude : SRM_Long_Float

geodetic_latitude : SRM_Long_Float

geodetic_longitude : SRM_Long_Float

x_offset : SRM_Long_Float

y_offset : SRM_Long_Float

5.3.7.48 Locale

language : Character[language_length : Short_Integer_Unsigned]

5.3.7.49 LSR_Coordinate_2D

x : Long_Float

y : Long_Float

5.3.7.50 LSR_Coordinate_3D

x : Long_Float

y : Long_Float

z : Long_Float

5.3.7.51 LSR_Parameters_2D

forward_direction : SRM_Forward_Direction

5.3.7.52 LSR_Parameters_3D

up_direction : SRM_Direction

forward_direction : SRM_Direction

5.3.7.53 LTP_Coordinate_2D

x : Long_Float

y : Long_Float

5.3.7.54 LTP_Coordinate_3D

x : Long_Float

y : Long_Float

z : Long_Float

5.3.7.55 LTP_Parameters_2D

horizontal_datum : SRM_Horizontal_Datum_Code

geodetic_latitude : SRM_Long_Float

geodetic_longitude : SRM_Long_Float

azimuth : SRM_Long_Float

x_offset : SRM_Long_Float

y_offset : SRM_Long_Float

5.3.7.56 LTP_Parameters_3D

horizontal_datum : SRM_Horizontal_Datum_Code

vertical_datum : SRM_Vertical_Datum_Code

geodetic_latitude : SRM_Long_Float

geodetic_longitude : SRM_Long_Float

azimuth : SRM_Long_Float

x_offset : SRM_Long_Float

y_offset : SRM_Long_Float

z_unit : SRM_Elevation_Unit

5.3.7.57 M_Coordinate_2D

x : Long_Float

y : Long_Float

5.3.7.58 M_Parameters_2D

horizontal_datum : SRM_Horizontal_Datum_Code

geodetic_longitude : SRM_Long_Float

central_scale_factor : SRM_Long_Float

x_offset : SRM_Long_Float

y_offset : SRM_Long_Float

5.3.7.59 OM_Coordinate_2D

x : Long_Float

y : Long_Float

5.3.7.60 OM_Parameters_2D

horizontal_datum : SRM_Horizontal_Datum_Code

geodetic_latitude_1 : SRM_Long_Float

geodetic_longitude_1 : SRM_Long_Float

geodetic_latitude_2 : SRM_Long_Float

geodetic_longitude_2 : SRM_Long_Float

x_offset : SRM_Long_Float

y_offset : SRM_Long_Float

central_scale_factor : SRM_Long_Float

5.3.7.61 Property_Data_Value

value_type : Property_Data_Value_Type

For value_type = BOOLEAN:

Boolean_value : Boolean

For value_type = BYTE:

byte_value : Byte

For value_type = BYTE_POSITIVE:

byte_positive_value : Byte_Positive

For value_type = BYTE_UNSIGNED:

byte_unsigned_value : Byte_Unsigned

For value_type = SHORT_INTEGER:

short_integer_value : Short_Integer

For value_type = SHORT_INTEGER_POSITIVE:

short_integer_positive_value : Short_Integer_Positive

For value_type = SHORT_INTEGER_UNSIGNED:

short_integer_unsigned_value : Short_Integer_Unsigned

For value_type = INTEGER:

integer _value : Integer

For value_type = INTEGER_INTERVAL:

integer_interval_value : Integer_Interval

For value_type = INTEGER_POSITIVE:

integer_positive_value : Integer_Positive

For value_type = INTEGER_UNSIGNED:

integer_unsigned_value : Integer_Unsigned

For value_type = INTEGER_UNSIGNED_INTERVAL:

integer_unsigned_interval_value : Integer_Unsigned_Interval

For value_type = FLOAT:

float_value : Float

For value_type = FLOAT_INTERVAL:

float_interval_value : Float_Interval

For value_type = LONG_FLOAT:

long_float_value : Long_Float

For value_type = STRING:

string_value : String

For value_type = DATA_TABLE_COMPONENT_INDEX:

dt_component_index_value : Integer_Unsigned

For value_type = DATA_TABLE_LIBRARY_INDEX:

dt_library_index_value : Integer_Unsigned

For value_type = ENUMERANT_CODE:

edcs_enumerant_code_value : EDCS_Enumerant_Code

For value_type = METADATA_CODE:

edcs_metadata_code_value : EDCS_Metadata_Code

5.3.7.62 PS_Coordinate_2D

x : Long_Float

y : Long_Float

5.3.7.63 PS_Parameters_2D

horizontal_datum : SRM_Horizontal_Datum_Code

pole : SRM_PS_Pole

geodetic_latitude : SRM_Long_Float

central_scale_factor : SRM_Long_Float

x_offset : SRM_Long_Float

y_offset : SRM_Long_Float

5.3.7.64 RGB_Data

red : Long_Float

green : Long_Float

blue : Long_Float

5.3.7.65 Rotation_Data

ccw_limit : Long_Float

cw_limit : Long_Float

5.3.7.66 Security_Information

system : String

classification : String

handling : String

5.3.7.67 SM_Coordinate_3D

longitude : Long_Float

latitude : Long_Float

radius : Long_Float

5.3.7.68 SRF_Parameters

SRF_type : SRF_Type

For SRF_type = AEC:

AEC_parameters : SRM_AEC_Parameters

For SRF_type = ALCC:

ALCC_parameters : SRM_ALCC_Parameters

For SRF_type = AM:

AM_parameters : SRM_AM_Parameters

For SRF_type = AOM:

AOM_parameters : SRM_AOM_Parameters

For SRF_type = APS:

APS_parameters : SRM_APS_Parameters

For SRF_type = ATM:

ATM_parameters : SRM_ATM_Parameters

For SRF_type = AUPS:

AUPS_parameters : SRM_AUPS_Parameters

For SRF_type = AUTM:

AUTM_parameters : SRM_AUTM_Parameters

For SRF_type = EC:

EC_parameters : SRM_EC_Parameters

For SRF_type = GC:

No additional information encoded.

For SRF_type = GCS:

GCS_parameters : SRM_GCS_Parameters

For SRF_type = GD2:

GD_parameters : SRM_GD2_Parameters

For SRF_type = GD3:

GD3_parameters : SRM_GD3_Parameters

For SRF_type = GEI:

GEI_parameters : SRM_GEI_Parameters

For SRF_type = GM:

GM_parameters : SRM_GM_Parameters

For SRF_type = GSE:

No additional information is encoded.

For SRF_type = GSM:

No additional information is encoded.

For SRF_type = LCC:

LCC_parameters : SRM_LCC_Parameters

For SRF_type = LSR2:

LSR2_parameters : SRM_LSR2_Parameters

For SRF_type = LSR3:

LSR3_parameters : SRM_LSR3_Parameters

For SRF_type = LTP:

LTP_parameters : SRM_LTP_Parameters

For SRF_type = M:

M_parameters : SRM_M_Parameters

For SRF_type = OM:

AEC_parameters : SRM_OM_Parameters

For SRF_type = PS:

AEC_parameters : SRM_PS_Parameters

For SRF_type = SM:

No additional information is encoded.

For SRF_type = TM:

TM_parameters : SRM_TM_Parameters

For SRF_type = UPS:

UPS_parameters : SRM_UPS_Parameters

For SRF_type = UTM:

UTM_parameters : SRM_UTM_Parameters

5.3.7.69 String

locale : Locale

characters : Character[length : Integer_Unsigned]

5.3.7.70 Text_Font

font_family : String

font_style : Font_Style

font_size : Float

underline_style : Underline_Style

5.3.7.71 TM_Coordinate_2D

x : Long_Float

y : Long_Float

z : Long_Float

5.3.7.72 TM_Parameters_2D

horizontal_datum : SRM_Horizontal_Datum_Code

geodetic_latitude : SRM_Long_Float

geodetic_longitude : SRM_Long_Float

x_offset : SRM_Long_Float

y_offset : SRM_Long_Float

central_scale_factor : SRM_Long_Float

5.3.7.73 UPS_Coordinate_2D

x : Long_Float

y : Long_Float

z : Long_Float

5.3.7.74 UPS_Parameters_2D

horizontal_datum : SRM_Horizontal_Datum_Code

pole : SRM_PS_Pole

x_offset : SRM_Long_Float

y_offset : SRM_Long_Float

5.3.7.75 URN

characters : Character[length : Integer_Unsigned]

5.3.7.76 UTM_Coordinate_2D

x : Long_Float

y : Long_Float

5.3.7.77 UTM_Parameters_2D

horizontal_datum : SRM_Horizontal_Datum_Code

x_offset : SRM_Long_Float

y_offset : SRM_Long_Float

zone : SRM_Byte_Positive

hemisphere : SRM_Hemisphere

5.3.7.78 Vector_3

x : Long_Float

y : Long_Float

z : Long_Float

5.3.8 Other SEDRIS data types

SEDRIS data types used by the SEDRIS API are not needed to represent a SEDRIS transmittal and, hence, shall not be encoded. This includes all SEDRIS private and function data types.