如果我们要在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。
网友评论