本文主要介绍cesium加载Geojson和3dtile格式的建筑物模型文件,除此之外还介绍了Cesium工具栏的屏蔽方法、天地图的加载、地球初始状态设置等几个部分的内容,其中又不乏参照、优化诸如: 想成为大神的前端王菜鸟、 loves小鱼儿、 Alice爱俪丝等大神作品的内容,在此表示感谢,他们的文章地址分别如下:
https://blog.youkuaiyun.com/wwqqqq123/article/details/90400366
https://blog.youkuaiyun.com/xiaoyuer666999/article/details/75370428
https://blog.youkuaiyun.com/qq_18144905/article/details/81979807
文章内容都是我在学习和项目中实际遇到的需求,希望对大家也有所助益。
1.关于数据的获取和处理
建筑物模型数据很多地方都号称有,不过获取可能要花点周折。本着开放学习交流的初心,文章会附带我做试验的原始及成果数据,希望对大家有用。
(1)shp数据转换为Geojson数据
虽然有很多工具,但Geojson数据和json数据还是有差别的,大家首先会想到ArcGIS,但我并没有用它达到理想的效果,最终采用的是QGIS实现shp数据转Geojson数据的,操作很简单,仅为加载,图层右键输出Geojson格式数据这样简单的操作。
(2)3dtile数据的生成
网上会宣称shp转换为3dtiles数据的处理工具,但同样要想使用这些工具,也要花费周折,我因刚接触Cesium不久,但终会在不久后会做出这样的工具,并将代码开放出了,敬请博文公告。这里就会在数据包中连同数据处理工具。
2.加载Geojson建筑物模型数据并渲染
var viewer = new Cesium.Viewer('cesiumContainer');
//添加geojson格式地理数据(由shp格式文件转换得来)
Cesium.Math.setRandomNumberSeed(0);
var promise =Cesium.GeoJsonDataSource.load('ShangHai3Dtiles.geojson');
promise.then(function (dataSource) {
viewer.dataSources.add(dataSource);
var entities =dataSource.entities.values;
for (var i = 0; i < entities.length;i++) {
var entity = entities[i];
var builingHeight = entity.properties.Floor;
if(b

最低0.47元/天 解锁文章
5126





