在Cesium中通过geojson和3d tiles分别加载楼宇白膜

article/2025/6/24 15:47:30

一、geojson渲染楼宇白膜(不推荐)

如果你没有3dtiles文件来加载白膜,只有geojson加载白膜可以通过GeoJsonDataSource来加载白膜,json格式如下。

实现代码如下

<template><div id="cesium_container"></div>
</template><script setup>
import * as Cesium from 'cesium'
import {Ion,Viewer } from 'cesium'
import 'cesium/Build/Cesium/Widgets/widgets.css'
import buildList from '../../assets/json/xintai.json'
let viewer = null
let build3Dtileset = nullonMounted(()=>{initMap()
})
const initMap = async ()=>{Ion.defaultAccessToken = '你注册的cesium的token'viewer = new Viewer('cesium_container',{})initBuild(buildList)
}
const initBuild = (list) =>{let data = []list.features.forEach(item=>{let obj = {"type":"Feature","geometry":{"type":"Polygon","coordinates":item.geometry.coordinates[0]},"properties":item.properties}data.push(obj)})let geoJson = {"type": "FeatureCollection","features": data}Cesium.GeoJsonDataSource.load(geoJson).then(dataSource => {viewer.dataSources.add(dataSource);console.log(dataSource, '==================================');dataSource.entities.values.forEach(function (entity) {entity.polygon.extrudedHeight = 100;  // 设置多边形高度entity.polygon.outline = false;  // 关闭边框entity.polygon.material =new Cesium.Color(83 / 255, 140 / 255, 245 / 255, 1);});viewer.zoomTo(dataSource); // 让视角适应数据});}</script><style lang="less" scoped>
#cesium_container{width: 100%;height: 100%;
}
</style>

 实现效果

可以看到以上的方法实现了在cesium中绘制白膜;但是在cesium中不推荐这种方式,这种加载少量的白膜可以实现效果,但是数据量大起来后,会导致卡顿,性能上会出大问题,所以不推荐这种加载方式,在cesium中推荐Cesium3DTileset来加载3d tiles文件来渲染白膜,也就是方法二。

二、Cesium3DTileset渲染楼宇白膜(推荐)

cesium文档:

http://cesium.xin/cesium/cn/Documentation1.62/Cesium3DTileset.html?classFilter=Cesium3DTileset

Cesium3DTileset可以渲染大量的3d模型,并且对性能上有一定的优化

3dtiles文件目录结构如下

Cesium3DTileset用法也非常简单,只需要一个url去引入3dtiles主入口文件tileset.json即可。

具体代码如下

<template><div id="cesium_container"></div>
</template><script setup>
import * as Cesium from 'cesium'
import {Ion,Viewer } from 'cesium'
import 'cesium/Build/Cesium/Widgets/widgets.css'let viewer = null
let build3Dtileset = nullonMounted(()=>{initMap()
})
const initMap = async ()=>{Ion.defaultAccessToken = 'cesium的token'viewer = new Viewer('cesium_container',{})init3DBuild()
}
const init3DBuild = async () =>{const url = '/tiles2/tileset.json';const tilesetUrl = await Cesium.Cesium3DTileset.fromUrl(url);console.log(tilesetUrl, 'tilesetUrl');build3Dtileset = viewer.scene.primitives.add(tilesetUrl);build3Dtileset.style = new Cesium.Cesium3DTileStyle({color: {conditions: [['true', "color('rgb(51, 153, 255)',1)"]]},});viewer.flyTo(build3Dtileset);
}</script><style lang="less" scoped>
#cesium_container{width: 100%;height: 100%;
}
</style>

实现效果如下

Cesium3DTileset渲染的大规模白膜,页面也不是很卡顿,性能要比方法一好很多。


http://www.hkcw.cn/article/RPLjDZaOEs.shtml

相关文章

CRISPR-Cas系统的小型化研究进展-文献精读137

Progress in the miniaturization of CRISPR-Cas systems CRISPR-Cas系统的小型化研究进展 摘要 CRISPR-Cas基因编辑技术由于其简便性和高效性&#xff0c;已被广泛应用于生物学、医学、农学等领域的基础与应用研究。目前广泛使用的Cas核酸酶均具有较大的分子量&#xff08;通…

【Web API系列】WebTransportSendStream接口深度解析:构建高性能实时数据传输的基石

前言 随着Web应用复杂度的不断提升&#xff0c;传统的HTTP协议在某些场景下&#xff08;如实时游戏、视频流传输&#xff09;逐渐暴露出性能瓶颈。为解决这一问题&#xff0c;W3C提出了WebTransport API&#xff0c;旨在通过基于QUIC协议的低延迟、多路复用传输机制优化实时通…

MySQL中COUNT(*)、COUNT(1)和COUNT(字段名)的深度剖析与实战应用

MySQL中COUNT语句 三种COUNT函数的解析COUNT(*)COUNT(1)COUNT(字段名) 详细性能比较与实测分析性能差异的理论基础实际性能测试案例 实际案例解析案例1&#xff1a;电商平台订单统计案例2&#xff1a;带条件的计数比较案例3&#xff1a;性能优化实例 COUNT函数与索引的关系详解…

VS Code / Cursor 将默认终端设置为 CMD 完整指南

文章目录 &#x1f9ed; 适用范围&#x1f4cc; 背景与问题分析&#x1f6e0; 配置步骤1. 打开设置&#xff08;settings.json&#xff09;2. 添加或更新配置3. 重启终端与编辑器 &#x1f4a1; 补充&#xff1a;支持多个终端配置&#x1f9ef; 常见问题排查✅ 总结 在 Windows…

数据库高可用架构设计:集群、负载均衡与故障转移实践

关键词:数据库高可用,HA架构,数据库集群,负载均衡,故障转移,SQL Server Always On,MySQL InnoDB Cluster,高可用性组,读写分离,灾难恢复 在当今瞬息万变的数字化时代,数据的价值日益凸显,数据库作为承载核心业务数据的基石,其可用性直接决定了业务的连续性与用户…

【C#】一个简单的http服务器项目开发过程详解

这跟安装NoteJs程序运行脚本文件搭建一个简单Http服务器一样&#xff0c;相比起来&#xff0c;它的优点是可以开发的应用是免安装&#xff0c;跨平台的&#xff0c;放在移动盘上便捷的&#xff0c;这里着重讲http服务器实现的过程&#xff0c;以便自主实现特定的功能和服务。 …

谷歌:贝叶斯框架优化LLM推理反思

&#x1f4d6;标题&#xff1a;Beyond Markovian: Reflective Exploration via Bayes-Adaptive RL for LLM Reasoning &#x1f310;来源&#xff1a;arXiv, 2505.20561 &#x1f31f;摘要 通过强化学习 (RL) 训练的大型语言模型 (LLM) 表现出强大的推理能力和紧急反射行为&a…

C# 文件 I/O 操作详解:从基础到高级应用

在软件开发中&#xff0c;文件操作&#xff08;I/O&#xff09;是一项基本且重要的功能。无论是读取配置文件、存储用户数据&#xff0c;还是处理日志文件&#xff0c;C# 都提供了丰富的 API 来高效地进行文件读写操作。本文将全面介绍 C# 中的文件 I/O 操作&#xff0c;涵盖基…

PCB设计教程【强化篇】——USB拓展坞原理图设计

前言 本教程基于B站Expert电子实验室的PCB设计教学的整理&#xff0c;为个人学习记录&#xff0c;旨在帮助PCB设计新手入门。所有内容仅作学习交流使用&#xff0c;无任何商业目的。若涉及侵权&#xff0c;请随时联系&#xff0c;将会立即处理 目录 前言 一、新建工程与元件…

开源版 PyMOL 如何绘制 Galidesivir 分子结构 ?

参阅&#xff1a;开源版PyMol安装保姆级教程 百度网盘下载 提取码&#xff1a;csub pip show pymol 简介: PyMOL是一个Python增强的分子图形工具。它擅长蛋白质、小分子、密度、表面和轨迹的3D可视化。它还包括分子编辑、射线追踪和动画。 先从 www.python.org 下载 python-…

Leetcode 2819. 购买巧克力后的最小相对损失

1.题目基本信息 1.1.题目描述 现给定一个整数数组 prices&#xff0c;表示巧克力的价格&#xff1b;以及一个二维整数数组 queries&#xff0c;其中 queries[i] [ki, mi]。 Alice 和 Bob 去买巧克力&#xff0c;Alice 提出了一种付款方式&#xff0c;而 Bob 同意了。 对于…

Torch Geometric环境下无线通信网络拓扑推理节点数据缺失实验

节点数据缺失样本生成&#xff1a; gcn_dataset_incomplete.py #作者&#xff1a;zhouzhichao #创建时间&#xff1a;2025/5/30 #内容&#xff1a;生成残缺数据集用于实验import h5py import numpy as np import torch from torch_geometric.data import InMemoryDataset, Da…

【网络与信息安全】实验三 RSA加解密与签名验证

实验三、RSA加解密与签名验证 一、实验基本信息 实验名称&#xff1a;RSA加解密与签名验证实验目的&#xff1a; 理解 RSA 加密解密 与 数字签名验证 的原理。借助 CyberChef 可视化平台&#xff0c;观察和理解加密与签名背后的数据变化。 二、实验环境 操作系统&#xff1a…

HackMyVM-Ephemeral3

信息搜集 主机发现 ┌──(root㉿kali)-[~] └─# arp-scan -l Interface: eth0, type: EN10MB, MAC: 00:0c:29:39:60:4c, IPv4: 192.168.43.126 Starting arp-scan 1.10.0 with 256 hosts (https://github.com/royhills/arp-scan) 192.168.43.1 c6:45:66:05:91:88 …

131. 分割回文串-两种回溯思路

我们可以将字符串分割成若干回文子串&#xff0c;返回所有可能的方案。如果将问题分解&#xff0c;可以表示为分割长度为n-1的子字符串&#xff0c;这与原问题性质相同&#xff0c;因此可以采用递归方法解决。 为什么回溯与递归存在联系&#xff1f;在解决这个问题时&#xff0…

Another Redis Desktop Manager 1.3.7 安装教程 - 详细步骤图解 (Windows)

在安装前需要下载安装包&#xff1a;https://pan.quark.cn/s/2dd4432cefaa 下载安装包 先找到那个叫 Another-Redis-Desktop-Manager.1.3.7.exe 的文件&#xff0c;双击它运行 安装向导 接着会出来安装界面&#xff0c;直接点“下一步”&#xff08;Next&#xff09;继续。 …

ShenNiusModularity项目源码学习(32:ShenNius.Admin.Mvc项目分析-17)

栏目管理页面用于新建、维护及删除系统CMS管理模块的栏目信息&#xff0c;栏目信息用于分类管理文章&#xff0c;其后台控制器类ColumnController位于ShenNius.Admin.Mvc项目的Areas\Cms\Controllers内&#xff0c;页面文件位于同项目的Areas\Cms\Views\Column内&#xff0c;其…

Python(十四)

1.type函数和init_subclass_ init_subclass_ 2.元类 类就是用来创建对象的模版&#xff0c;类是由type创造而来的&#xff0c;元类就是创建类的模版&#xff0c;type可以用来创造类&#xff0c;因为type本身就是一个元类&#xff0c;使用元类来创造类&#xff0c;元类之间也有…

Unity3D仿星露谷物语开发58之保存时钟信息到文件

1、目标 保存当前的时钟信息到文件中。 2、修改TimeManager对象 TimeManager对象添加组件&#xff1a;Generate GUID 3、修改SceneSave.cs脚本 添加1行代码&#xff1a; 4、修改TimeManager.cs脚本 添加&#xff1a; using System; 修改TimeManager类&#xff1a; 添加属…

蓝桥杯java2022年十三届国赛大学A组答案整理

小蓝与钥匙 问题描述 小蓝是幼儿园的老师, 他的班上有 28 个孩子, 今天他和孩子们一起进行了 一个游戏。 小蓝所在的学校是寄宿制学校, 28 个孩子分别有一个自己的房间, 每个房 间对应一把钥匙, 每把钥匙只能打开自己的门。现在小蓝让这 28 个孩子分别将 自己宿舍的钥匙上交…