首页 / 浏览问题 / 三维GIS / 问题详情
S3MTilesLayer的datasetInfo()方法返回信息不正确
9EXP 2022年07月04日

产品:iclient3d for webgl 10.2.1

问题描述:

1.参照示范代码S3MTiles_BIM修改场景和数据服务地址为自己本地发布的服务;

2.核心代码如下:

const promise = scene.open('http://localhost:8090/iserver/services/3D-NanHuDaLu0630/rest/realspace')


Cesium.when(promise,function(layers){


let layer = scene.layers.find('打散模型@20220629模型打散')


    layer.setQueryParameter({

    url:"http://localhost:8090/iserver/services/data-NanHuDaLu_data_0630/rest/data",

    dataSourceName : "bim_model",

    isMerge : true,

    keyWord:'BSM' });

  datainfo(layer)
  function datainfo(layer){

    layer.datasetInfo().then(function(result){

     }); }
})

3.datainfo 返回的结果信息不正确,和设置setQueryParameter的数据服务数据源信息不匹配,详细信息参照截图

1个回答

您好,返回的结果应该是正确的。您途中所框出的场景图层显示的名字,并不能算是datasetName。这个显示的名字,如果给一个叫法的话,应该叫做缓存名。而datasetinfo,您这边也可以查看Cesium的源生API,其中的说法是:“ 获取图层数据集名称以及对应的Id范围(适用于多数据集生成缓存)。http://support.supermap.com.cn/DataWarehouse/WebDocHelp/iPortal/webgl/docs/Documentation/S3MTilesLayer.html

您也可以在Cesium官网上使用Cesium官方示例验证。

4,151EXP 2022年07月04日
您好 我的意思是 我通过图层setQueryParameter设置关联的数据服务,

这样datainfo应该返回数据服务中对应数据源的数据集信息,不知道这样理解的对不对

看您的代码应该是参照示例http://support.supermap.com.cn:8090/webgl/examples/webgl/editor.html#S3MTiles_BIM 去写的对吗。

示例中,这部分的layer和数据源名称是一致的,可能给您带来了误解。逻辑上来说,示例的115行到122行可以看出,此处dataSourceName对应的是数据源,同理该数据源的的数据,应该都在您发布的该缓存 '打散模型@20220629模型打散' 之下。

您的意思是 发布三维场景的图层名称需要和数据源保持一致,不允许修改成不一样的名字么?

我这里的数据情况说明一下:
三维场景里的图层“打散模型@20220629模型打散” 这个图层是生成的场景缓存发布的场景服务,

数据服务里面的数据源bim_model,是我给数据导入到mysql里之后发布的数据服务,

按照刚才的结实,我需要给数据源bim_model这个名称改成"打散模型@20220629模型打散"么???
问题原因不是这样的,建议您这边尝试发布工作空间,工作空间里包含您生成的缓存场景以及数据源。然后在发布工作空间时,同时发布三维服务和数据服务。

如果方便的话,您也可以私信我提供数据,我这边拿您的数据测试一下

工作空间包括了数据和场景,发布服务得时候勾选了三维服务和数据服务,问题依然存在,数据是项目数据,无法提供,见谅!!!

您好,

那麻烦您是多个模型数据集生成一个缓存图层还是一个模型数据集对应一个图层。

另外确认发布数据服务的数据源数据集名称。

如果提供不了数据也可以进行远程支持
...