Class: FdPMTSParser

FdServer. FdPMTSParser

PMTS服务数据解析

PMTS服务提供的服务包括PModel数据服务、结构树信息服务、部件属性信息服务等在内的一整套数据服务的集成。 PMTS的结构是这样的,PMTS的描述文件中会包含多个图层信息(Layer),每个图层包含多个MatrixSet, 每一个MatrixSet包含多个Matrix。Matrix则对应一个PModel数据服务。

示例代码如下:

// jsonPMTSCapabilities是一个PMTS配置文件,json对象。可以通过该对象拿到所有的图层信息(Layer)
jsonPMTSCapabilities.contents.layers.forEach(layer => {
    // 通过图层获取所有的MatrixSet对象
    let matrixSets = Freedo.FdServer.FdPMTSParser.getMatrixSets(jsonPMTSCapabilities, layer);
    matrixSets.forEach(matrixSet => {
        // 通过MatrixSet对象获取其所包含的Matrix对象
        matrixSet.matrix.forEach(matrix => {
            // 通过Matrix对象获取相对应的PModel数据服务的URL
            let pModelURL = Freedo.FdServer.FdPMTSParser.getPModelURL(layer,
                matrixSet, matrix, token);

            // 通过pModelURL来加载PModel几何数据到三维场景中去
            var pModel = viewer.scene.primitives.add(new Freedo.FreedoPModelset({
                url: pModelURL
            }));

            // 此处是将三维场景中创建的pModel数据和所对应的Matrix等关联起来
            pModelInfos.push({
                pModel,
                matrix,
                matrixSet,
                layer
            });

            // PModel数据加载完成以后,将相机定位到PModel几何数据所在位置
            pModel.readyPromise.then(function (pModel) {
                viewer.camera.viewBoundingSphere(pModel.boundingSphere,
                    new Freedo.HeadingPitchRange(
                        0, -0.5, 0));
            });
        })

        // matrixSet.uid是MatrixSet的跟节点,相当于最上层的部件ID
        // 通过该部件ID,可以获取该部件的节点信息
        // 节点信息包含包含该节点的ID、名称、子节点ID等信息
        Freedo.FdServer.FdPMTSParser.getUidJson(layer, matrixSet, matrix, matrixSet.uid,
            token,
            (json, error) => {
                console.log('--------------uid-------------');
                if (typeof error === 'undefined') {
                    console.log(json);
                } else {
                    console.log('error: ' + error);
                }
                console.log(' ');
            });

        // 通过该部件ID,可以获取该部件的子节点信息
        // 部件的子节点信息,是一个包含多个子节点信息的数组对象
        Freedo.FdServer.FdPMTSParser.getCidJson(layer, matrixSet, matrix, matrixSet.uid,
            token,
            (json, error) => {
                console.log('--------------cid-------------');
                if (typeof error === 'undefined') {
                    console.log(json);
                } else {
                    console.log('error: ' + error);
                }
                console.log(' ');
            });

        // 通过部件ID,获取部件的属性信息
        // 部件的属性信息包含BoundsMin、BoundsMax,以及部件的非几何属性信息
        Freedo.FdServer.FdPMTSParser.getPropJson(layer, matrixSet, matrix, matrixSet.uid,
            token,
            (json, error) => {
                console.log('--------------prop-------------');
                if (typeof error === 'undefined') {
                    console.log(json);
                } else {
                    console.log('error: ' + error);
                }
                console.log(' ');
            });
    })
})

new FdPMTSParser()

Methods


<static> getCidJson(layer, matrixSet, matrix, tileno, uid, token, callback)

获取部件的子节点信息

Parameters:
Name Type Description
layer Object

Layer对象

matrixSet Object

MatrixSet对象

matrix Object

Matrix对象

tileno String

'matrix'或'component'; 通过matrix的uid获取子节点,则传入'matrix'; 否则传入"component".

uid String

部件ID

token String

用户认证token,如果没有token,可以设置为undefined

callback FdServer.FdPMTSParser~Callback

获取部件的子节点信息的回调函数

Example
Freedo.FdServer.FdPMTSParser.getCidJson(layer, matrixSet, matrix, tileno, uid
            token,
            (json, error) => {
                console.log('--------------cid-------------');
                if (typeof error === 'undefined') {
                    console.log(json);
                } else {
                    console.log('error: ' + error);
                }
                console.log(' ');
            });

<static> getKeyValueJson(layer, matrixSet, matrix, key, val, token, callback, option)

通过KeyValue对查询构件属性

Parameters:
Name Type Description
layer Object

Layer对象

matrixSet Object

MatrixSet对象

matrix Object

Matrix对象

key String

属性键

val String

属性值

token String

用户认证token,如果没有token,可以设置为undefined

callback FdServer.FdPMTSParser~Callback

获取部件的属性信息的回调函数

option Object

查找选项

Properties
Name Type Description
pModel PModel

限定在某个PModel内 Freedo.FdServer.FdPMTSParser.getKeyValueJson(layer, matrixSet, matrix, key, val token, (json, error) => { console.log('--------------prop-------------'); if (typeof error === 'undefined') { console.log(json); } else { console.log('error: ' + error); } console.log(' '); });


<static> getLayerFromID(jsonPMTSCapabilities, layerIdentifier)

根据ID获取Layer对象

Parameters:
Name Type Description
jsonPMTSCapabilities Object

PMTS配置信息,JSON对象

layerIdentifier String

Layer的ID

Returns:

Layer对象

Type
Object

<static> getMatrixBoundingSphere(matrix, worldMatrix)

获取Matrix的包围球信息

Parameters:
Name Type Description
matrix Object

Matrix对象

worldMatrix Freedo.Matrix4

模型矩阵(应为: tileset.modelMatirx * tileset._root.transform)

Returns:

Matrix的包围球信息

Type
Freedo.BoundingSphere

<static> getMatrixFromID(matrixSet, matrixIdentifier)

根据ID获取Matrix对象

Parameters:
Name Type Description
matrixSet Object

MatrixSet对象,JSON对象

matrixIdentifier String

Matrix的ID

Returns:

Matrix对象

Type
Object

<static> getMatrixSetFromID(jsonPMTSCapabilities, matrixSetIdentifier)

根据ID获取MatrixSet对象

Parameters:
Name Type Description
jsonPMTSCapabilities Object

PMTS配置信息,JSON对象

matrixSetIdentifier String

MatrixSet的ID

Returns:

MatrixSet对象

Type
Object

<static> getMatrixSets(jsonPMTSCapabilities, layer)

获取Layer对象所属的所有MatrixSet

Parameters:
Name Type Description
jsonPMTSCapabilities Object

PMTS配置信息,JSON对象

layer Object

Layer对象

Returns:

MatrixSet对象数组

Type
Array.<Object>

<static> getPModelURL(layer, matrixSet, matrix, token)

获得加载PModel数据的URL

Parameters:
Name Type Description
layer Object

Layer对象

matrixSet Object

MatrixSet对象

matrix Object

Matrix对象

token String

用户认证token,如果没有token,可以设置为undefined

Returns:

加载PModel数据的URL

Type
String

<static> getPModelURLArray(url, callback)

获取PMTS的模型添加地址列表

Parameters:
Name Type Description
url String

PMTS地址,带有token或者accesskey

callback FdServer.FdPMTSParser~Callback

获取部件的子节点信息的回调函数


<static> getPropJson(layer, matrixSet, matrix, uid, token, callback)

获取部件的属性信息

Parameters:
Name Type Description
layer Object

Layer对象

matrixSet Object

MatrixSet对象

matrix Object

Matrix对象

uid String

部件ID

token String

用户认证token,如果没有token,可以设置为undefined

callback FdServer.FdPMTSParser~Callback

获取部件的属性信息的回调函数

Example
Freedo.FdServer.FdPMTSParser.getPropJson(layer, matrixSet, matrix, uid
            token,
            (json, error) => {
                console.log('--------------prop-------------');
                if (typeof error === 'undefined') {
                    console.log(json);
                } else {
                    console.log('error: ' + error);
                }
                console.log(' ');
            });

<static> getTagJson(layer, matrixSet, matrix, tag, token, callback)

获取部件的属性信息

Parameters:
Name Type Description
layer Object

Layer对象

matrixSet Object

MatrixSet对象

matrix Object

Matrix对象

tag String

部件Tag

token String

用户认证token,如果没有token,可以设置为undefined

callback FdServer.FdPMTSParser~Callback

获取部件的属性信息的回调函数

Example
Freedo.FdServer.FdPMTSParser.getTagJson(layer, matrixSet, matrix, tag,
            token,
            (json, error) => {
                console.log('--------------prop-------------');
                if (typeof error === 'undefined') {
                    console.log(json);
                } else {
                    console.log('error: ' + error);
                }
                console.log(' ');
            });

<static> getUidBoundingSphere(layer, matrixSet, matrix, uid, token, worldMatrix, callback)

获取部件的包围球信息

Parameters:
Name Type Description
layer Object

Layer对象

matrixSet Object

MatrixSet对象

matrix Object

Matrix对象

uid String

部件ID

token String

用户认证token

worldMatrix Freedo.Matrix4

模型矩阵(应为: tileset.modelMatirx * tileset._root.transform)

callback FdServer.FdPMTSParser~Callback

获取部件包围球信息的回调函数


<static> getUidJson(layer, matrixSet, matrix, uid, token, callback)

获取部件的节点信息

Parameters:
Name Type Description
layer Object

Layer对象

matrixSet Object

MatrixSet对象

matrix Object

Matrix对象

uid String

部件ID

token String

用户认证token,如果没有token,可以设置为undefined

callback FdServer.FdPMTSParser~Callback

获取部件的节点信息的回调函数

Example
Freedo.FdServer.FdPMTSParser.getUidJson(layer, matrixSet, matrix, uid, 
            token,
            (json, error) => {
                console.log('--------------uid-------------');
                if (typeof error === 'undefined') {
                    console.log(json);
                } else {
                    console.log('error: ' + error);
                }
                console.log(' ');
            });

<static> getUidsByKVs(layer, matrixSet, matrix, key, values, token, callback)

根据propset中的某个属性获取对应的uid

Parameters:
Name Type Description
layer Object

Layer对象

matrixSet Object

MatrixSet对象

matrix Object

Matrix对象

key String

属性名

values Array.<String>

属性值的数组

token String

用户认证token,如果没有token,可以设置为undefined

callback FdServer.FdPMTSParser~Callback

获取部件的节点信息的回调函数

Type Definitions


Callback( [result] [, error])

FdPMTSParser的回调函数类型

Parameters:
Name Type Argument Description
result Object <optional>

返回相应的对象,可能是MatrixSet、Matrix、包围球等,如果出现错误,则此参数为undefined

error String <optional>

返回错误字符串,如果是undefined,则表示没有错误