首页 / 浏览问题 / 移动GIS / 问题详情
场景加载三维线数据展示异常
dsl
1EXP 2026年02月09日

使用产品: idesktopx  SuperMap iMobile 11i(2024) for Android
问题详细描述:数据库的道路线二维空间数据,导出成web墨卡托的shp文件,将这个文件使用idesktopx的二维线转换成三维线,再保存场景并导出场景瓦片。在安卓中使用scenecontrl和Arcontrol加载,但加载出来的线显示异常,都连接到一个点。
 

    /**
     * 打开本地工作空间中的三维场景
     */
    public void openLocalWorkspace() {

        // 创建工作空间对象
        Workspace workspace = new Workspace();

        // 创建连接信息对象
        WorkspaceConnectionInfo info = new WorkspaceConnectionInfo();

        // 设置工作空间路径
        info.setServer(currentARModel.getLocalWorkspacePath());

        // 设置工作空间类型
        info.setType(WorkspaceType.SXWU);

        // 绑定工作空间到场景
        sceneControl.getScene().setWorkspace(workspace);

        // 打开工作空间
        if (workspace.open(info)) {

            // 打开第一个场景
            boolean mOpen = sceneControl.getScene().open(workspace.getScenes().get(0));

            // 获取所有图层
            layer3Ds = sceneControl.getScene().getLayers();

            // 获取图层数量
            layerCount = layer3Ds.getCount();
        }
        

        double initZ = currentARModel.getInitZ();

        //GPS坐标系转换为墨卡托投影坐标系(地理坐标与平面坐标转换)
        double[] lonLat2Mercator = GPSConverterUtils.lonLat2Mercator(currentARModel.getLon(), currentARModel.getLat());


        /**
         * setSceneTransLation()方法
         * 里面的三个参数:表示想把场景中哪个位置设置为AR原点
         * 例如:一份带地理投影坐标系的场景,其大概的坐标范围都是(100000±, 100000±)那么这种距离远远超过AR中的可见距离,实际加载出来也看不见
         *      所以 setSceneTransLation(-100000, -100000, 0)就等价于把AR相机原点(0, 0, 0)移动到(100000, 100000, 0)处
         *      这样就能看到整个场景中的要素了。
         */
        arControl.setSceneTransLation(0 - lonLat2Mercator[0], 0 - lonLat2Mercator[1], initZ);


        // 隐藏平面提示
        arControl.setARPlaneState(false);

        // 弹出提示
        Toast.makeText(this, "场景加载完毕", Toast.LENGTH_SHORT).show();

        Log.d(TAG, "场景加载完毕!!!!!!");
    }


1个回答

1、首先确认生成场景瓦片之后的结果在iDesktopX中加载是否正常

2、如果在iDesktopX中显示正常,在移动端依旧异常麻烦提供一下测试数据(数据集形式),我们分析一下,数据可以放在网盘中
6,147EXP 2026年02月09日
生成场景瓦片之后的结果在iDesktopX中加载都正常,
网盘里边有一个线数据集和一个面数据集,线数据集生成的场景瓦片在移动端能显示但是显示异常,面数据集成的场景瓦片在移动端显示不出来。

通过网盘分享的文件:supermap
链接: https://pan.baidu.com/s/1bCEV4a4Mt1CS2TNxlWrKOg?pwd=r2px 提取码: r2px

链接中没有数据

不好意思,刚才上传失败了,已经重新上传了

你好,我这边测试你发的这个数据是能正常加载的,这是我这边生成的瓦片数据,你可以试一下:通过网盘分享的文件:result_region2DTo3D_3@PolygonDatasource
链接: https://pan.baidu.com/s/1eyh4Q65mq2s1Xja1gkUffA?pwd=hkd6 提取码: hkd6 
--来自百度网盘超级会员v7的分享

我用你的还是显示不出来,代码中我是把它添加到AR场景中,是开启了ar模式的。刚才的问题中我贴了

openLocalWorkspace方法。
   // 创建 ARControl
        arControl = new ARControl(this, sceneControl);

        // 监听 SceneControl 初始化完成
        sceneControl.sceneControlInitedComplete(success -> {

            // 开启 AR 模式
            arControl.setARState(true);

            // 开启锚点自动更新
            arControl.setUpdateAnchor(true);

            // 关闭 ARCore 平面识别提示
            arControl.setARPlaneState(false);
        });

...