这段时间一直在研究这个问题,今天终于是解决了,受到了很多人的帮助,不然可能还要很久才能摸索出方法。
在开始之前,我们假设你已经知道了cesium的最基础的使用方法,比如下载cesium,启动cesium等。
好了,步入正题。首先你除了需要准备cesium的那些源码文件外还需要:1、相应的osgb文件和dwg文件(本篇文章以这种为例)。2、Qgis软件。3、cesiumlab。4、arcmap软件。
分为两个部分进行操作:
1、对dwg文件的处理:
使用你的arcmap打开dwg文件,将dwg格式转换为shp文件(方法为:选中文件->右键->数据->导出数据)。将导出的shp文件加载进arcmap,此时你需要知道你要转换的文件的初始坐标系,我这里是CGCS2000 114E,于是将导入的shp文件定义投影为CGCS2000 114E,之后再使用工具箱中的投影,将该shp文件的投影修改为wgs 84(因为cesium的默认坐标系使它,如果你不想自己之后的json文件出现一些奇奇怪怪的问题,转它就对了)。
转换完成后,此时记得查看你的arcmap的右下角,看看数字是多大,如果还是很大的数字(上万的那种),说明你只是定义了坐标系但是没有正确转换,此时如果你用这个数据进行后续的操作,你的cesium的结果应该是这样的。
如果正确转换(很明显的是地理经纬度),那么此时记得查看你的shp的属性,看看有没有这个ZM,如果有的话,就需要先将三维的矢量数据转换成二维的,再进行下一步的操作。
三维转二维方法:1、打开arcmap菜单栏地理处理->环境->将M值和Z值都调整为Disabled,保存。2、打开工具栏,选择要素转为shapefile,不要像上文一样使用数据导出。
导出后发现ZM不见了就说明已经转换成功。
此时打开Qgis软件,将刚刚处理完成的shp文件加载进去,按照图片方法选择,之后选择格式为Geojson,直接进行导出即可。
导出数据后,记得删除掉geojson中的name和crs属性,然后将geojson的后缀名直接改为json,就可以在cesium的代码中调用了。
好了,到此第一部分完成,下面开始第二部分。
2、对osgb文件进行处理:
打开你下载好的cesiumlab(下载地址:Cesium实验室官网),首页的下载点击即可,下载后完成安装。之后打开cesiumlab,注册一个账号,就会进入到该页面。
点击上图中红色框(倾斜模型切片),选择你的文件,设置参数,注意将存储类型改为散列。然后点击开始转换,接下来就静静等待转换即可。
转换成功之后就会发现你的输出路径中存在一个tileset.json文件,这个就是你到使用cessium时url指向的文件。
完成上述两步之后,就可以使用cesium进行加载了。
附上加载的代码:文章来源:https://www.toymoban.com/news/detail-402135.html
// 这个就是你通过Qgis转换出来的geojson文件
function load_shp3d() {
var tileset = viewer.dataSources.add(Cesium.GeoJsonDataSource.load('xxx.json', {
fill: Cesium.Color.PINK.withAlpha(0.5),
clampToGround: true // 叠加就用它
}))
viewer.zoomTo(tileset); // 定位到你的数据
viewer.homeButton.viewModel.command.beforeExecute.addEventListener(function (e) {
e.cancel = true;
viewer.zoomTo(tileset); // 重写homebutton
})
}
// 这个是你通过cessiumlab转化的osgb文件
function load_tileset() {
var tileset = new Cesium.Cesium3DTileset({ url: 'xxx.json' })
viewer.scene.primitives.add(tileset);
viewer.zoomTo(tileset); // 在初始化时定位至模型位置
viewer.homeButton.viewModel.command.beforeExecute.addEventListener(function (e) {
e.cancel = true;
viewer.zoomTo(tileset);
});
}
最后,为了防止Qgis下载速度慢,将我的Qgis安装包分享给大家:链接:https://pan.baidu.com/s/1giG5jQxlcVZN1b8GiMWaUg?pwd=bsds
提取码:bsds文章来源地址https://www.toymoban.com/news/detail-402135.html
到了这里,关于cesium加载3dtile并将geojson进行叠加(保姆级教程)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!