当前位置:   article > 正文

cesium加载显示点云及倾斜模型(3dtiles)_cesium 加载点云模型

cesium 加载点云模型

        在cesium加载并显示点云或者倾斜模型之前,需要将不同格式的数据转为3dtiles,具体参考倾斜、点云转3dtiles(osgb、las转3dtiles)切片

        转换完成后就可以写代码将其加载到cesium地球上。

  1. //定位到该地点
  2. viewer.camera.flyTo({
  3. destination : Cesium.Cartesian3.fromDegrees(112.96906,34.70736,5000.0)
  4. });
  5. qingxie = new Cesium.Cesium3DTileset({
  6. url: "./models/tileset.json",
  7. });
  8. viewer.scene.primitives.add(qingxie);

        有时候加载完成并不能贴地显示,或者贴地显示的具体位置和底图位置不一致,需要对模型位置进行调整。

  1. qingxie.readyPromise.then(function(qingxie) {
  2. //高度偏差,向上是正数,向下是负数
  3. var heightOffset = -210;
  4. //计算tileset的绑定范围
  5. var boundingSphere = songlingqingxie1.boundingSphere;
  6. //计算中心点位置
  7. var cartographic = Cesium.Cartographic.fromCartesian(boundingSphere.center);
  8. //计算中心点位置的地表坐标
  9. var surface = Cesium.Cartesian3.fromRadians(cartographic.longitude, cartographic.latitude, 0.0);
  10. //偏移后的坐标
  11. var offset = Cesium.Cartesian3.fromRadians(cartographic.longitude+0.000015, cartographic.latitude-0.000015, heightOffset);
  12. var translation = Cesium.Cartesian3.subtract(offset, surface, new Cesium.Cartesian3());
  13. //tileset.modelMatrix转换
  14. qingxie.modelMatrix = Cesium.Matrix4.fromTranslation(translation);
  15. });

        最后模型成功准确显示在地图上。

        点云的代码基本一样。

  1. dianyun =new Cesium.Cesium3DTileset({
  2. url: "./models/ding/tileset.json",
  3. });
  4. viewer.scene.primitives.add(dianyun);
  5. dianyun.readyPromise.then(function(dianyun) {
  6. //高度偏差,向上是正数,向下是负数
  7. var heightOffset = -210;
  8. //计算tileset的绑定范围
  9. var boundingSphere = songlingdianyun1.boundingSphere;
  10. //计算中心点位置
  11. var cartographic = Cesium.Cartographic.fromCartesian(boundingSphere.center);
  12. //计算中心点位置的地表坐标
  13. var surface = Cesium.Cartesian3.fromRadians(cartographic.longitude, cartographic.latitude, 0.0);
  14. //偏移后的坐标
  15. var offset = Cesium.Cartesian3.fromRadians(cartographic.longitude, cartographic.latitude, heightOffset);
  16. var translation = Cesium.Cartesian3.subtract(offset, surface, new Cesium.Cartesian3());
  17. //tileset.modelMatrix转换
  18. dianyun.modelMatrix = Cesium.Matrix4.fromTranslation(translation);
  19. });

        显示如下。点云是自己用python按高程进行渲染的,同样需要进行渲染的可以参考博客(点云按照高程进行渲染(可自定义颜色——python)内附RGB0-1间取值对应表)。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小小林熬夜学编程/article/detail/220529
推荐阅读
  

闽ICP备14008679号