Information technology — SEDRIS —
Part 3: Transmittal format binary encoding
This clause specifies the encoding of data types.
Table 5.1 lists the topics in this clause.
This part of ISO/IEC 18023 specifies the encoding of data elements using the following form:
name : Data_Type |
where name specifies the identifier of the data and Data_Type specifies the data type.
The encoding of data types that occupy single storage units (8, 16, 32, or 64 bits) may indicate the bit positions within the storage unit. 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.
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 non-variant fields of the variant record type, if any. The variant field shall be the last field of the variant record type.
The STF primitive data types are used to store STF structure information and are also used to encode basic SEDRIS data types (see 5.3 Encoding of SEDRIS data types).
This part of ISO/IEC 18023 does not require alignment of data types to specific storage unit boundaries other than octet boundaries.
This part of ISO/IEC 18023 supports both big-endian and little-endian representations of data types. For presentation in this part of ISO/IEC 18023, big-endian will be used throughout.
Figure 5.1 illustrates a big endian representation for the 16-bit word-oriented data types.
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 |
Octet 0 |
|
Octet 1 |
|
Octet 2 |
|
Octet 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 |
Octet 0 |
|
Octet 1 |
|
Octet 6 |
|
Octet 7 |
Figure 5.3 — Big-endian representation for 64-bit word-oriented data types
The STF_Octet data type specifies an eight-bit field that represents a series of subfields or eight bits of data of unknown composition.
Figure 5.4 specifies this data type. When representing a series of subfields, the meaning of each group of bits representing a subfield is specified.
Figure 5.4 — STF_Octet formulation
where abcdefgh represent the individual bits within an octet.
Integers used for DRM content are represented as octet chain encoded (OCE) 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. Some STF constructs use fixed size integers of length one, two, or four octets.
The length of an OCE8_Unsigned element is from one to five octets. The most significant bit (MSB) of each octet indicates whether another octet exists in the value. An MSB value of one indicates that another octet follows; a value of zero indicates that this is the last octet in the value. The least significant bits (LSB) from the first octet forms the least significant bits of the integer value. The seven LSBs of subsequent octets are preconcatenated to form an Integer_Unsigned value.
EXAMPLE Figure 5.5 shows an example of a three octet OCE8_Unsigned.
Figure 5.5 — OCE8_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.
The length of an OCE8_Signed element is from one to five octets. The MSB of each octet indicates whether another octet exists in the value. An 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 LSBs of subsequent octets are preconcatenated to form an Integer value.
EXAMPLE Figure 5.6 shows an example of a three octet OCE8_Signed.
Figure 5.6 — OCE8_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.
The length of an STF_Byte_Unsigned element is one octet. Figure 5.7 specifies this data type where the bit sequence abcdefgh forms an eight-bit unsigned integer value.
Figure 5.7 — STF_Byte_Unsigned formulation
The length of an STF_Short_Integer_Unsigned element is two octets. Figure 5.8 specifies this data type. This data type is always used to represent non-negative numbers.
Figure 5.8 — STF_Short_Integer_Unsigned formulation
where the bit sequence abcdefghijklmnop forms a non-negative 16-bit integer.
The length of an STF_Integer_Unsigned element is four octets. Figure 5.9 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.9 — STF_Integer_Unsigned formulation
where the bit sequence abcdefghijklmnopqrstuvwxyz012345 forms a 32-bit unsigned integer.
This format supports two types of floating point representations: single-precision and double-precision. These are encoded as specified in IEC 60559.
Figure 5.10 specifies the STF_Float 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 |
single-precision floating point |
Figure 5.10 — single-precision floating point formulation
where the 32 bits specify a single-precision field or element.
NOTE Part 1 of ISO/IEC 18023 specifies the encoding of floating point data.
Figure 5.11 specifies the STF_Long_Float data type:
Figure 5.11 — Double-precision floating point formulation
where the 64 bits specify a double-precision field or element.
NOTE Part 1 of ISO/IEC 18023 specifies the encoding of floating point data.
Within the encoding format, data types that are a composite of basic data types are used. Some STF-specific record representations use SEDRIS data types as encoded in 5.3 Encoding of SEDRIS data types. The STF-specific record representations are specified below.
axes_bounds : STF_Index_Range[axes_count : Short_Integer_Unsigned] |
sentinel_value : Single_Value |
mapped_sentinel_value : Integer_Unsigned |
file_index : STF_Short_Integer_Unsigned |
block_index : STF_Short_Integer_Unsigned (range: 0..4095) |
object_index : STF_Byte_Unsigned (range: 0..255) |
first_index : Integer_Unsigned |
last_index : Integer_Unsigned |
This part of ISO/IEC 18023 specifies the use of null-terminated strings in the headers of STF constructs. Such strings are formed by a series of UTF-8 characters as specified in ISO/IEC 10646 followed by the NULL character (0x00). This string data type is called STF_Characters.
This part of ISO/IEC 18023 specifies the encoding of two types of objects: DRM objects and STF bulk data objects. The STF_Object_Type selection data type is defined to have the definition as specified for the DRM_Class data type (see 5.3.4 SEDRIS selection data types) with the following additional values representing the absence of an object as well as each each bulk data object:
NO_OBJECT
→ 0
DATA_TABLE_BLOCK_PARAMETER_DATA → 506
DATA_TABLE_BLOCK_DATA
→ 507
DATA_TABLE_ROOT_DATA
→ 508
MESH_FACE_TABLE_PARAMETER_DATA → 509
MESH_FACE_TABLE_DATA
→ 510
IMAGE_DATA
→ 511
The length of an STF_Object_Type element is a nine-bit field. Figure 5.12 specifies this data type where the bit sequence abcdefghi forms a nine-bit unsigned integer value. This data type is only used to form object type lists as specified in 6.3.3.3 Object type list.
Figure 5.12 — STF_Object_Type formulation
The data types specified in 5 Fundamental data types of Part 1 of ISO/IEC 18023 are termed SEDRIS data types. These are represented explicitly as required by Part 1 of ISO/IEC 18023 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 transmittal shall be encoded. In particular, data types used solely by the SEDRIS API for parameters that do not represent data shall not be encoded.
SEDRIS data types derived from data types defined in ISO/IEC 18026 are encoded in 5.4 Encoding of SRM data types.
The following integer data types specified in 5.2.3 Integers of Part 1 of ISO/IEC 18023 shall be encoded as specified in 5.2.4.2 OCE8_Unsigned:
Short_Integer_Unsigned
Short_Integer_Positive
Integer_Unsigned
Integer_Positive
The following integer data types specified in 5.2.3 Integers of Part 1 of ISO/IEC 18023 shall be encoded as specified in 5.2.4.3 OCE8_Signed:
Short_Integer
Integer
The following integer data types specified in 5.2.3 Integers of Part 1 of ISO/IEC 18023 shall be encoded as 8-bit octets:
Byte
Byte_Unsigned
Byte_Positive
The Float data type specified in 5.2.4 Floating point numbers of Part 1 of ISO/IEC 18023 shall be encoded as an STF_Float as specified in 5.2.5.2 STF_Float.
The Long_Float data type specified in 5.2.4 Floating point numbers of Part 1 of ISO/IEC 18023 shall be encoded as STF_Long_Float as specified in 5.2.5.3 STF_Long_Float.
All characters are encoded in UTF-8 as specified in ISO/IEC 10646. Accordingly, individual characters may occupy from one to six octets. The SEDRIS Character data type is encoded as specified in 5.2.5 Characters and strings of Part 1 of ISO/IEC 18023.
The Octet data type as specified in 5.2.2 Octet of Part 1 of ISO/IEC 18023 is encoded as specified in 5.2.3 STF_Octet.
The following SEDRIS enumerated data types defined in 5.2.6 Enumerated data types of Part 1 of ISO/IEC 18023 are encoded as specified in 5.2.4.2 OCE8_Unsigned. For each SEDRIS enumerated data type, the mapping of enumerants to integer values is specified:
FALSE → 0
TRUE → 1
NORMAL → 0
PARENT_OVERRIDE → 1
RIGHT_UP → 0
RIGHT_DOWN → 1
DOWN_RIGHT → 2
DOWN_LEFT → 3
LEFT_UP → 4
LEFT_DOWN → 5
UP_RIGHT → 6
UP_LEFT → 7
NONE → 0
Z_BACK → 1
Z_FRONT → 2
OPEN_INTERVAL → 0
GE_LT_INTERVAL → 1
GT_LE_INTERVAL → 2
CLOSED_INTERVAL → 3
GT_SEMI_INTERVAL → 4
GE_SEMI_INTERVAL → 5
LT_SEMI_INTERVAL → 6
LE_SEMI_INTERVAL → 7
U → 0
V → 1
W → 2
ALL → 3
AXIS_REFERENCE_VECTOR → 4
COMPONENT → 0
ROOT → 1
ROOT_AND_COMPONENT → 2
JANUARY → 0
FEBRUARY → 1
MARCH → 2
APRIL → 3
MAY → 4
JUNE → 5
JULY → 6
AUGUST → 7
SEPTEMBER → 8
OCTOBER → 9
NOVEMBER → 10
DECEMBER → 11
UPPER_LEFT_FRONT → 0
UPPER_LEFT_BACK → 1
LOWER_LEFT_FRONT → 2
LOWER_LEFT_BACK → 3
UPPER_RIGHT_FRONT → 4
UPPER_RIGHT_BACK → 5
LOWER_RIGHT_FRONT → 6
LOWER_RIGHT_BACK → 7
RASTER → 0
CALLIGRAPHIC → 1
NONE → 0
ENVIRONMENT_ROOT → 1
MODELS → 2
ENVIRONMENT_ROOT_AND_MODELS → 3
LEFT_FRONT → 0
LEFT_BACK → 1
RIGHT_FRONT → 2
RIGHT_BACK → 3
CLOSEST_TO_ORM_CENTRE → 0
CLOSEST_TO_DSS → 1
FARTHEST_FROM_ORM_CENTRE → 2
MOST_DETAILED → 0
LEAST_DETAILED → 1
DEFAULT → 0
LAST → 1
NONE → 2
The following SEDRIS selection data types in 5.2.7 Selection data types of Part 1 of ISO/IEC 18023 that may be part of a transmittal are encoded as OCE8_Signed as specified in 5.2.4.3 OCE8_Signed:
Axis_Alignment
Camera_Projection_Type
Colour_Model
Data_Table_Data_Value_Type
DRM_Class
Element_Type_Code
Feature_Topology_Level
Font_Style
Functional_Association_Meaning_Type
Geometric_Centre_Code
Geometry_Topology_Level
Grid_Overlap_Operator
Hierarchy_Summary_Multiplicity_Code
Image_Component_Type
Image_Mapping_Method
Image_Projection_Type
Image_Signature
Image_Wrap
Index_Code
Interpolation_Type
Interval_Value_Type
LOD_Data_Type
Media_Format
Ordering_Reason
Pixel_Fill_Method
Predefined_Function
Property_Code_Type
Reference_Vector_Type
Season
Shading_Method
Single_Value_Type
Sound_Format
Spacing_Type
Spatial_Association_Meaning_Type
Spatial_Index_Spacing_Unit
Symbol_Format
Time_Configuration
Time_Data_Type
Time_Measurement_Type
Time_Of_Day
Time_Significance
Underline_Style
Union_Reason
Variable_Code
Volumetric_Shape
The SEDRIS set data types defined in 5.2.8 Set data types of Part 1 of ISO/IEC 18023 that may be used in a transmittal are each encoded as a 32-bit field with different set members mapped to individual bits as specified below. The bit layout for a set data type is specified in Figure 5.13. 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.
Figure 5.13 — Set data type formulation
FRONT_PRIMARY → Bit 0
FRONT_DISTANCE_BLEND → Bit 1
FRONT_IMAGE_BLEND → Bit 2
BACK_PRIMARY → Bit 3
BACK_DISTANCE_BLEND → Bit 4
BACK_IMAGE_BLEND → Bit 5
PRIMARY_LIGHT_RENDERING_BEHAVIOUR → Bit 6
SECONDARY_LIGHT_RENDERING_BEHAVIOUR → Bit 7
FRONT → Bit 0
BACK → Bit 1
SOLID → Bit 0
WIREFRAME → Bit 1
BACKDROP_GROUND → Bit 0
BACKDROP_SKY → Bit 1
CLUTTER_ENHANCED → Bit 2
COLLIDIBLE → Bit 3
CONCAVE → Bit 4
CUT → Bit 5
CUT_IMAGERY → Bit 6
DECAL → Bit 7
DO_NOT_DRAPE → Bit 8
ENABLE_FEATURE_SIZE_BLENDING → Bit 9
ENABLE_FRACTAL → Bit 10
ENABLE_POLYGON_RANGE_BLENDING → Bit 11
FOOTPRINT → Bit 12
HAT_TEST → Bit 13
INACTIVE → Bit 14
INVISIBLE → Bit 15
LASER_RANGE_FINDING → Bit 16
MOON_REFLECTION → Bit 17
OPAQUE_TOP → Bit 18
PROJECTILE_COLLIDIBLE → Bit 19
RAISED → Bit 20
REFLECTIVE → Bit 21
SHADOW → Bit 22
SUN_ILLUMINATED → Bit 23
TERRAIN
→ Bit 24
VISIBLE_FLOOR → Bit 25
VISIBLE_INTERIOR → Bit 26
VISIBLE_PERIMETER → Bit 27
WATERBODY_SURFACE → Bit 28
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
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 the second index for a value of the fist index are represented before the second element of the next value of the first index.
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 fields in the DRM object or elsewhere. In this case, the length specified elsewhere shall be used and only the array content shall be encoded.
Variable length array data types are specified as shown in Figure 5.14:
Figure 5.14 Variable array formulation
This indicates that the first item of the array encoding is an element of type “Length_Field_Data_Type” for each array dimension followed by “length_field_name” occurrences of an element of type “Content_Data_Type”. Two-dimensional arrays are encoded in row order; i.e., all elements of the first row are encoded before any elements of the next row.
All elements of the array are packed; there are no padding elements.
The following are the SEDRIS array data types specifically defined in 5.3.2 Array data types of Part 1 of ISO/IEC 18023 that may be encoded in an STF-encoded transmittal:
Matrix_3x3 is encoded as nine
STF_Long_Float elements.
Matrix_4x4 is encoded as sixteen
STF_Long_Float elements.
Since these 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.
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 by the encoding of the first field that corresponds with the definition of the record. When the variable field of the record is encountered, only the variant corresponding to the value of the discriminant shall be encoded. After the variable field is encoded, any additional non-variant fields are encoded.
All elements of the record shall be packed; there shall be no padding elements.
The following define the specific encoding of the SEDRIS record data types defined in 5.3.3 Record data types of Part 1 of ISO/IEC 18023 that may exist in a STF-encoded transmittal:
delivery_point : String[delivery_point_count : Short_Integer_Positive] |
city : String |
administrative_area : String |
postal_code : String |
country : Character[3] |
email_address : String[email_address_count : Short_Integer_Positive] |
beginning_frame : Short_Integer_Unsigned |
ending_frame : Short_Integer_Unsigned |
cyan : Long_Float |
magenta : Long_Float |
yellow : Long_Float |
phone : Telephone_Information |
address : Address |
online_resource : CI_OnlineResource |
hours_of_service : String |
contact_instructions : String |
interval_type : Interval_Type |
For interval_type = OPEN_INTERVAL:
open_interval : EDCS_Count_Interval |
For interval_type = GE_LT_INTERVAL:
ge_lt_interval : EDCS_Count_Interval |
For interval_type = GT_LE_INTERVAL:
gt_le_interval : EDCS_Count_Interval |
For interval_type = CLOSED_INTERVAL:
closed_interval : EDCS_Count_Interval |
For interval_type = GT_SEMI_INTERVAL:
gt_semi_interval : EDCS_Count |
For interval_type = GE_SEMI_INTERVAL:
ge_semi_interval : EDCS_Count |
For interval_type = LT_SEMI_INTERVAL:
lt_semi_interval : EDCS_Count |
For interval_type = LE_SEMI_INTERVAL:
le_semi_interval : EDCS_Count |
name_of_measure : String |
measure_identification : String |
measure_description : String |
evaluation_method_type : String |
evaluation_method_description : String |
evaluation_procedure : String |
data_time : String |
result : String |
value_type : Data_Table_Data_Value_Type |
table_property_description_index : Integer_Positive |
data_count : Integer_Positive |
For value_type = SINGLE_LONG_FLOAT:
single_long_float_values : EDCS_Long_Float[data_count] |
For value_type = LONG_FLOAT:
long_float_values : Long_Float_Value[data_count] |
For value_type = SINGLE_INTEGER:
single_integer_values : EDCS_Integer[data_count] |
For value_type = INTEGER:
integer_values : EDCS_Integer_Value[data_count] |
For value_type = SINGLE_COUNT:
single_count_values : EDCS_Count[data_count] |
For value_type = COUNT:
count_values : EDCS_Count_Value[data_count] |
For value_type = INDEX:
index_values : EDCS_Count[data_count] |
For value_type = STRING:
string_values : EDCS_String[data_count] |
For value_type = CONSTRAINED_STRING:
constrained_string_values : EDCS_String[data_count] |
For value_type = KEY:
key_values : EDCS_String[data_count] |
For value_type = ENUMERATION:
enumeration_values : EDCS_Integer[data_count] |
For value_type = BOOLEAN:
boolean_values : EDCS_Boolean[data_count] |
For value_type = INDEX_CODE:
index_code_values : Integer_Unsigned[data_count] |
axes_bounds : Index_Range[axes_count : Short_Integer_Unsigned] |
code_type : Element_Type_Code |
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 |
hue : Long_Float |
saturation : Long_Float |
value : Long_Float |
data : Octet[data_count : Integer_Unsigned] |
size_horizontal : Integer_Positive |
size_vertical : Integer_Positive |
size_z : Integer_Positive |
horizontal : Short_Integer_Unsigned |
vertical : Short_Integer_Unsigned |
z : Short_Integer_Unsigned |
first_index : Integer_Unsigned |
last_index : Integer_Unsigned |
interval_type : Interval_Type |
For interval_type = OPEN_INTERVAL:
open_interval : EDCS_Integer_Interval |
For interval_type = GE_LT_INTERVAL:
ge_lt_interval : EDCS_Integer_Interval |
For interval_type = GT_LE_INTERVAL:
gt_le_interval : EDCS_Integer_Interval |
For interval_type = CLOSED_INTERVAL:
closed_interval : EDCS_Integer_Interval |
For interval_type = GT_SEMI_INTERVAL:
gt_semi_interval : EDCS_Integer |
For interval_type = GE_SEMI_INTERVAL:
ge_semi_interval : EDCS_Integer |
For interval_type = LT_SEMI_INTERVAL:
lt_semi_interval : EDCS_Integer |
For interval_type = LE_SEMI_INTERVAL:
le_semi_interval : EDCS_Integer |
value_type : Interval_Value_Type |
For value_type = REAL:
real_value : Long_FLoat_Interval_Value |
For value_type = INTEGER:
integer_value : Integer_Interval_Value |
For value_type = COUNT:
count_value : Count_Interval_Value |
language : Character[2] |
country : Character[3] |
interval_type : Interval_Type |
For interval_type = OPEN_INTERVAL:
open_interval : EDCS_Long_Float_Interval |
For interval_type = GE_LT_INTERVAL:
ge_lt_interval : EDCS_Long_Float_Interval |
For interval_type = GT_LE_INTERVAL:
gt_le_interval : EDCS_Long_Float_Interval |
For interval_type = CLOSED_INTERVAL:
closed_interval : EDCS_Long_Float_Interval |
For interval_type = GT_SEMI_INTERVAL:
gt_semi_interval : EDCS_Long_Float |
For interval_type = GE_SEMI_INTERVAL:
ge_semi_interval : EDCS_Long_Float |
For interval_type = LT_SEMI_INTERVAL:
lt_semi_interval : EDCS_Long_Float |
For interval_type = LE_SEMI_INTERVAL:
le_semi_interval : EDCS_Long_Float |
numeric_value_type : EDCS_Numeric_Value_Type |
For numeric_value_type = SINGLE_VALUE:
single_value : EDCS_Long_Float |
For numeric_value_type = OPEN_INTERVAL:
open_interval : EDCS_Long_Float_Interval |
For numeric_value_type = GE_LT_INTERVAL:
ge_lt_interval : EDCS_Long_Float_Interval |
For numeric_value_type = GT_LE_INTERVAL:
gt_le_interval : EDCS_Long_Float_Interval |
For numeric_value_type = CLOSED_INTERVAL:
closed_interval : EDCS_Long_Float_Interval |
For numeric_value_type = GT_SEMI_INTERVAL:
gt_semi_interval : EDCS_Long_Float |
For numeric_value_type = GE_SEMI_INTERVAL:
ge_semi_interval : EDCS_Long_Float |
For numeric_value_type = LT_SEMI_INTERVAL:
lt_semi_interval : EDCS_Long_Float |
For numeric_value_type = LE_SEMI_INTERVAL:
le_semi_interval : EDCS_Long_Float |
code_type : Property_Code_Type |
For code_type = ATTRIBUTE:
attribute : EDCS_Attribute_Code |
For code_type = VARIABLE:
variable : Variable_Code |
red : Long_Float |
green : Long_Float |
blue : Long_Float |
counterclockwise_limit : Long_Float |
clockwise_limit : Long_Float |
value_type : Single_Value_Type |
For type_of_data = LONG_FLOAT:
long_float_value : EDCS_Long_Float |
For type_of_data = INTEGER:
integer_value : EDCS_Integer |
For type_of_data = COUNT:
count_value : EDCS_Count |
For type_of_data = INDEX:
index_value : EDCS_Count |
For type_of_data = STRING:
string_value : EDCS_String |
For type_of_data = CONSTRAINED_STRING:
constrained_string_value : EDCS_String |
For type_of_data = KEY:
key_value : EDCS_String |
For type_of_data = ENUMERATION:
enumeration_value : EDCS_Integer |
For type_of_data = BOOLEAN:
boolean_value : EDCS_Boolean |
angular_unit : EDCS_Unit_Code |
linear_unit : EDCS_Unit_Code |
linear_scale : EDCS_Unit_Scale_Code |
use_dss_code : Boolean |
dss_code : SRM_DSS_Code |
srf_parameters_info : SRM_SRF_Parameters_Info |
locale : Locale |
characters : Character[length : Integer_Unsigned] |
voice : String[voice_count : Short_Integer_Unsigned] |
facsimile : String[facsimile_count : Short_Integer_Unsigned] |
tdd_tty : String[tdd_tty_count : Short_Integer_Unsigned] |
font_family : String[32] |
font_style : Font_Style |
font_size : Float |
underline_style : Underline_Style |
day_of_year : Short_Integer_Unsigned |
month : Month |
month : Month |
day : Short_Integer_Positive |
hour : Byte_Unsigned |
month : Month |
day : Short_Integer_Positive |
hour : Byte_Unsigned |
minutes : Byte_Unsigned |
month : Month |
day : Short_Integer_Positive |
hour : Byte_Unsigned |
minutes : Byte_Unsigned |
seconds : Long_Float |
time_configuration : Time_Configuration |
For time_configuration = DATE_YMD_AND_TIME_HMS:
ymd_hms : Time_YMD_HMS_Value |
For time_configuration = DATE_YMD_AND_TIME_HM:
ymd_hm : Time_YMD_HM_Value |
For time_configuration = DATE_YMD_AND_TIME_H:
ymd_h : Time_YMD_H_Value |
For time_configuration = DATE_YMD:
ymd : Time_YMD_Value |
For time_configuration = DATE_YD_AND_TIME_HMS:
yd_hms : Time_YD_HMS_Value |
For time_configuration = DATE_YD_AND_TIME_HM:
yd_hm : Time_YD_HM_Value |
For time_configuration = DATE_YD_AND_TIME_H:
yd_h : Time_YD_H_Value |
For time_configuration = DATE_YD:
yd : Time_YD_Value |
For time_configuration = DATE_MD_AND_TIME_HMS:
md_hms : Time_MD_HMS_Value |
For time_configuration = DATE_MD_AND_TIME_HM:
md_hm : Time_MD_HM_Value |
For time_configuration = DATE_MD_AND_TIME_H:
md_h : Time_MD_H_Value |
For time_configuration = DATE_Y:
y : Time_Y_Value |
For time_configuration = DATE_M:
m : Time_M_Value |
For time_configuration = DAY_OF_YEAR:
day_of_year : Time_Day_Of_Year_Value |
year : Integer |
year : Integer |
day_of_year : Short_Integer_Unsigned |
year : Integer |
day_of_year : Short_Integer_Unsigned |
hour : Byte_Unsigned |
year : Integer |
day_of_year : Short_Integer_Unsigned |
hour : Byte_Unsigned |
minutes : Byte_Unsigned |
year : Integer |
day_of_year : Short_Integer_Unsigned |
hour : Byte_Unsigned |
minutes : Byte_Unsigned |
seconds : Long_Float |
year : Integer |
month : Month |
day : Short_Integer_Positive |
year : Integer |
month : Month |
day : Short_Integer_Positive |
hour : Byte_Unsigned |
year : Integer |
month : Month |
day : Short_Integer_Positive |
hour : Byte_Unsigned |
minutes : Byte_Unsigned |
year : Integer |
month : Month |
day : Short_Integer_Positive |
hour : Byte_Unsigned |
minutes : Byte_Unsigned |
seconds : Long_Float |
characters : Character[length : Integer_Unsigned] |
characters : Character[length : Integer_Unsigned] |
SEDRIS data types used by the SEDRIS API are not needed to represent a transmittal and, hence, shall not be encoded. This includes all SEDRIS private and function data types.
The data types specified in ISO/IEC 18025 are termed EDCS data types. The EDCS data types are represented explicitly as required by ISO/IEC 18025 or are mapped to the encoding specific data types specified in this part of ISO/IEC 18023. Only the EDCS data types specified in 5.6.2 Data types from ISO/IEC 18025 of Part 1 of ISO/IEC 18023 that may exist as part of a transmittal or data types that expand the definition of those specified in Part 1 of ISO/IEC 18023 that are specified in ISO/IEC 18025 are encoded. Within this part of ISO/IEC 18023, all data types emanating from ISO/IEC 18025 will have their names prefixed by “EDCS_”.
The following integer data type specified in 5.6.2 Data types from ISO/IEC 18025 of Part 1 of ISO/IEC 18023 shall be encoded as specified in 5.2.4.2 OCE8_Unsigned:
EDCS_Count
The following integer data types specified in 5.6.2 Data types from ISO/IEC 18025 of Part 1 of ISO/IEC 18023 shall be encoded as specified in 5.2.4.3 OCE8_Signed:
EDCS_Integer
The EDCS_Long_Float data type specified in 5.6.2 Data types from ISO/IEC 18025 of Part 1 of ISO/IEC 18023 shall be encoded as STF_Long_Float as specified in 5.2.5.3 STF_Long_Float.
The following EDCS enumerated data types specified in 5.6.2 Data types from ISO/IEC 18025 of Part 1 of ISO/IEC 18023 shall be encoded as OCE8_Unsigned as specified in 5.2.4.2 OCE8_Unsigned. For each EDCS enumerated data type, the mapping of enumerants to integer values is specified:
FALSE → 0
TRUE → 1
NULL → 0
The following EDCS selection data types specified in 5.6.2 Data types from ISO/IEC 18025 of Part 1 of ISO/IEC 18023 shall be encoded as specified in 5.2.4.3 OCE8_Signed:
EDCS_Attribute_Code
EDCS_Attribute_Value_Type
EDCS_Classification_Code
EDCS_Numeric_Value_Type
EDCS_Unit_Code
EDCS_Unit_Scale_Code
EDCS_Value_Characteristic_Code
EDCS 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 by the encoding of the first field that corresponds with the definition of the record. When the variable field of the record is encountered, only the variant corresponding to the value of the discriminant shall be encoded. After the variable field is encoded, any additional non-variant fields are encoded.
All elements of the record shall be packed; there shall be no padding elements.
The following define the specific encoding of the EDCS record data types defined in 5.6.2 Data types from ISO/IEC 18025 of Part 1 of ISO/IEC 18023 that may exist in an STF-encoded transmittal:
attribute_value_type : EDCS_Attribute_Value_Type |
For attribute_value_type = REAL:
real_value : EDCS_Long_Float_Value |
For attribute_value_type = INTEGER:
integer_value : EDCS_Integer_Value |
For attribute_value_type = COUNT:
count_value : EDCS_Count_Value |
For attribute_value_type = INDEX:
index_value : EDCS_Integer |
For attribute_value_type = STRING:
string_value : EDCS_String |
For attribute_value_type = CONSTRAINTED_STRING:
constrained_string_value : EDCS_String |
For attribute_value_type = KEY:
key_value : EDCS_String |
For attribute_value_type = ENUMERATION:
enumeration_value : EDCS_Integer |
For attribute_value_type = BOOLEAN:
boolean_value : EDCS_Boolean |
For attribute_value_type = NULL:
null_value : EDCS_Null |
lower_bound : EDCS_Count |
upper_bound : EDCS_Count |
numeric_value_type : EDCS_Numeric_Value_Type |
For numeric_value_type = SINGLE_VALUE:
single_value : EDCS_Count |
For numeric_value_type = OPEN_INTERVAL:
open_interval : EDCS_Count_Interval |
For numeric_value_type = GE_LT_INTERVAL:
ge_lt_interval : EDCS_Count_Interval |
For numeric_value_type = GT_LE_INTERVAL:
gt_le_interval: EDCS_Count_Interval |
For numeric_value_type = closed_interval:
closed_interval : EDCS_Count_Interval |
For numeric_value_type = GT_SEMI_INTERVAL:
gt_semi_interval : EDCS_Count |
For numeric_value_type = GE_SEMI_INTERVAL:
ge_semi_interval : EDCS_Count |
For numeric_value_type = LT_SEMI_INTERVAL:
lt_semi_interval : EDCS_Count |
For numeric_value_type = LE_SEMI_INTERVAL:
le_semi_interval : EDCS_Count |
lower_bound : EDCS_Integer |
upper_bound : EDCS_Integer |
numeric_value_type : EDCS_Numeric_Value_Type |
For numeric_value_type = SINGLE_VALUE:
single_value : EDCS_Integer |
For numeric_value_type = OPEN_INTERVAL:
open_interval : EDCS_Integer_Interval |
For numeric_value_type = GE_LT_INTERVAL:
ge_lt_interval : EDCS_Integer_Interval |
For numeric_value_type = GT_LE_INTERVAL:
gt_le_interval: EDCS_Integer_Interval |
For numeric_value_type = closed_interval:
closed_interval : EDCS_Integer_Interval |
For numeric_value_type = GT_SEMI_INTERVAL:
gt_semi_interval : EDCS_Integer |
For numeric_value_type = GE_SEMI_INTERVAL:
ge_semi_interval : EDCS_Integer |
For numeric_value_type = LT_SEMI_INTERVAL:
lt_semi_interval : EDCS_Integer |
For numeric_value_type = LE_SEMI_INTERVAL:
le_semi_interval : EDCS_Integer |
language : Character[2] |
country : Character[3] |
numeric_value_type : EDCS_Numeric_Value_Type |
For numeric_value_type = SINGLE_VALUE:
single_value : EDCS_Long_Float |
For numeric_value_type = OPEN_INTERVAL:
open_interval : EDCS_Long_Float_Interval |
For numeric_value_type = GE_LT_INTERVAL:
ge_lt_interval : EDCS_Long_Float_Interval |
For numeric_value_type = GT_LE_INTERVAL:
gt_le_interval: EDCS_Long_Float_Interval |
For numeric_value_type = closed_interval:
closed_interval : EDCS_Long_Float_Interval |
For numeric_value_type = GT_SEMI_INTERVAL:
gt_semi_interval : EDCS_Long_Float |
For numeric_value_type = GE_SEMI_INTERVAL:
ge_semi_interval : EDCS_Long_Float |
For numeric_value_type = LT_SEMI_INTERVAL:
lt_semi_interval : EDCS_Long_Float |
For numeric_value_type = LE_SEMI_INTERVAL:
le_semi_interval : EDCS_Long_Float |
locale : Locale |
characters : Character[length : EDCS_Count] |
The data types specified in ISO/IEC 18026 are termed SRM data types. The SRM data types are represented explicitly as required by ISO/IEC 18026 or are mapped to the encoding specific data types specified in this part of ISO/IEC 18023. Only the SRM data types specified in 5.6.3 Data types from ISO/IEC 18026 of Part 1 of ISO/IEC 18023 that may exist as part of a transmittal or data types that expand the definition of those specified in Part 1 of ISO/IEC 18023 that are specified in ISO/IEC 18026 are encoded. Within this part of ISO/IEC 18023, all data types emanating from ISO/IEC 18026 will have their names prefixed by “SRM_”.
The following integer data types specified in ISO/IEC 18026 shall be encoded as specified in 5.2.4.2 OCE8_Unsigned:
SRM_Integer_Positive
SRM_Integer_Unsigned
SRM_Short_Integer_Positive
SRM_Short_Integer_Unsigned
The following integer data types specified in ISO/IEC 18026 shall be encoded as specified in 5.2.4.3 OCE8_Signed:
SRM_GTRS_GCS_Code
SRM_Integer
SRM_Mars_TM_Body_Code
SRM_Mars_TM_Pole_Code
SRM_Short_Integer
SRM_SRFS_Member_Code
The following integer data types specified in ISO/IEC 18026 shall be encoded as 8-bit octets:
SRM_Byte
SRM_Byte_Positive
SRM_Byte_Unsigned
The SRM_Long_Float data type specified in ISO/IEC 18026 shall be encoded as STF_Long_Float as specified in 5.2.5.3 STF_Long_Float.
The following SRM enumerated data types specified in ISO/IEC 18026 shall be encoded as OCE8_Unsigned as specified in 5.2.4.2 OCE8_Unsigned. For each SRM enumerated data type, the mapping of enumerants to integer values is specified:
POSITIVE_PRIMARY_AXIS → 0
POSITIVE_SECONDARY_AXIS → 1
POSITIVE_TERTIARY_AXIS → 2
NEGATIVE_PRIMARY_AXIS → 3
NEGATIVE_SECONDARY_AXIS → 4
NEGATIVE_TERTIARY_AXIS → 5
FALSE → 0
TRUE → 1
NORTH → 0
SOUTH → 1
The following SRM selection data types of ISO/IEC 18026 shall be encoded as specified in 5.2.4.3 OCE8_Signed:
SRM_DSS_Code
SRM_ORM_Code
SRM_RT_Code
SRM_Spatial_Coordinate_Code
SRM_SRF_Code
SRM_SRF_Parameters_Info_Code
SRM_SRFS_Code
SRM_SRFSM_Alabama_SPCS_Code
SRM_SRFSM_GTRS_Global_Coordinate_System_Code
SRM_SRFSM_Japan_Rectangular_Plane_CS_Code
SRM_SRFSM_Lambert_NTF_Code
SRM_SRFSM_Universal_Polar_Stereographic_Code
SRM_SRFSM_Universal_Transvers_Mercator_Code
SRM_SRFSM_Wisconsin_SPCS_Code
SRM_SRFT_Code
SRM array data types shall be encoded as a sequence of elements of the specified data type.
SRM_Vector_3D is encoded as three SRM_Long_Float elements.
SRM 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. The encoding of the discriminant is followed immediately by any additional non-variant elements. When the variable field of the record is encountered, only the variant corresponding to the value of the discriminant shall be encoded. Variants that have a data type specified as "empty" shall have no data encoded for that variant.
All elements of the record shall be packed; there shall be no padding elements.
The following define the specific encoding of the SRM record data types defined in ISO/IEC 18026 that may exist in an STF-encoded transmittal:
longitude : SRM_Long_Float |
latitude : SRM_Long_Float |
ellipsoidal_height : SRM_Long_Float |
longitude : SRM_Long_Float |
latitude : SRM_Long_Float |
spatial_coord_code : SRM_Spatial_Coordinate_Code |
For spatial_coord_code = CC_3D:
cc_3d : SRM_Euclidean_3D_Coordinate |
For spatial_coord_code = CD_3D:
cd_3d : SRM_CD_3D_Coordinate |
For spatial_coord_code = CD_SURFACE:
cd_surface : SRM_CD_Surface_Coordinate |
For spatial_coord_code = CM_3D:
cm_3d : SRM_Spherical_3D_Coordinate |
For spatial_coord_code = EC_AUGMENTED_3D:
ec_aug_3d : SRM_Map_Projection_3D_Coordinate |
For spatial_coord_code = EC_SURFACE:
ec_surface_3d : SRM_Map_Projection_Surface_Coordinate |
For spatial_coord_code = EI_3D:
ei_3d : SRM_Equatorial_Inertial_3D_Coordinate |
For spatial_coord_code = HAEC_3D:
haec_3d : SRM_Spherical_3D_Coordinate |
For spatial_coord_code = HEEC_3D:
heec_3d : SRM_Spherical_3D_Coordinate |
For spatial_coord_code = HEEQ_3D:
heeq_3d : SRM_Spherical_3D_Coordinate |
For spatial_coord_code = LCC_AUGMENTED_3D:
lcc_aug_3d : SRM_Map_Projection_3D_Coordinate |
For spatial_coord_code = LCC_SURFACE:
lcc_surface : SRM_Map_Projection_Surface_Coordinate |
For spatial_coord_code = LCE_3D:
lce_3d : SRM_Euclidean_3D_Coordinate |
For spatial_coord_code = LSA_2D:
lsa_2d : SRM_LSA_2D_Coordinate |
For spatial_coord_code = LSP_2D:
lsp_2d : SRM_LSP_2D_Coordinate |
For spatial_coord_code = LSR_2D:
lsr_2d : SRM_Euclidean_2D_Coordinate |
For spatial_coord_code = LSR_3D:
lsr_3d : SRM_Euclidean_3D_Coordinate |
For spatial_coord_code = LTSAS_3D:
ltsas_3d : SRM_LTSAS_3D_Coordinate |
For spatial_coord_code = LTSAS_SURFACE:
ltsas_surface : SRM_LTSAS_Surface_Coordinate |
For spatial_coord_code = LTSC_3D:
ltsc_3d : SRM_LTSC_3D_Coordinate |
For spatial_coord_code = LTSC_SURFACE:
ltsc_surface : SRM_LTSC_Surface_Coordinate |
For spatial_coord_code = LTSE_3D:
ltse_3d : SRM_LTSE_3D_Coordinate |
For spatial_coord_code = LTSE_SURFACE:
ltse_surface : SRM_LTSE_Surface_Coordinate |
For spatial_coord_code = MERCATOR_AUGMENTED_3D:
m_aug_3d : SRM_Map_Projection_3D_Coordinate |
For spatial_coord_code = MERCATOR_SURFACE:
m_surface : SRM_Map_Projection_Surface_Coordinate |
For spatial_coord_code = OMS_AUGMENTED_3D:
oms_aug_3d : SRM_Map_Projection_3D_Coordinate |
For spatial_coord_code = OMS_SURFACE:
oms_surface : SRM_Map_Projection_Surface_Coordinate |
For spatial_coord_code = PD_3D:
pd_3d : SRM_CD_3D_Coordinate |
For spatial_coord_code = PD_SURFACE:
pd_surface : SRM_CD_Surface_Coordinate |
For spatial_coord_code = PS_AUGMENTED_3D:
ps_aug_3d : SRM_Map_Projection_3D_Coordinate |
For spatial_coord_code = PS_SURFACE:
ps_surface : SRM_Map_Projection_Surface_Coordinate |
For spatial_coord_code = SEC_3D:
sec_3d : SRM_Spherical_3D_Coordinate |
For spatial_coord_code = SEQ_3D:
seq_3d : SRM_Spherical_3D_Coordinate |
For spatial_coord_code = SMD_3D:
smd_3d : SRM_Spherical_3D_Coordinate |
For spatial_coord_code = SME_3D:
sme_3d : SRM_Spherical_3D_Coordinate |
For spatial_coord_code = TM_AUGMENTED_3D:
tm_aug_3d : SRM_Map_Projection_3D_Coordinate |
For spatial_coord_code = TM_SURFACE:
tm_surface : SRM_Map_Projection_Surface_Coordinate |
origin_longitude : SRM_Long_Float |
central_scale : SRM_Long_Float |
false_easting : SRM_Long_Float |
false_northing : SRM_Long_Float |
right_ascension : SRM_Long_Float |
declination : SRM_Long_Float |
radius : SRM_Long_Float |
u : SRM_Long_Float |
v : SRM_Long_Float |
u : SRM_Long_Float |
v : SRM_Long_Float |
w : SRM_Long_Float |
origin_longitude : SRM_Long_Float |
origin_latitude : SRM_Long_Float |
latitude1 : SRM_Long_Float |
latitude2 : SRM_Long_Float |
false_easting : SRM_Long_Float |
false_northing : SRM_Long_Float |
lococentre : SRM_Vector_3D |
primary_axis : SRM_Vector_3D |
secondary_axis : SRM_Vector_3D |
geodetic_longitude : SRM_Long_Float |
geodetic_latitude : SRM_Long_Float |
azimuth : SRM_Long_Float |
height_offset : SRM_Long_Float |
azimuth : SRM_Long_Float |
radius : SRM_Long_Float |
angle : SRM_Long_Float |
radius : SRM_Long_Float |
forward_direction : SRM_Axis_Direction |
forward_direction : SRM_Axis_Direction |
up_direction : SRM_Axis_Direction |
azimuth : SRM_Long_Float |
angle : SRM_Long_Float |
radius : SRM_Long_Float |
azimuth : SRM_Long_Float |
angle : SRM_Long_Float |
angle : SRM_Long_Float |
radius : SRM_Long_Float |
height : SRM_Long_Float |
angle : SRM_Long_Float |
radius : SRM_Long_Float |
x : SRM_Long_Float |
y : SRM_Long_Float |
height : SRM_Long_Float |
geodetic_longitude : SRM_Long_Float |
geodetic_latitude : SRM_Long_Float |
azimuth : SRM_Long_Float |
x_false_origin : SRM_Long_Float |
y_false_origin : SRM_Long_Float |
height_offset : SRM_Long_Float |
x : SRM_Long_Float |
y : SRM_Long_Float |
easting : SRM_Long_Float |
northing : SRM_Long_Float |
ellipsoidal_height : SRM_Long_Float |
easting : SRM_Long_Float |
northing : SRM_Long_Float |
origin_longitude : SRM_Long_Float |
central_scale : SRM_Long_Float |
false_easting : SRM_Long_Float |
false_northing : SRM_Long_Float |
longitude1 : SRM_Long_Float |
latitude1 : SRM_Long_Float |
longitude2 : SRM_Long_Float |
latitude2 : SRM_Long_Float |
central_scale : SRM_Long_Float |
false_easting : SRM_Long_Float |
false_northing : SRM_Long_Float |
polar_aspect : SRM_Polar_Aspect |
origin_longitude : SRM_Long_Float |
central_scale : SRM_Long_Float |
false_easting : SRM_Long_Float |
false_northing : SRM_Long_Float |
longitude : SRM_Long_Float |
latitude : SRM_Long_Float |
radius : SRM_Long_Float |
srf_parameters_info_code : SRM_SRF_Parameters_Info_Code |
rt_code : SRM_RT_Code |
For srf_parameters_info_code = TEMPLATE:
srf_template : SRM_SRFT_Parameters |
For srf_parameters_info_code = SET:
srf_set : SRM_SRFS_Info |
For srf_parameters_info_code = INSTANCE:
srf_instance : SRM_SRF_Code |
srfs_code : SRM_SRFS_Code |
For srfs_code= SRFS_UNSPECIFIED:
SRFSM_unspecified : SRM_Integer |
For srfs_code= SRFS_ALABAMA_SPCS:
SRFSM_alabama_spcs : SRM_SRFSM_Alabama_SPCS_Code |
For srfs_code= GTRS_GLOBAL_COORDINATE_SYSTEM:
SRFSM_gtrs_global_coordinate_system : SRM_SRFSM_GTRS_Global_Coordinate_System_Code |
For srfs_code= SRFS_JAPAN_RECTANGULAR_PLANE_CS:
SRFSM_japan_rectangular_plane_cs : SRM_SRFSM_Japan_Rectangular_Plane_CS_Code |
For srfs_code= SRFS_LAMBERT_NTF:
SRFSM_lambert_ntf : SRM_SRFSM_Lambert_NTF_Code |
For srfs_code= SRFS_UNIVERSAL_POLAR_STEREOGRAPHIC:
SRFSM_universal_polar_stereographic : SRM_SRFSM_Universal_Polar_Stereographic_Code |
For srfs_code= SRFS_UNIVERSAL_TRANSVERSE_MERCATOR:
SRFSM_universal_transverse_mercator : SRM_SRFSM_Universal_Transverse_Mercator_Code |
For srfs_code= SRFS_WISCONSIN_SPCS:
SRFSM_wisconsin_spcs : SRM_SRFSM_Wisconsin_SPCS_Code |
orm_code : SRM_ORM_Code |
srfs_code_info : SRM_SRFS_Code_Info |
template_code : SRM_SRFT_Code |
orm_code : SRM_ORM_Code |
For template_code = CELESTIOCENTRIC:
cc_srf_parameters : empty |
For template_code = LOCAL_SPACE_RECTANGULAR_3D:
lsr_3d_srf_parameters : SRM_LSR_3D_SRF_Parameters |
For template_code = CELESTIODETIC:
cd_srf_parameters : empty |
For template_code = PLANETODETIC:
pd_srf_parameters : empty |
For template_code = LOCAL_TANGENT_SPACE_EUCLIDEAN:
ltse_srf_parameters : SRM_LTSE_Parameters |
For template_code = LOCAL_TANGENT_SPACE_AZIMUTHAL_SPHERICAL:
ltsas_srf_parameters : SRM_Local_Tangent_Parameters |
For template_code = LOCAL_TANGENT_SPACE_CYLINDRICAL:
ltsc_srf_parameters : SRM_Local_Tangent_Parameters |
For template_code = LOCOCENTRIC_EUCLIDEAN_3D:
lce_3d_srf_parameters : SRM_LCE_3D_Parameters |
For template_code = CELESTIOMAGNETIC:
cm_srf_parameters : empty |
For template_code = EQUATORIAL_INERTIAL:
ei_srf_parameters : empty |
For template_code = SOLAR_ECLIPTIC:
sec_srf_parameters : empty |
For template_code = SOLAR_EQUATORIAL:
seq_srf_parameters : empty |
For template_code = SOLAR_MAGNETIC_ECLIPTIC:
sme_srf_parameters : empty |
For template_code = SOLAR_MAGNETIC_DIPOLE:
smd_srf_parameters : empty |
For template_code = HELIOSPHERIC_ARIES_ECLIPTIC:
haec_srf_parameters : empty |
For template_code = HELIOSPHERIC_EARTH_ECLIPTIC:
heec_srf_parameters : empty |
For template_code = HELIOSPHERIC_EARTH_EQUATORIAL
heeq_srf_parameters : empty |
For template_code = MERCATOR:
m_srf_parameters : SRM_M_Parameters |
For template_code = OBLIQUE_MERCATOR:
oms_srf_parameters : SRM_Oblique_Mercator_Parameters |
For template_code = TRANSVERSE_MERCATOR:
tm_srf_parameters : SRM_TM_Parameters |
For template_code = LAMBERT_CONFORMAL_CONIC:
lcc_srf_parameters : SRM_LCC_Parameters |
For template_code = POLAR_STEROGRAPHIC:
ps_srf_parameters : SRM_PS_Parameters |
For template_code = EQUIDISTANT_CYLINDRICAL:
ec_srf_parameters : SRM_EC_Parameters |
For template_code = LOCAL_SPACE_RECTANGULAR_2D:
lsr_2d_srf_parameters : SRM_LSR_2D_Parameters |
For template_code = LOCAL_SPACE_AZIMUTHAL:
lsa_srf_parameters : empty |
For template_code = LOCAL_SPACE_POLAR:
lsp_srf_parameters : empty |
origin_longitude : SRM_Long_Float |
origin_latitude : SRM_Long_Float |
central_scale : SRM_Long_Float |
false_easting : SRM_Long_Float |
false_northing : SRM_Long_Float |
Part 1 of ISO/IEC 18023 specifies data types from ISO 19115 that are used to specify values that may be stored in a transmittal. These data types are of two types: selection data types and record data types. The names of the data types are as specified in ISO 19115.
The following selection data types specified in 5.6.4 Data types from ISO/IEC 19115 of Part 1 of ISO/IEC 18023 or as needed to populate fields of record data types (see 5.6.3 Record data types from ISO 19115) shall be encoded as specified in 5.2.4.3 OCE8_Signed:
CI_OnLineFunctionCode
CI_RoleCode
MD_Classification_Code
MD_KeywordTypeCode
MD_RestrictionCode
Record data types as specified in 5.6.4 Data types from ISO 19115 of Part 1 of ISO/IEC 18023 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.
All elements of the record shall be packed; there shall be no padding elements.
The following defines the specific encoding of the record data type defined in ISO 19115 that may exist in an STF-encoded transmittal:
linkage : URL |
protocol : String |
applicationProfile : String |
name : String |
function : CI_OnlineFunctionCode |
http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_IEC_18023-3_Ed1.html