首页 / 浏览问题 / 三维GIS / 问题详情
前端添加addS3MTilesLayerByScp图层,图层内容不显示
36EXP 2023年02月13日

使用产品:iserver 10i

操作系统:win11 x64

数据类型:  文件型

问题详细描述:

在前端添加S3M图层,代码如下:

  var promise = viewer.scene.addS3MTilesLayerByScp("http://xxxxxx:8090/iserver/services/3D-ganzizhou/rest/realspace/datas/shuidianzhan1/config",
        { name: "models", cullEnabled: false });
      Cesium.when(promise, function (layer) {
        var s3mLayer = layer;
        // console.log(s3mLayer);
        viewer.zoomTo(s3mLayer);
      })

添加完成后,输出图层对象发现添加成功,但是随之zoomTo到该图层,发现图层中的模型并未显示,而且控制台中会收到一连串的错误信息

1个回答

您好,请问您这份数据的坐标系是什么呢,在iserver的data节点中是否可以正常预览,

数据是iDesktop切得三维缓存还是入库的倾斜摄影呢,注意处理缓存的iDesktop版本要和iserver、iClient一致哦。

希望可以帮助到您。
于丁
1
10,903EXP 2023年02月13日

感谢您的回复!

坐标系是:

数据obj模型切的三维缓存,然后添加到场景中进行发布的

发布之后在IServer的data节点可以正常访问,配置文件也可以浏览到。

4543是投影坐标系,如果缓存切的是4543要在平面场景才可以直接加载。

建议在桌面端对这个模型数据集投影转换,转换成地理坐标系(比如4326)转换时注意勾选模型顶点转换,

转换后再切缓存发布,测试时可以切s3m1.0兼容性最好。
好的,我尝试一下。感谢回复!
按您的建议的进行操作之后,还是同样的情况,报同样的错误!还有没有可能是其他的原因呢?
我刚刚进行了一个新的尝试。

如果在一个空的系统中,除了添加该图层之外没有其余功能代码的书写的情况下,该图层是可以被添加的,模型可以正常显示,也不会报错。

但是如果在我当前这个系统中运行的话,就会出现这个问题。

代码方面有什么因素是可能会影响图层加载的呢?
你加载缓存的事件是否有差异,报错具体是在move时出现还是add时出现,

移动时间是否都是在 addS3MTilesLayerByScp 的回调事件里加的,现有图层里有没有重复的。
加载缓存的代码是直接拷贝的,应该是一模一样。

报错是在move时出现,图层添加完成之后不报错,手动拖动到模型位置也是没有成功加载。

移动时间无论是在回调事件中执行,还是在函数外之外执行,只要在图层添加之后移动就会报错。
在你的原项目中,是具体加载了那份数据还是写了那个功能后才会出现该情况?
相机跳转以后才会报错。

但是如果不用相机跳转过去,用鼠标一点一点挪过去,模型也不会出现。
为了排除是其他代码的执行阻碍图层加载,我直接将该切片图层在桌面端加载到场景中,然后发布工作空间,获取场景的发布地址,不采用逐个图层加入的方法,而是使用scene.Open直接打开该场景,结果其他图层都正常,该图层未显示。

切换到无功能代码的空系统中,打开整个场景后,所有图层均可显示,模型图层也可以。

这可能是什么问题呢?
你私信下我你的联系方式吧,我远程看下你数据。







远程后是因为模型数据的坐标系和范围bounds不对,在iDesktop设置正确坐标系并在模型数据集上右键重新计算范围后,再生成的缓存恢复正常,可以直接定位。
经过远程指导,问题已成功解决,十分感谢!
...