首页 / 浏览问题 / 三维GIS / 问题详情
java如何生成场景缓存
2EXP 2020年03月23日

1.

m_sceneControl.getScene()

时候提示"三维地图控件必须显示"。

2.不知道怎么将Layer加入场景

3.有没有java生成场景缓存的demo

1个回答

您好,1.如果是无界面的Java工程,直接构造一个Scene,Scene scene = new Scene(workspace);不需要用scceneControl.getScene()。因为sceneControl是一个UI控件,,需要创建带界面的工程。
2.根据上一步构造的scene,通过scene.getLayers().add()方法将数据集添加到场景
3.生成场景缓存的接口:SceneCacheBuilder,在帮助文档搜索这个接口,设置相应的参数即可,最后使用sceneCacheBuilder.build()方法生成缓存
9,197EXP 2020年03月23日
Layer3Ds layers = m_scene.getLayers();

获取到的layes.size()=0s

 m_workspace = new Workspace();
            DatasourceConnectionInfo datasourceConnectionInfo = new DatasourceConnectionInfo();
            datasourceConnectionInfo.setEngineType(EngineType.UDBX);
            datasourceConnectionInfo.setServer("F:/workdata/ProjectDocument/天府管廊项目/超图模板/雅州路.udbx");
            m_datasource = m_workspace.getDatasources().open(datasourceConnectionInfo);
            Datasets datasets = m_datasource.getDatasets();

            m_scene = new Scene(m_workspace);
            String name = datasets.get(0).getName();
            Layer3DSettingVector layer3DSettingVector = new Layer3DSettingVector();
            DatasetVector datasetVector = (DatasetVector) m_datasource.getDatasets().get(name);
            Layer3Ds layers = m_scene.getLayers();
            layers.add(datasetVector, layer3DSettingVector, true, name);

调试一下代码,看一下layer3Ds.add()方法返回是否有值,
Java设置什么参数能使切好的缓存在发布服务时能够自动定位
实现思路如下:将场景全幅显示某个图层:scene.ensureVisible();然后保存场景:scene:save();这样切完缓存后发布会自动定位过去
...