MetadataSchema
是CesiumJS
中一种元数据方案的定义方式,用于描述如何使用元数据结构来组织数据并以一致的方式共享数据。
class MetadataSchema {
constructor(options);
clone(): MetadataSchema;
equals(other: MetadataSchema): boolean;
getProperty(name: string): MetadataProperty;
getPropertiesBySemantic(semantic: string): MetadataProperty[];
getSemantics(): string[];
getAllProperties(): MetadataProperty[];
toJson(): object;
static fromJson(json: object): MetadataSchema;
}
new MetadataSchema(options)
options
:一个包含以下属性的对象。
id
(可选):一个字符串,该方案的唯一标识符,如果未指定,则 自动生成。
dataClass
(必需):一个字符串,数据类别的名称。例如,"aircraft"
或"imagery"
。
properties
(可选):元数据属性对象的数组。
const aircraftSchema = new MetadataSchema({
dataClass: 'aircraft',
properties: [
{
name: 'F22',
type: 'string',
description: 'The F-22 Raptor is a single-seat, twin-engine, all-weather stealth tactical fighter aircraft.',
examples: ['F22 Raptor', 'F-22', 'F22'],
semantic: 'aircraft.name'
},
{
name: 'Crew',
type: 'number',
description: 'The number of crew members on board the aircraft.',
examples: [1, 2],
semantic: 'aircraft.crew'
}
]
});
clone(): MetadataSchema
返回一个新的MetadataSchema
对象,其中包含与当前对象相同的属性。
equals(other: MetadataSchema): boolean
比较两个MetadataSchema
对象是否相等。相等表示:
id
dataClass
getProperty(name: string): MetadataProperty
返回具有给定名称的属性对象。如果未找到,则返回undefined
。
getPropertiesBySemantic(semantic: string): MetadataProperty[]
返回具有给定语义的属性对象数组。如果未找到,则返回一个空数组。
getSemantics(): string[]
返回包含此方案中所有属性的唯一语义的字符串数组。
getAllProperties(): MetadataProperty[]
返回此方案的所有属性数组。
toJson(): object
将MetadataSchema
对象序列化为JSON对象。
static fromJson(json: object): MetadataSchema
将JSON对象反序列化为MetadataSchema
对象。
const aircraftSchema = new MetadataSchema({
dataClass: 'aircraft',
properties: [
{
name: 'F22',
type: 'string',
description: 'The F-22 Raptor is a single-seat, twin-engine, all-weather stealth tactical fighter aircraft.',
examples: ['F22 Raptor', 'F-22', 'F22'],
semantic: 'aircraft.name'
},
{
name: 'Crew',
type: 'number',
description: 'The number of crew members on board the aircraft.',
examples: [1, 2],
semantic: 'aircraft.crew'
}
]
});
console.log(aircraftSchema.getPropertiesBySemantic('aircraft.crew')); // [{ name: 'Crew', type: 'number', ... }]
console.log(aircraftSchema.getProperty('F22')); // { name: 'F22', type: 'string', ... }
console.log(aircraftSchema.equals(aircraftSchema.clone())); // true