CAD 导入 Cesium 、高程与坐标一致

需求说明:

CC 算出来的 Cesium 3dtiles,导入到Cesium 之后,需要将CAD的一些图覆盖上去,并且坐标、高程一致。

1、先将3d Tiles导入 Cesium

  Ce.Load3dTiles.TilesetScene.url = "/resource/Scene/Production_2.json";

    Ce.Load3dTiles.TilesetScene.OBJ = Ce.Viewer.scene.primitives.add(new Cesium.Cesium3DTileset({
        url: Ce.Load3dTiles.TilesetScene.url,
        show: true,
        debugHeatmapTilePropertyName: "",
        baseLayerPicker: true,
        maximumScreenSpaceError: 2,//最大的屏幕空间误差
        maximumNumberOfLoadedTiles: 5000,  //最大加载瓦片个数
        luminanceAtZenith: 0.2,
        modelMatrix: Cesium.Matrix4.IDENTITY,

    }));

2、导入 KML 到 3dTiles 上

    Ce.Load3dTiles.TilesetScene.OBJ.readyPromise.then(function (argument) {
        let tileset = Ce.Load3dTiles.TilesetScene.OBJ;
        var boundingSphere = tileset.boundingSphere;
        var cartographic = Cesium.Cartographic.fromCartesian(boundingSphere.center);
        var surface = Cesium.Cartesian3.fromRadians(cartographic.longitude, cartographic.latitude, 0.0);
        var offset = Cesium.Cartesian3.fromRadians(cartographic.longitude, cartographic.latitude, 40.05);//40.05 为调整Tiles的高程,有时候高程不一致时需要用得到。如果是一致的,则为0.可以与参照点进行对比。
        var translation = Cesium.Cartesian3.subtract(offset, surface, new Cesium.Cartesian3());
        tileset.modelMatrix = Cesium.Matrix4.fromTranslation(translation);

        let kmlFileUrl = "/resource/kml/5d.kml";//5d.kml 这里为CAD转换成的KML
        let options = {
            camera: Ce.Viewer.scene.camera,
            canvas: Ce.Viewer.scene.canvas,
        };

        Ce.Viewer.dataSources.add(
            Cesium.KmlDataSource.load(
                kmlFileUrl,
                options
            )
        );
}

3、打开CAD 并编辑

如果需要高程也一致,那么需要将CAD里所有的点与线的Z轴都赋予正确的高程值,将CAD的工作空间设置为:三维建模会方便一些,如果不需要高程一致,那么平面的就可以了。

如果是平面的话,则需要在CAD导出工具中,将全贴地面勾上再导出,并且需要保证KML的高程比tiles的要高。

4、找到参照中心点

参照点用于对比 调整 高程、坐标的。

在Google地图中找到参照点,并记下坐标

《CAD 导入 Cesium 、高程与坐标一致》

在CAD的图纸中,也找到同一个参照点,并将CAD的整个图纸移动,以这个参照点移动,移动到0,0的位置。

《CAD 导入 Cesium 、高程与坐标一致》

5、使用CAD转KML工具

acad2kml.zip-互联网文档类资源-CSDN下载

下载这个工具,并解压,并拖动到CAD窗口

《CAD 导入 Cesium 、高程与坐标一致》

使用acad2kml命令

将刚才在Google 地图中记下的参照点坐标,填上。

《CAD 导入 Cesium 、高程与坐标一致》

然后选择保存的位置,再接着在CAD中选择要导出的对象,鼠标右键确定,既可导出KML。

    原文作者:天道酬勤~
    原文地址: https://blog.csdn.net/usdnfo/article/details/113860958
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞