美文网首页
supermap cesium 加载倾斜摄影

supermap cesium 加载倾斜摄影

作者: gardenlike2 | 来源:发表于2019-08-27 14:23 被阅读0次

    如果我们要在web端加载我们自身的数据,超图和cesium都有方法,cesium方法比较简单,可以用到cesiumlab这个比较方便的工具。其中有倾斜数据(osgb)处理方法。其中只要数据正确,他会自动读取倾斜摄影中的坐标。切出来的数据通过添加3dtiles的方法就能够正确的添加到web端的网页中。(新版本的cesium好像要添加token才能够添加底图,可以去申请ion。清楚原因的小伙伴可以科普一下为啥)

    var viewer = new Cesium.Viewer('cesiumContainer', {
            selectionIndicator : false,animation : false,//是否创建动画小器件,左下角仪表
            baseLayerPicker : false,//是否显示图层选择器
            fullscreenButton : false,//是否显示全屏按钮
            geocoder : false,//是否显示geocoder小器件,右上角查询按钮
            homeButton : false,//是否显示Home按钮
            infoBox : false,//是否显示信息框
            sceneModePicker : false,//是否显示3D/2D选择器
            selectionIndicator : false,//是否显示选取指示器组件
            timeline : false,//是否显示时间轴
            navigationHelpButton : false,//是否显示右上角的帮助按钮
            scene3DOnly : true,
            automaticallyTrackDataSourceClocks : false,//自动追踪最近添加的数据源的时钟设置
            sceneMode : Cesium.SceneMode.SCENE3D,//初始场景模式
        });
    
        var tilesetbuilding = viewer.scene.primitives.add(new Cesium.Cesium3DTileset({
            url: , //自己切片的地址,应用到切片的tileset.json
        }));
        tilesetbuilding.readyPromise.then(function () {
    
            var boundingSphere = tilesetbuilding.boundingSphere;
    
            viewer.camera.viewBoundingSphere(boundingSphere, new Cesium.HeadingPitchRange(0.0, -0.5, boundingSphere.radius));
    
            viewer.camera.lookAtTransform(Cesium.Matrix4.IDENTITY);
    
        }).otherwise(function (error) {
            throw (error);
        });
    
        //设置操作习惯,更换中键和右键
    
        viewer.scene.screenSpaceCameraController.tiltEventTypes = [
    
            Cesium.CameraEventType.RIGHT_DRAG, Cesium.CameraEventType.PINCH,
    
            { eventType: Cesium.CameraEventType.LEFT_DRAG, modifier: Cesium.KeyboardEventModifier.CTRL },
    
            { eventType: Cesium.CameraEventType.RIGHT_DRAG, modifier: Cesium.KeyboardEventModifier.CTRL }
    
        ];
        viewer.scene.screenSpaceCameraController.zoomEventTypes = [Cesium.CameraEventType.MIDDLE_DRAG, Cesium.CameraEventType.WHEEL, Cesium.CameraEventType.PINCH];
    
    这样就能够展示我们的倾斜摄影了下面说下supermap方法。首先要生成supermap读的懂得倾斜摄影缓存。打开supermap,在菜单栏选项卡中选择 选择倾斜摄影选项卡 设置倾斜摄影数据

    若果不设置中心点坐标的,生成的数据可能会生成达到大西洋上(0,0),所以我们要获取倾斜摄影的中心点坐标。smart 3d导出的倾斜摄影会有这个文件metadata.xml.打开该文件

    <?xml version="1.0" encoding="utf-8"?>
    <ModelMetadata version="1">
        <!--Spatial Reference System-->
        <SRS>EPSG:4549</SRS>
        <!--Origin in Spatial Reference System-->
        <SRSOrigin>525138.5,3502954,0</SRSOrigin>
        <Texture>
            <ColorSource>Visible</ColorSource>
        </Texture>
    </ModelMetadata>
    

    其中包含了它的投影以及中心点坐标。可以通过在线网址:http://epsg.io/去转换投影点击Transform coordinates按钮进入坐标转换界面。在输入经纬度转成上述文件的坐标系,然后输入中心点坐标。输出栏选择我们需要的经纬度坐标系。点击转换救获得了我们需要的坐标系。然后生成scp文件。注意虽然新版本的超图iserver已经支持osgb格式的三维文件,但是为了稳定性以及效率。需要将其转换成s3m的文件,

    转换s3m文件 转换完之后就可以生成场景缓存并发布了,详细步骤可以参考https://www.jianshu.com/p/b18d27dbdc36

    相关文章

      网友评论

          本文标题:supermap cesium 加载倾斜摄影

          本文链接:https://www.haomeiwen.com/subject/mkqbjctx.html