首页 / 浏览问题 / 组件GIS / 问题详情
iobjectsjava模型生成缓存以后添加场景图层发布服务看不到模型
15EXP 2022年03月29日

本人代码如下:

            DatasetVector datasetVector = (DatasetVector) dataset;
            //坐标新转换
            PrjCoordSys prjCoordSys = new PrjCoordSys();
            prjCoordSys.fromEPSGCode(4490);
            datasetVector.setPrjCoordSys(prjCoordSys);
            String datasetVectorName = datasetVector.getName();
            String cacheName = datasetVectorName + "@" + sourceName;
            Rectangle2D bounds = datasetVector.getBounds();
            OSGBCacheBuilder osgbCacheBuilder = new OSGBCacheBuilder(datasetVector, filePath, cacheName);
            osgbCacheBuilder.setFileType(CacheFileType.S3MB);
            osgbCacheBuilder.setBounds(bounds);
            Point3D position = osgbCacheBuilder.getPosition();
            Point3D point3D = new Point3D(position.x, position.y, position.z);
            osgbCacheBuilder.setPosition(point3D);
            osgbCacheBuilder.setMaterialType(MaterialType.NORMAL);
            osgbCacheBuilder.setUserIDField("SmID");
            boolean build = osgbCacheBuilder.build();
            //添加场景
            Scene scene = new Scene(workspace);
            Layer3Ds layers = scene.getLayers();
//            Layer3DSettingVector layer3DSettingVector = new Layer3DSettingVector();
//            GeoStyle3D style = new GeoStyle3D();
//            style.setFillForeColor(Color.BLACK);
//            layer3DSettingVector.setStyle(style);
//            Layer3D add = layers.add(datasetVector, layer3DSettingVector, true);
            Layer3D add = layers.add(filePath + "/" + cacheName + "/" + cacheName + ".scp", Layer3DType.OSGB, true);
            add.setEditable(true);
            add.setVisible(true);
            scene.ensureVisible(add);
            Scenes scenes = workspace.getScenes();
            scenes.add(datasetVectorName, scene.toXML());

工作空间中有一个模型数据集(model类型dataset),生成缓存之后,使用缓存文件方式添加场景图层,另存工作空间发布服务,进入scenes后用WebGL3D形式查看,看不到模型,如图:

但是以三维切片缓存方式发布服务(不用工作空间,用scp文件)就能看到模型,如图:

我想问一下是我缓存有问题还是场景图层有问题?谢谢

1个回答

您好,建议您先使用SuperMap iDesktop桌面端加载您发布的iServer三维服务,检测是否可以正常显示三维缓存。若能够正常显示,则说明你通过工作空间生成发布的三维服务没有问题。

希望可以帮到您。
2,258EXP 2022年03月29日
您看一下我的代码,在新建场景和加载图层这一步有什么问题吗?
您好,您上面的代码逻辑没有问题,建议您描述一下您发布工作空间的过程,由于不知道您采用哪种方式发布的工作空间,暂时无法确定工作空间中三维缓存显示不了的原因。

有以下问题麻烦您描述一下:

1. 您在桌面端加载您发布的工作空间三维服务能否正常显示?

2. iServer服务是否和您生成工作空间的Java程序在一台电脑上?若不是,则需要您确定一下iServer服务器那边是否只拷贝了工作空间,没有拷贝三维缓存。

3. 建议您在浏览器通过WebGL3D的形式打开三维服务(发布工作空间)的时候,通过F12查看一下无法显示模型的情况下是否有请求异常。
...